Compare commits

...

64 Commits
v7.8 ... v7.16

Author SHA1 Message Date
Alistair Leslie-Hughes
aa2eb6eed6 Release v7.16 2022-08-29 13:47:16 +10:00
Alistair Leslie-Hughes
4ae0f97bc7 Rebase against a4930f003f45ab82c4c05746cbd29cbd4af09735. 2022-08-29 10:59:27 +10:00
Alistair Leslie-Hughes
b31a964e1e Rebase against 4e55dfb7c5e26d45794406a4ce8e50a6bc725b74. 2022-08-25 15:32:33 +10:00
Alistair Leslie-Hughes
fa8d0abc9d Updated winepulse-aux_channels patchset
Add a reference to proton report which this patch would help.
2022-08-18 20:07:09 +10:00
Alistair Leslie-Hughes
2c5c068424 Rebase against 4a3c7e2758ac10b7947e859015f2a755d25fd7fe. 2022-08-18 08:18:00 +10:00
Alistair Leslie-Hughes
e893644049 Rebase against 4608e1e1257a377cd554a0e885368e3feb7d286f. 2022-08-17 08:24:50 +10:00
Alistair Leslie-Hughes
afbc5756c9 Rebase against b4a5556da983c7ebc8a25b228100c08947024c59. 2022-08-16 10:15:01 +10:00
Alistair Leslie-Hughes
552b03f70a Release v7.15 2022-08-14 14:16:57 +10:00
Alistair Leslie-Hughes
1f218b6822 Added wined3d-adapter_create_output Patchset 2022-08-14 13:51:20 +10:00
Alistair Leslie-Hughes
d9e4a75d19 Added dsdmo-fx-support patchset 2022-08-13 15:59:13 +10:00
Alistair Leslie-Hughes
0106909ec5 Added ntdll-wine-frames patchset 2022-08-12 13:34:16 +10:00
Alistair Leslie-Hughes
ec592e937b Rebase against 8e27f6c2ef327d6d643e29a271245e76aa6f4792. 2022-08-11 08:24:04 +10:00
Alistair Leslie-Hughes
4bc5bffe2f Rebase against 7b51216198237c04a8994cda1bdb45fdb4482b32. 2022-08-09 07:58:38 +10:00
Alistair Leslie-Hughes
f2648a9a40 Rebase against e43288348de170fef5dfd122675ba367dd7ea0ec. 2022-08-05 10:35:39 +10:00
Alistair Leslie-Hughes
1d21e2b6f5 Release v7.14 2022-07-30 20:21:15 +10:00
Alistair Leslie-Hughes
fcaab59ec5 Added winspool.drv-ClosePrinter patchset 2022-07-30 18:10:37 +10:00
Alistair Leslie-Hughes
8708356647 Rebase against d909f2759066afd128aa1a299d3367c7ab76da8f. 2022-07-29 08:38:12 +10:00
Alistair Leslie-Hughes
d3ed71430a Rebase against 1381ced8ecbfaa57aa378ab32e94d5aa51873160. 2022-07-28 16:20:21 +10:00
Alistair Leslie-Hughes
fb2b3b3c69 Rebase against 889fe64d9f2e1a0d9a3660bbb94e0a9b74155827. 2022-07-26 09:14:17 +10:00
Alistair Leslie-Hughes
9fd1bb66d3 Rebase against 7b77b4e3b4ea732ed592ac15f000875f5d1f1daa. 2022-07-23 09:53:09 +10:00
Alistair Leslie-Hughes
86091d3b1f Updated xactengine3_7-callbacks patchset
Tested with
- Lost Chronicles of Zerzura.
- Monkey Island 2.
- Gridrunner   (Might still crashes in some scenario)
- Neptunia Rebirth1
2022-07-22 14:24:42 +10:00
Alistair Leslie-Hughes
ab31919ee5 Rebase against 97f10736db6fc9c58ed181b3f23534513d6f9e13. 2022-07-22 09:22:53 +10:00
Alistair Leslie-Hughes
6638f9ee79 Rebase against 236476417ac6777951d1cfc26c0393bff2a64c23. 2022-07-21 14:22:07 +10:00
Alistair Leslie-Hughes
92ce758ac8 Updated xactengine3_7-Notification patchset
Updated to reflect upstream changse and re-enable.
2022-07-20 11:03:38 +10:00
Alistair Leslie-Hughes
0de9d1028b Rebase against e0d8bd3f5a7b4c8722d3632a9954f1647851f3d3. 2022-07-20 10:33:28 +10:00
Alistair Leslie-Hughes
7a2920aa2a Rebase against 1113f42aa748d9e0a27c4663b9d8de1237f95e73. 2022-07-19 13:15:49 +10:00
Alistair Leslie-Hughes
cd8ca4d7d6 Release v7.13 2022-07-16 17:25:55 +10:00
Alistair Leslie-Hughes
7cecf22dcc Rebase against a0febe909780189fa2441635484cb592b9ab64b5. 2022-07-15 13:40:05 +10:00
Alistair Leslie-Hughes
eb479ea60c Rebase against 7ff508838ec6631b9def78ae391ff266fcc0d80e. 2022-07-14 09:12:35 +10:00
Alistair Leslie-Hughes
a500c9ce42 Rebase against b9a61cde89e5dc6264b4c152f4dc24ecf064f8f6. 2022-07-13 11:00:29 +10:00
Alistair Leslie-Hughes
35d13b744e Rebase against 6e32c011a2b977246f9ab2282d30b69cff90142b. 2022-07-12 08:32:33 +10:00
Alistair Leslie-Hughes
f7d87c5bfb Rebase against 7b79e3a87b1e1a9478e92d6ea3b5973da4388a82. 2022-07-09 07:24:57 +10:00
Alistair Leslie-Hughes
0acaed0ae5 Rebase against 9af3a79b96318471818e0abacfc1a6f8ecc91463. 2022-07-07 10:03:41 +10:00
Alistair Leslie-Hughes
8699d2c2f6 Release v7.12 2022-07-02 14:31:17 +10:00
Alistair Leslie-Hughes
e7622edfc9 Rebase against 67f9c76386c8f67363f1fa90d7f7ac0ac84fdcd7. 2022-07-01 15:50:23 +10:00
Alistair Leslie-Hughes
c9652a68e1 Rebase against 29dd84443976005a8ec713dd1c75458e27346591. 2022-06-29 11:14:16 +10:00
Alistair Leslie-Hughes
6be691c005 Rebase against af8ed02b572081206be6c505261f5f2e98a8053c. 2022-06-25 21:09:49 +10:00
Alistair Leslie-Hughes
850b7f6540 Added winepulse-aux_channels patchset 2022-06-22 20:55:52 +10:00
Alistair Leslie-Hughes
776c47da46 Updated winepulse-PulseAudio_Support patchset 2022-06-21 08:49:58 +10:00
Alistair Leslie-Hughes
a51c679f34 Merge pull request #83 from Gcenx/action-update-deps
macOS.yml: Cleanup workflows
2022-06-20 10:40:29 +10:00
Gcenx
366a9020dc macOS.yml: Cleanup workflows
- Use brews mingw-w64 formula again
- Cleanup notes
- Remove unneeded formulas from wine-devel
2022-06-19 18:51:01 -04:00
Alistair Leslie-Hughes
a8e56928ef Release v7.11 2022-06-18 10:48:28 +10:00
Alistair Leslie-Hughes
f0e38f512c Fix Rebase 2022-06-16 10:08:01 +10:00
Alistair Leslie-Hughes
3d9f724967 Rebase against 712c547e0869b0caf797694137e36bacea614aa6. 2022-06-16 09:05:11 +10:00
Alistair Leslie-Hughes
4e4376778f Fix Rebase 2022-06-14 17:22:11 +10:00
Alistair Leslie-Hughes
94e31f7578 Rebase against f86a66b660267bf245817350a6012e0c5c6547df. 2022-06-14 14:43:45 +10:00
Alistair Leslie-Hughes
560db77d41 Rebase against 35939bbe0c04534da07ece7f6a47a560d356f7a1. 2022-06-11 12:19:21 +10:00
Zebediah Figura
2d5e6b24dc Rebase against 561a5b8f84db68e608df022a8dbd71803f506946. 2022-06-09 18:45:26 -05:00
Alistair Leslie-Hughes
37c1363814 Rebase against d95780ba39816e3eb1139366236f3835564beadd. 2022-06-08 08:02:38 +10:00
Alistair Leslie-Hughes
94f00cd958 Release v7.10 2022-06-04 12:38:07 +10:00
Alistair Leslie-Hughes
b22c061c3f Updated dwmapi-DwmGetCompositionTimingInfo patchset 2022-06-04 09:11:00 +10:00
Alistair Leslie-Hughes
0e42f8ce9a Rebase against 631f4d5e42b7c2f705eb4b40eeea0ce1866bf513. 2022-06-04 08:34:41 +10:00
Alistair Leslie-Hughes
f2c44a8a4d Added dwmapi-DwmGetCompositionTimingInfo patchset 2022-06-03 10:25:28 +10:00
Alistair Leslie-Hughes
8f0f175429 Rebase against 7a8254fd05a2c7c89783d65cba544f2899611c73. 2022-06-03 10:05:32 +10:00
Alistair Leslie-Hughes
3fe7d402eb Rebase against c1e793f1119de0c0ef7d4bd6d9fefbafdb5dbbe5. 2022-06-02 10:42:41 +10:00
Zebediah Figura
7fc2d64fee Rebase against 9d72487f2102bd6eb245e199e73304c67bb5d41a. 2022-05-31 17:20:45 -05:00
Zebediah Figura
c6119e3d5c Rebase against 4312d209232c701b0b78d9f8b463917c989005c5.
libs-Unicode_Collation is not fully replaced upstream, but the remaining patch (0006) holds no value anymore.
2022-05-30 18:26:39 -05:00
Alistair Leslie-Hughes
8ee2551c93 Rebase against 99ce6e87a3b22c5602d7bbedd43bb40627b63321. 2022-05-26 15:30:47 +10:00
Alistair Leslie-Hughes
f0d1a4a5ba Rebase against 303f8042f9db508adaca02ef21f8de4992cb9c03. 2022-05-25 13:37:54 +10:00
Alistair Leslie-Hughes
2a411514e5 Release v7.9 2022-05-21 16:20:50 +10:00
Alistair Leslie-Hughes
6ea30a2e5b Rebase against 230e953e31f7228d10c8b0a0d2e8cf4f9af9a231. 2022-05-21 16:19:49 +10:00
Alistair Leslie-Hughes
e31ff0a923 Rebase against 56d9ed83c14cd7d92076fc518d1a601fa3119b6b. 2022-05-17 08:29:30 +10:00
Zebediah Figura
e534d6546a eventfd_synchronization: Backport some fixes that didn' make it into wine-staging. 2022-05-13 21:13:29 -05:00
Zebediah Figura
ea360c871f Rebase against b35faeb5035a8ed1480577a34603170fc0e2f901. 2022-05-12 18:28:09 -05:00
76 changed files with 1036 additions and 3686 deletions

View File

@@ -19,7 +19,7 @@ jobs:
brew install bison \
gphoto2 \
gst-plugins-base \
gcenx/wine/mingw-w64@9 \
mingw-w64 \
molten-vk \
sdl2
@@ -28,7 +28,6 @@ jobs:
set -eu
echo "$(brew --prefix bison)/bin" >> $GITHUB_PATH
echo "$(brew --prefix krb5)/bin" >> $GITHUB_PATH
echo "$(brew --prefix mingw-w64@9)/bin" >> $GITHUB_PATH
- name: Get upstream-commit
run: |
@@ -62,8 +61,6 @@ jobs:
--x-lib=/opt/X11/lib
- name: Build wine64
# mingw-w64 brew formula bumped binutils 2.38 causing a regression in parallel builds
# use gcenx/wine/mingw-w64@9 this uses binutils 2.37
run: |
cd $GITHUB_WORKSPACE/wine
make -j$(sysctl -n hw.ncpu 2>/dev/null)
@@ -79,12 +76,9 @@ jobs:
brew update
brew install --cask xquartz
brew install bison \
faudio \
gphoto2 \
gst-plugins-base \
jxrlib \
little-cms2 \
gcenx/wine/mingw-w64@9 \
mingw-w64 \
molten-vk \
mpg123
@@ -93,7 +87,6 @@ jobs:
set -eu
echo "$(brew --prefix bison)/bin" >> $GITHUB_PATH
echo "$(brew --prefix krb5)/bin" >> $GITHUB_PATH
echo "$(brew --prefix mingw-w64@9)/bin" >> $GITHUB_PATH
- name: Get upstream-commit
run: |
@@ -125,8 +118,6 @@ jobs:
--x-lib=/opt/X11/lib
- name: Build wine64
# mingw-w64 brew formula bumped binutils 2.38 causing a regression in parallel builds
# use gcenx/wine/mingw-w64@9 this uses binutils 2.37
run: |
cd $GITHUB_WORKSPACE/wine
make -j$(sysctl -n hw.ncpu 2>/dev/null)

View File

@@ -1,4 +1,4 @@
From a0211ba2069af11a64588a49222dcdcce1d805be Mon Sep 17 00:00:00 2001
From 92914d4648be5dd7ee62b35d3ca2fc7376d0dbd0 Mon Sep 17 00:00:00 2001
From: Sebastian Lackner <sebastian@fds-team.de>
Date: Tue, 22 Mar 2016 21:54:26 +0100
Subject: [PATCH] d2d1: Avoid implicit cast of interface pointer.
@@ -13,10 +13,10 @@ Subject: [PATCH] d2d1: Avoid implicit cast of interface pointer.
6 files changed, 12 insertions(+), 12 deletions(-)
diff --git a/dlls/d2d1/bitmap.c b/dlls/d2d1/bitmap.c
index bc958e50a1..76ecc7f02a 100644
index 971e3c7ff6b..fcd96eb6374 100644
--- a/dlls/d2d1/bitmap.c
+++ b/dlls/d2d1/bitmap.c
@@ -617,5 +617,5 @@ struct d2d_bitmap *unsafe_impl_from_ID2D1Bitmap(ID2D1Bitmap *iface)
@@ -646,5 +646,5 @@ struct d2d_bitmap *unsafe_impl_from_ID2D1Bitmap(ID2D1Bitmap *iface)
if (!iface)
return NULL;
assert(iface->lpVtbl == (ID2D1BitmapVtbl *)&d2d_bitmap_vtbl);
@@ -24,10 +24,10 @@ index bc958e50a1..76ecc7f02a 100644
+ return CONTAINING_RECORD((ID2D1Bitmap1*)iface, struct d2d_bitmap, ID2D1Bitmap1_iface);
}
diff --git a/dlls/d2d1/brush.c b/dlls/d2d1/brush.c
index 80fc0f5331..a612e683b6 100644
index b9a673fe54c..c5a52db6b01 100644
--- a/dlls/d2d1/brush.c
+++ b/dlls/d2d1/brush.c
@@ -253,7 +253,7 @@ static void d2d_brush_init(struct d2d_brush *brush, ID2D1Factory *factory,
@@ -259,7 +259,7 @@ static void d2d_brush_init(struct d2d_brush *brush, ID2D1Factory *factory,
static inline struct d2d_brush *impl_from_ID2D1SolidColorBrush(ID2D1SolidColorBrush *iface)
{
@@ -36,7 +36,7 @@ index 80fc0f5331..a612e683b6 100644
}
static HRESULT STDMETHODCALLTYPE d2d_solid_color_brush_QueryInterface(ID2D1SolidColorBrush *iface,
@@ -396,7 +396,7 @@ HRESULT d2d_solid_color_brush_create(ID2D1Factory *factory, const D2D1_COLOR_F *
@@ -402,7 +402,7 @@ HRESULT d2d_solid_color_brush_create(ID2D1Factory *factory, const D2D1_COLOR_F *
static inline struct d2d_brush *impl_from_ID2D1LinearGradientBrush(ID2D1LinearGradientBrush *iface)
{
@@ -45,7 +45,7 @@ index 80fc0f5331..a612e683b6 100644
}
static HRESULT STDMETHODCALLTYPE d2d_linear_gradient_brush_QueryInterface(ID2D1LinearGradientBrush *iface,
@@ -583,7 +583,7 @@ HRESULT d2d_linear_gradient_brush_create(ID2D1Factory *factory,
@@ -589,7 +589,7 @@ HRESULT d2d_linear_gradient_brush_create(ID2D1Factory *factory,
static inline struct d2d_brush *impl_from_ID2D1RadialGradientBrush(ID2D1RadialGradientBrush *iface)
{
@@ -54,7 +54,7 @@ index 80fc0f5331..a612e683b6 100644
}
static HRESULT STDMETHODCALLTYPE d2d_radial_gradient_brush_QueryInterface(ID2D1RadialGradientBrush *iface,
@@ -815,7 +815,7 @@ HRESULT d2d_radial_gradient_brush_create(ID2D1Factory *factory,
@@ -821,7 +821,7 @@ HRESULT d2d_radial_gradient_brush_create(ID2D1Factory *factory,
static inline struct d2d_brush *impl_from_ID2D1BitmapBrush1(ID2D1BitmapBrush1 *iface)
{
@@ -64,7 +64,7 @@ index 80fc0f5331..a612e683b6 100644
static HRESULT STDMETHODCALLTYPE d2d_bitmap_brush_QueryInterface(ID2D1BitmapBrush1 *iface,
diff --git a/dlls/d2d1/dc_render_target.c b/dlls/d2d1/dc_render_target.c
index 47aa99697d..0efa3ebeaf 100644
index e7e0fa57ed7..1166ae204c2 100644
--- a/dlls/d2d1/dc_render_target.c
+++ b/dlls/d2d1/dc_render_target.c
@@ -23,7 +23,7 @@ WINE_DEFAULT_DEBUG_CHANNEL(d2d);
@@ -77,19 +77,19 @@ index 47aa99697d..0efa3ebeaf 100644
static HRESULT d2d_dc_render_target_present(IUnknown *outer_unknown)
diff --git a/dlls/d2d1/geometry.c b/dlls/d2d1/geometry.c
index 79850f1c20..b9b6a32f76 100644
index e97bae0b54a..661387b570b 100644
--- a/dlls/d2d1/geometry.c
+++ b/dlls/d2d1/geometry.c
@@ -2982,7 +2982,7 @@ static const struct ID2D1GeometrySinkVtbl d2d_geometry_sink_vtbl =
@@ -3356,7 +3356,7 @@ static const struct ID2D1GeometrySinkVtbl d2d_geometry_sink_vtbl =
static inline struct d2d_geometry *impl_from_ID2D1PathGeometry(ID2D1PathGeometry *iface)
static inline struct d2d_geometry *impl_from_ID2D1PathGeometry1(ID2D1PathGeometry1 *iface)
{
- return CONTAINING_RECORD(iface, struct d2d_geometry, ID2D1Geometry_iface);
+ return CONTAINING_RECORD((ID2D1Geometry *)iface, struct d2d_geometry, ID2D1Geometry_iface);
}
static HRESULT STDMETHODCALLTYPE d2d_path_geometry_QueryInterface(ID2D1PathGeometry *iface, REFIID iid, void **out)
@@ -3502,7 +3502,7 @@ void d2d_path_geometry_init(struct d2d_geometry *geometry, ID2D1Factory2 *factor
static HRESULT STDMETHODCALLTYPE d2d_path_geometry_QueryInterface(ID2D1PathGeometry1 *iface, REFIID iid, void **out)
@@ -4229,7 +4229,7 @@ fail:
static inline struct d2d_geometry *impl_from_ID2D1RectangleGeometry(ID2D1RectangleGeometry *iface)
{
@@ -98,7 +98,7 @@ index 79850f1c20..b9b6a32f76 100644
}
static HRESULT STDMETHODCALLTYPE d2d_rectangle_geometry_QueryInterface(ID2D1RectangleGeometry *iface,
@@ -3841,7 +3841,7 @@ fail:
@@ -4941,7 +4941,7 @@ fail:
static inline struct d2d_geometry *impl_from_ID2D1TransformedGeometry(ID2D1TransformedGeometry *iface)
{
@@ -107,7 +107,7 @@ index 79850f1c20..b9b6a32f76 100644
}
static HRESULT STDMETHODCALLTYPE d2d_transformed_geometry_QueryInterface(ID2D1TransformedGeometry *iface,
@@ -4122,7 +4122,7 @@ void d2d_transformed_geometry_init(struct d2d_geometry *geometry, ID2D1Factory2
@@ -5225,7 +5225,7 @@ void d2d_transformed_geometry_init(struct d2d_geometry *geometry, ID2D1Factory *
static inline struct d2d_geometry *impl_from_ID2D1GeometryGroup(ID2D1GeometryGroup *iface)
{
@@ -117,7 +117,7 @@ index 79850f1c20..b9b6a32f76 100644
static HRESULT STDMETHODCALLTYPE d2d_geometry_group_QueryInterface(ID2D1GeometryGroup *iface,
diff --git a/dlls/d2d1/hwnd_render_target.c b/dlls/d2d1/hwnd_render_target.c
index 625f101eaa..f3626c42ce 100644
index 4ce220bf433..32eeaf02c9f 100644
--- a/dlls/d2d1/hwnd_render_target.c
+++ b/dlls/d2d1/hwnd_render_target.c
@@ -23,7 +23,7 @@ WINE_DEFAULT_DEBUG_CHANNEL(d2d);
@@ -130,7 +130,7 @@ index 625f101eaa..f3626c42ce 100644
static HRESULT d2d_hwnd_render_target_present(IUnknown *outer_unknown)
diff --git a/dlls/d2d1/state_block.c b/dlls/d2d1/state_block.c
index e3175146a6..b66752983e 100644
index 114a3efd883..4f662be4549 100644
--- a/dlls/d2d1/state_block.c
+++ b/dlls/d2d1/state_block.c
@@ -187,5 +187,5 @@ struct d2d_state_block *unsafe_impl_from_ID2D1DrawingStateBlock(ID2D1DrawingStat
@@ -141,5 +141,5 @@ index e3175146a6..b66752983e 100644
+ return CONTAINING_RECORD((ID2D1DrawingStateBlock1*)iface, struct d2d_state_block, ID2D1DrawingStateBlock1_iface);
}
--
2.17.1
2.35.1

View File

@@ -1,76 +0,0 @@
From 9ea60091ba885b5f63266374f49f0d63e2cf2767 Mon Sep 17 00:00:00 2001
From: Alistair Leslie-Hughes <leslie_alistair@hotmail.com>
Date: Wed, 16 Dec 2020 11:07:05 +1100
Subject: [PATCH] d3drm: Support IDirect3D3 when creating device
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=39346
---
dlls/d3drm/device.c | 26 ++++++++++++++++++++++++--
1 file changed, 24 insertions(+), 2 deletions(-)
diff --git a/dlls/d3drm/device.c b/dlls/d3drm/device.c
index 2e1b5f2d24f..fff272197bf 100644
--- a/dlls/d3drm/device.c
+++ b/dlls/d3drm/device.c
@@ -124,7 +124,9 @@ HRESULT d3drm_device_init(struct d3drm_device *device, UINT version, IDirectDraw
IDirectDrawSurface *ds = NULL;
IDirect3DDevice *device1 = NULL;
IDirect3DDevice2 *device2 = NULL;
+ IDirect3DDevice3 *device3 = NULL;
IDirect3D2 *d3d2 = NULL;
+ IDirect3D3 *d3d3 = NULL;
DDSURFACEDESC desc, surface_desc;
HRESULT hr;
@@ -171,19 +173,29 @@ HRESULT d3drm_device_init(struct d3drm_device *device, UINT version, IDirectDraw
if (version == 1)
hr = IDirectDrawSurface_QueryInterface(surface, &IID_IDirect3DRGBDevice, (void **)&device1);
- else
+ else if (version == 2)
{
IDirectDraw_QueryInterface(ddraw, &IID_IDirect3D2, (void**)&d3d2);
hr = IDirect3D2_CreateDevice(d3d2, &IID_IDirect3DRGBDevice, surface, &device2);
IDirect3D2_Release(d3d2);
}
+ else
+ {
+ IDirectDrawSurface4 *surface4 = NULL;
+
+ IDirectDrawSurface_QueryInterface(surface, &IID_IDirectDrawSurface4, (void**)&surface4);
+ IDirectDraw_QueryInterface(ddraw, &IID_IDirect3D3, (void**)&d3d3);
+ hr = IDirect3D3_CreateDevice(d3d3, &IID_IDirect3DRGBDevice, surface4, &device3, NULL);
+ IDirectDrawSurface4_Release(surface4);
+ IDirect3D3_Release(d3d3);
+ }
if (FAILED(hr))
{
IDirectDrawSurface_DeleteAttachedSurface(surface, 0, ds);
return hr;
}
- if (version != 1)
+ if (version == 2)
{
hr = IDirect3DDevice2_QueryInterface(device2, &IID_IDirect3DDevice, (void**)&device1);
IDirect3DDevice2_Release(device2);
@@ -193,6 +205,16 @@ HRESULT d3drm_device_init(struct d3drm_device *device, UINT version, IDirectDraw
return hr;
}
}
+ else if (version == 3)
+ {
+ hr = IDirect3DDevice3_QueryInterface(device3, &IID_IDirect3DDevice, (void**)&device1);
+ IDirect3DDevice3_Release(device3);
+ if (FAILED(hr))
+ {
+ IDirectDrawSurface_DeleteAttachedSurface(surface, 0, ds);
+ return hr;
+ }
+ }
device->device = device1;
device->width = desc.dwWidth;
device->height = desc.dwHeight;
--
2.29.2

View File

@@ -1 +0,0 @@
Fixes: [39346] Support IDirect3D3 when creating device.

View File

@@ -1,7 +1,7 @@
From cfbee3f0f952769dbf663489c2a209493c7412d3 Mon Sep 17 00:00:00 2001
From 5d9d9cbdb4043848aa5ebdd8a1349d9c876650e3 Mon Sep 17 00:00:00 2001
From: Christian Costa <titan.costa@gmail.com>
Date: Sun, 11 Jan 2015 16:18:03 +0100
Subject: d3dx9_36: Add support for FOURCC surface to
Subject: [PATCH] d3dx9_36: Add support for FOURCC surface to
save_dds_surface_to_memory.
---
@@ -9,10 +9,10 @@ Subject: d3dx9_36: Add support for FOURCC surface to
1 file changed, 8 insertions(+)
diff --git a/dlls/d3dx9_36/surface.c b/dlls/d3dx9_36/surface.c
index 4fa2a76..58b676d 100644
index 26809a47e18..db334ee83f1 100644
--- a/dlls/d3dx9_36/surface.c
+++ b/dlls/d3dx9_36/surface.c
@@ -311,6 +311,14 @@ static HRESULT d3dformat_to_dds_pixel_format(struct dds_pixel_format *pixel_form
@@ -433,6 +433,14 @@ static HRESULT d3dformat_to_dds_pixel_format(struct dds_pixel_format *pixel_form
}
}
@@ -24,9 +24,9 @@ index 4fa2a76..58b676d 100644
+ return D3D_OK;
+ }
+
WARN("Unknown pixel format %#x\n", d3dformat);
WARN("Unknown pixel format %#x.\n", d3dformat);
return E_NOTIMPL;
}
--
2.6.4
2.35.1

View File

@@ -1,116 +0,0 @@
From 861cd6c6409efce4eb03aad3bc01f5df772e77fb Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Michael=20M=C3=BCller?= <michael@fds-team.de>
Date: Sat, 6 Feb 2016 01:15:07 +0100
Subject: [PATCH] ddraw: Don't set HWTRANSFORMANDLIGHT flag on d3d7 RGB device.
---
dlls/ddraw/ddraw.c | 9 +++++++++
dlls/ddraw/tests/ddraw7.c | 18 ++++++++++++++++++
2 files changed, 27 insertions(+)
diff --git a/dlls/ddraw/ddraw.c b/dlls/ddraw/ddraw.c
index 705d0335d95..1d916f93c4f 100644
--- a/dlls/ddraw/ddraw.c
+++ b/dlls/ddraw/ddraw.c
@@ -49,6 +49,7 @@ static struct enum_device_entry
char interface_name[100];
char device_name[100];
const GUID *device_guid;
+ DWORD remove_caps;
} device_list7[] =
{
/* T&L HAL device */
@@ -56,6 +57,7 @@ static struct enum_device_entry
"WINE Direct3D7 Hardware Transform and Lighting acceleration using WineD3D",
"Wine D3D7 T&L HAL",
&IID_IDirect3DTnLHalDevice,
+ 0,
},
/* HAL device */
@@ -63,6 +65,7 @@ static struct enum_device_entry
"WINE Direct3D7 Hardware acceleration using WineD3D",
"Direct3D HAL",
&IID_IDirect3DHALDevice,
+ 0,
},
/* RGB device */
@@ -70,6 +73,7 @@ static struct enum_device_entry
"WINE Direct3D7 RGB Software Emulation using WineD3D",
"Wine D3D7 RGB",
&IID_IDirect3DRGBDevice,
+ D3DDEVCAPS_HWTRANSFORMANDLIGHT,
},
};
@@ -3749,6 +3753,7 @@ static HRESULT WINAPI d3d7_EnumDevices(IDirect3D7 *iface, LPD3DENUMDEVICESCALLBA
{
struct ddraw *ddraw = impl_from_IDirect3D7(iface);
D3DDEVICEDESC7 device_desc7;
+ DWORD dev_caps;
HRESULT hr;
size_t i;
@@ -3765,11 +3770,15 @@ static HRESULT WINAPI d3d7_EnumDevices(IDirect3D7 *iface, LPD3DENUMDEVICESCALLBA
return hr;
}
+ dev_caps = device_desc7.dwDevCaps;
+
for (i = 0; i < ARRAY_SIZE(device_list7); i++)
{
HRESULT ret;
device_desc7.deviceGUID = *device_list7[i].device_guid;
+ device_desc7.dwDevCaps = dev_caps & ~device_list7[i].remove_caps;
+
ret = callback(device_list7[i].interface_name, device_list7[i].device_name, &device_desc7, context);
if (ret != DDENUMRET_OK)
{
diff --git a/dlls/ddraw/tests/ddraw7.c b/dlls/ddraw/tests/ddraw7.c
index d641595baa2..54cc18b74f2 100644
--- a/dlls/ddraw/tests/ddraw7.c
+++ b/dlls/ddraw/tests/ddraw7.c
@@ -577,6 +577,19 @@ static IDirect3DDevice7 *create_device_ex(HWND window, DWORD coop_level, const G
return device;
}
+static HRESULT WINAPI enum_devtype_software_cb(char *desc_str, char *name, D3DDEVICEDESC7 *desc, void *ctx)
+{
+ BOOL *software_ok = ctx;
+ if (IsEqualGUID(&desc->deviceGUID, &IID_IDirect3DRGBDevice))
+ {
+ ok(!(desc->dwDevCaps & D3DDEVCAPS_HWTRANSFORMANDLIGHT),
+ "RGB emulation device shouldn't have HWTRANSFORMANDLIGHT flag\n");
+ *software_ok = TRUE;
+ return DDENUMRET_CANCEL;
+ }
+ return DDENUMRET_OK;
+}
+
static IDirect3DDevice7 *create_device(HWND window, DWORD coop_level)
{
const GUID *device_guid = &IID_IDirect3DHALDevice;
@@ -6719,6 +6732,7 @@ static void test_surface_lock(void)
ULONG refcount;
DDPIXELFORMAT z_fmt;
BOOL hal_ok = FALSE;
+ BOOL software_ok = FALSE;
const GUID *devtype = &IID_IDirect3DHALDevice;
D3DDEVICEDESC7 device_desc;
BOOL cubemap_supported;
@@ -6844,6 +6858,10 @@ static void test_surface_lock(void)
if (hal_ok)
devtype = &IID_IDirect3DTnLHalDevice;
+ hr = IDirect3D7_EnumDevices(d3d, enum_devtype_software_cb, &software_ok);
+ ok(SUCCEEDED(hr), "Failed to enumerate devices, hr %#x.\n", hr);
+ if (!software_ok) win_skip("RGB device not found, unable to check flags\n");
+
memset(&z_fmt, 0, sizeof(z_fmt));
hr = IDirect3D7_EnumZBufferFormats(d3d, devtype, enum_z_fmt, &z_fmt);
if (FAILED(hr) || !z_fmt.dwSize)
--
2.20.1

View File

@@ -1,18 +1,18 @@
From 4498bb259a9ab5e5bf6f8a55dc96b6ac24c82e09 Mon Sep 17 00:00:00 2001
From 9028351204472aafe5d7731c8737a6cfdb09e659 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Michael=20M=C3=BCller?= <michael@fds-team.de>
Date: Sat, 30 May 2015 02:56:19 +0200
Subject: ddraw/tests: Add more tests for IDirect3DTexture2::Load.
Subject: [PATCH] ddraw/tests: Add more tests for IDirect3DTexture2::Load.
---
dlls/ddraw/tests/d3d.c | 373 ++++++++++++++++++++++++++++++++++++++++++++++
dlls/ddraw/tests/ddraw2.c | 28 +++-
dlls/ddraw/tests/d3d.c | 373 ++++++++++++++++++++++++++++++++++++++
dlls/ddraw/tests/ddraw2.c | 28 ++-
2 files changed, 400 insertions(+), 1 deletion(-)
diff --git a/dlls/ddraw/tests/d3d.c b/dlls/ddraw/tests/d3d.c
index ec4197a..d35d0e0 100644
index 87d0648b699..e88bbf59767 100644
--- a/dlls/ddraw/tests/d3d.c
+++ b/dlls/ddraw/tests/d3d.c
@@ -1515,6 +1515,288 @@ static BOOL colortables_check_equality(PALETTEENTRY table1[256], PALETTEENTRY ta
@@ -1221,6 +1221,288 @@ static BOOL colortables_check_equality(PALETTEENTRY table1[256], PALETTEENTRY ta
return TRUE;
}
@@ -301,9 +301,9 @@ index ec4197a..d35d0e0 100644
/* test palette handling in IDirect3DTexture_Load */
static void TextureLoadTest(void)
{
@@ -1578,6 +1860,97 @@ static void TextureLoadTest(void)
@@ -1284,6 +1566,97 @@ static void TextureLoadTest(void)
hr = IDirect3DTexture_Load(Texture2, Texture);
ok(hr == DD_OK, "IDirect3DTexture_Load returned %08x\n", hr);
ok(hr == DD_OK, "Got hr %#lx.\n", hr);
+ for (i = 0; i < sizeof(load_tests) / sizeof(load_tests[0]); i++)
+ {
@@ -400,10 +400,10 @@ index ec4197a..d35d0e0 100644
table1[i].peRed = i;
table1[i].peGreen = i;
diff --git a/dlls/ddraw/tests/ddraw2.c b/dlls/ddraw/tests/ddraw2.c
index 0cb1ca4..a2489e4 100644
index 2d08718d131..0a2d575e8cc 100644
--- a/dlls/ddraw/tests/ddraw2.c
+++ b/dlls/ddraw/tests/ddraw2.c
@@ -1121,8 +1121,10 @@ static void test_texture_load_ckey(void)
@@ -1495,8 +1495,10 @@ static void test_texture_load_ckey(void)
IDirectDraw2 *ddraw = NULL;
IDirectDrawSurface *src = NULL;
IDirectDrawSurface *dst = NULL;
@@ -414,7 +414,7 @@ index 0cb1ca4..a2489e4 100644
DDSURFACEDESC ddsd;
HRESULT hr;
DDCOLORKEY ckey;
@@ -1134,16 +1136,31 @@ static void test_texture_load_ckey(void)
@@ -1508,16 +1510,31 @@ static void test_texture_load_ckey(void)
memset(&ddsd, 0, sizeof(ddsd));
ddsd.dwSize = sizeof(ddsd);
@@ -431,10 +431,10 @@ index 0cb1ca4..a2489e4 100644
+ U4(ddsd.ddpfPixelFormat).dwBBitMask = 0x000000FF;
+
hr = IDirectDraw2_CreateSurface(ddraw, &ddsd, &src, NULL);
ok(SUCCEEDED(hr), "Failed to create source texture, hr %#x.\n", hr);
ok(SUCCEEDED(hr), "Failed to create source texture, hr %#lx.\n", hr);
ddsd.ddsCaps.dwCaps = DDSCAPS_TEXTURE;
hr = IDirectDraw2_CreateSurface(ddraw, &ddsd, &dst, NULL);
ok(SUCCEEDED(hr), "Failed to create destination texture, hr %#x.\n", hr);
ok(SUCCEEDED(hr), "Failed to create destination texture, hr %#lx.\n", hr);
+ U1(ddsd.ddpfPixelFormat).dwRGBBitCount = 16;
+ U2(ddsd.ddpfPixelFormat).dwRBitMask = 0xf800;
@@ -445,20 +445,20 @@ index 0cb1ca4..a2489e4 100644
+ ok(SUCCEEDED(hr), "Failed to create destination texture, hr %#x.\n", hr);
+
hr = IDirectDrawSurface_QueryInterface(src, &IID_IDirect3DTexture, (void **)&src_tex);
ok(SUCCEEDED(hr) || hr == E_NOINTERFACE, "Failed to get Direct3DTexture interface, hr %#x.\n", hr);
ok(SUCCEEDED(hr) || hr == E_NOINTERFACE, "Failed to get Direct3DTexture interface, hr %#lx.\n", hr);
if (FAILED(hr))
@@ -1154,6 +1171,8 @@ static void test_texture_load_ckey(void)
@@ -1528,6 +1545,8 @@ static void test_texture_load_ckey(void)
}
hr = IDirectDrawSurface_QueryInterface(dst, &IID_IDirect3DTexture, (void **)&dst_tex);
ok(SUCCEEDED(hr), "Failed to get Direct3DTexture interface, hr %#x.\n", hr);
ok(SUCCEEDED(hr), "Failed to get Direct3DTexture interface, hr %#lx.\n", hr);
+ hr = IDirectDrawSurface_QueryInterface(dst2, &IID_IDirect3DTexture, (void **)&dst2_tex);
+ ok(SUCCEEDED(hr), "Failed to get Direct3DTexture interface, hr %#x.\n", hr);
+ ok(SUCCEEDED(hr), "Failed to get Direct3DTexture interface, hr %#lx.\n", hr);
/* No surface has a color key */
hr = IDirect3DTexture_Load(dst_tex, src_tex);
@@ -1182,6 +1201,11 @@ static void test_texture_load_ckey(void)
ok(ckey.dwColorSpaceLowValue == 0x0000ff00, "dwColorSpaceLowValue is %#x.\n", ckey.dwColorSpaceLowValue);
ok(ckey.dwColorSpaceHighValue == 0x0000ff00, "dwColorSpaceHighValue is %#x.\n", ckey.dwColorSpaceHighValue);
@@ -1556,6 +1575,11 @@ static void test_texture_load_ckey(void)
ok(ckey.dwColorSpaceLowValue == 0x0000ff00, "Got unexpected value 0x%08lx.\n", ckey.dwColorSpaceLowValue);
ok(ckey.dwColorSpaceHighValue == 0x0000ff00, "Got unexpected value 0x%08lx.\n", ckey.dwColorSpaceHighValue);
+ /* Source surface has a color key but destination differs in format */
+ ckey.dwColorSpaceLowValue = ckey.dwColorSpaceHighValue = 0x0;
@@ -468,8 +468,8 @@ index 0cb1ca4..a2489e4 100644
/* Both surfaces have a color key: Dest ckey is overwritten */
ckey.dwColorSpaceLowValue = ckey.dwColorSpaceHighValue = 0x000000ff;
hr = IDirectDrawSurface_SetColorKey(dst, DDCKEY_SRCBLT, &ckey);
@@ -1206,8 +1230,10 @@ static void test_texture_load_ckey(void)
ok(ckey.dwColorSpaceHighValue == 0x0000ff00, "dwColorSpaceHighValue is %#x.\n", ckey.dwColorSpaceHighValue);
@@ -1580,8 +1604,10 @@ static void test_texture_load_ckey(void)
ok(ckey.dwColorSpaceHighValue == 0x0000ff00, "Got unexpected value 0x%08lx.\n", ckey.dwColorSpaceHighValue);
done:
+ if (dst2_tex) IDirect3DTexture_Release(dst2_tex);
@@ -480,5 +480,5 @@ index 0cb1ca4..a2489e4 100644
if (src) IDirectDrawSurface_Release(src);
if (ddraw) IDirectDraw2_Release(ddraw);
--
2.4.2
2.35.1

View File

@@ -8,3 +8,4 @@
# The Sims Online
Fixes: [19153] Resident Evil 1 fails to start (needs IDirect3D3::EnumDevices() to return a device named "RGB Emulation")
Depends: ddraw-Device_Caps
Disabled: True

View File

@@ -1,4 +1,4 @@
From 415ededb3cceae15cb05a1860cef1d4e5e055b27 Mon Sep 17 00:00:00 2001
From 5d29a2de174042ce7bdd52d92337591933e0f761 Mon Sep 17 00:00:00 2001
From: Mark Harmstone <mark@harmstone.com>
Date: Fri, 27 Mar 2015 20:58:37 +0000
Subject: [PATCH] dsound: Add EAX init and free stubs.
@@ -10,10 +10,10 @@ Subject: [PATCH] dsound: Add EAX init and free stubs.
3 files changed, 33 insertions(+), 1 deletion(-)
diff --git a/dlls/dsound/buffer.c b/dlls/dsound/buffer.c
index 6bbf468d136..e27fdfdecc4 100644
index e8b3fb4a832..28f2e95994e 100644
--- a/dlls/dsound/buffer.c
+++ b/dlls/dsound/buffer.c
@@ -1110,6 +1110,8 @@ HRESULT secondarybuffer_create(DirectSoundDevice *device, const DSBUFFERDESC *ds
@@ -1153,6 +1153,8 @@ HRESULT secondarybuffer_create(DirectSoundDevice *device, const DSBUFFERDESC *ds
DSOUND_RecalcVolPan(&(dsb->volpan));
InitializeSRWLock(&dsb->lock);
@@ -22,20 +22,20 @@ index 6bbf468d136..e27fdfdecc4 100644
/* register buffer */
err = DirectSoundDevice_AddBuffer(device, dsb);
@@ -1150,6 +1152,8 @@ void secondarybuffer_destroy(IDirectSoundBufferImpl *This)
@@ -1194,6 +1196,8 @@ void secondarybuffer_destroy(IDirectSoundBufferImpl *This)
HeapFree(GetProcessHeap(), 0, This->filters);
}
+ free_eax_buffer(This);
+
HeapFree(GetProcessHeap(), 0, This);
TRACE("(%p) released\n", This);
HeapFree(GetProcessHeap(), 0, This);
diff --git a/dlls/dsound/dsound_private.h b/dlls/dsound/dsound_private.h
index 3b4c4f290a4..8dbb9edb594 100644
index 267b2c044bc..c906eb2adb1 100644
--- a/dlls/dsound/dsound_private.h
+++ b/dlls/dsound/dsound_private.h
@@ -234,6 +234,8 @@ HRESULT WINAPI EAX_Get(IDirectSoundBufferImpl *buf, REFGUID guidPropSet,
@@ -240,6 +240,8 @@ HRESULT WINAPI EAX_Get(IDirectSoundBufferImpl *buf, REFGUID guidPropSet,
HRESULT WINAPI EAX_Set(IDirectSoundBufferImpl *buf, REFGUID guidPropSet,
ULONG dwPropID, void *pInstanceData, ULONG cbInstanceData, void *pPropData,
ULONG cbPropData) DECLSPEC_HIDDEN;
@@ -45,7 +45,7 @@ index 3b4c4f290a4..8dbb9edb594 100644
/* mixer.c */
void DSOUND_CheckEvent(const IDirectSoundBufferImpl *dsb, DWORD playpos, int len) DECLSPEC_HIDDEN;
diff --git a/dlls/dsound/eax.c b/dlls/dsound/eax.c
index 3931681d295..c0afb0f1acf 100644
index 03b6e0a9813..91438efc335 100644
--- a/dlls/dsound/eax.c
+++ b/dlls/dsound/eax.c
@@ -92,20 +92,46 @@ static const EFXEAXREVERBPROPERTIES efx_presets[] = {
@@ -97,5 +97,5 @@ index 3931681d295..c0afb0f1acf 100644
HRESULT WINAPI EAX_Get(IDirectSoundBufferImpl *buf, REFGUID guidPropSet,
--
2.27.0
2.35.1

View File

@@ -1 +1,2 @@
Fixes: [44052] - Support for font fallback.
Disabled: True

View File

@@ -1,4 +1,4 @@
From 27524b275c81c1c9057e4b4ca3d9cec734a3bd8a Mon Sep 17 00:00:00 2001
From 846f2603e9d2a3a3b5a56b0e1140bb49a95053a6 Mon Sep 17 00:00:00 2001
From: Zebediah Figura <z.figura12@gmail.com>
Date: Thu, 7 Jun 2018 20:09:59 -0500
Subject: [PATCH] server: Create server objects for eventfd-based
@@ -7,10 +7,10 @@ Subject: [PATCH] server: Create server objects for eventfd-based
---
server/Makefile.in | 1 +
server/esync.c | 318 ++++++++++++++++++++++++++++++++++++++++++++
server/esync.h | 22 +++
server/esync.h | 24 ++++
server/main.c | 4 +
server/protocol.def | 25 +++-
5 files changed, 369 insertions(+), 1 deletion(-)
5 files changed, 371 insertions(+), 1 deletion(-)
create mode 100644 server/esync.c
create mode 100644 server/esync.h
@@ -352,10 +352,10 @@ index 00000000000..b9dbfa322bc
+}
diff --git a/server/esync.h b/server/esync.h
new file mode 100644
index 00000000000..7ca4ca89394
index 00000000000..00f9e638d83
--- /dev/null
+++ b/server/esync.h
@@ -0,0 +1,22 @@
@@ -0,0 +1,24 @@
+/*
+ * eventfd-based synchronization objects
+ *
@@ -376,6 +376,8 @@ index 00000000000..7ca4ca89394
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#include <unistd.h>
+
+extern int do_esync(void);
+void esync_init(void);
diff --git a/server/main.c b/server/main.c
@@ -401,10 +403,10 @@ index a134d811d82..3436b0871b4 100644
set_current_time();
init_scheduler();
diff --git a/server/protocol.def b/server/protocol.def
index c413cc7d7bb..607d56a666c 100644
index 6bfcda213a4..6b0e0e6f6e4 100644
--- a/server/protocol.def
+++ b/server/protocol.def
@@ -3733,7 +3733,6 @@ struct handle_info
@@ -3738,7 +3738,6 @@ struct handle_info
obj_handle_t handle; /* process handle */
@END
@@ -412,7 +414,7 @@ index c413cc7d7bb..607d56a666c 100644
/* Iterate thread list for process */
@REQ(get_next_thread)
obj_handle_t process; /* process handle */
@@ -3744,3 +3743,27 @@ struct handle_info
@@ -3749,3 +3748,27 @@ struct handle_info
@REPLY
obj_handle_t handle; /* next thread handle */
@END
@@ -441,5 +443,5 @@ index c413cc7d7bb..607d56a666c 100644
+ unsigned int shm_idx;
+@END
--
2.33.0
2.35.1

View File

@@ -1,4 +1,4 @@
From 3e714e2eb10fe17f12b747731c0ce7e18fd4b7a0 Mon Sep 17 00:00:00 2001
From 61fb7e02aa6779469e94c79f1132c4991cb27244 Mon Sep 17 00:00:00 2001
From: Zebediah Figura <zfigura@codeweavers.com>
Date: Mon, 6 Jul 2020 15:11:12 -0500
Subject: [PATCH] server: Create eventfd file descriptors for process objects.
@@ -40,16 +40,16 @@ index c7b0323f204..27049ffbdb0 100644
{
struct esync *esync;
diff --git a/server/esync.h b/server/esync.h
index 7ca4ca89394..6a0a367124d 100644
index 00f9e638d83..8522d8a69ae 100644
--- a/server/esync.h
+++ b/server/esync.h
@@ -20,3 +20,4 @@
@@ -22,3 +22,4 @@
extern int do_esync(void);
void esync_init(void);
+int esync_create_fd( int initval, int flags );
diff --git a/server/process.c b/server/process.c
index da972a41955..91b26d00ec0 100644
index da11b90c613..22ac16fb540 100644
--- a/server/process.c
+++ b/server/process.c
@@ -63,6 +63,7 @@
@@ -77,7 +77,7 @@ index da972a41955..91b26d00ec0 100644
no_satisfied, /* satisfied */
no_signal, /* signal */
no_get_fd, /* get_fd */
@@ -684,6 +686,7 @@ struct process *create_process( int fd, struct process *parent, unsigned int fla
@@ -686,6 +688,7 @@ struct process *create_process( int fd, struct process *parent, unsigned int fla
process->rawinput_mouse = NULL;
process->rawinput_kbd = NULL;
memset( &process->image_info, 0, sizeof(process->image_info) );
@@ -85,7 +85,7 @@ index da972a41955..91b26d00ec0 100644
list_init( &process->kernel_object );
list_init( &process->thread_list );
list_init( &process->locks );
@@ -741,6 +744,9 @@ struct process *create_process( int fd, struct process *parent, unsigned int fla
@@ -742,6 +745,9 @@ struct process *create_process( int fd, struct process *parent, unsigned int fla
if (!token_assign_label( process->token, &high_label_sid ))
goto error;
@@ -95,15 +95,15 @@ index da972a41955..91b26d00ec0 100644
set_fd_events( process->msg_fd, POLLIN ); /* start listening to events */
return process;
@@ -787,6 +793,7 @@ static void process_destroy( struct object *obj )
if (process->token) release_object( process->token );
@@ -789,6 +795,7 @@ static void process_destroy( struct object *obj )
free( process->rawinput_devices );
free( process->dir_cache );
free( process->image );
+ if (do_esync()) close( process->esync_fd );
}
/* dump a process on stdout for debugging purposes */
@@ -804,6 +811,13 @@ static int process_signaled( struct object *obj, struct wait_queue_entry *entry
@@ -806,6 +813,13 @@ static int process_signaled( struct object *obj, struct wait_queue_entry *entry
return !process->running_threads;
}
@@ -118,10 +118,10 @@ index da972a41955..91b26d00ec0 100644
{
access = default_map_access( obj, access );
diff --git a/server/process.h b/server/process.h
index 632faf9c4bf..1ba69b3406e 100644
index 97e0d455ece..a0a071d8f88 100644
--- a/server/process.h
+++ b/server/process.h
@@ -90,6 +90,7 @@ struct process
@@ -85,6 +85,7 @@ struct process
const struct rawinput_device *rawinput_kbd; /* rawinput keyboard device, if any */
struct list kernel_object; /* list of kernel object pointers */
pe_image_info_t image_info; /* main exe image info */
@@ -130,5 +130,5 @@ index 632faf9c4bf..1ba69b3406e 100644
/* process functions */
--
2.34.1
2.35.1

View File

@@ -1,4 +1,4 @@
From 670ee9563c1021c05993ef8525a4661daa01d3dd Mon Sep 17 00:00:00 2001
From dcb50e04b4ec205f4a6688c71a23cb2863cffce6 Mon Sep 17 00:00:00 2001
From: Zebediah Figura <z.figura12@gmail.com>
Date: Fri, 8 Jun 2018 21:01:24 -0500
Subject: [PATCH] server: Create eventfd file descriptors for event objects.
@@ -9,14 +9,14 @@ This lets system processes shut down.
---
server/esync.c | 8 ++++++++
server/esync.h | 1 +
server/event.c | 30 ++++++++++++++++++++++++++++--
3 files changed, 37 insertions(+), 2 deletions(-)
server/event.c | 29 +++++++++++++++++++++++++++--
3 files changed, 36 insertions(+), 2 deletions(-)
diff --git a/server/esync.c b/server/esync.c
index 2b9307267f9..975e5d2ddd6 100644
index 6696119b207..8cb46c4f2ce 100644
--- a/server/esync.c
+++ b/server/esync.c
@@ -331,6 +331,14 @@ void esync_wake_up( struct object *obj )
@@ -329,6 +329,14 @@ void esync_wake_up( struct object *obj )
}
}
@@ -32,27 +32,19 @@ index 2b9307267f9..975e5d2ddd6 100644
{
struct esync *esync;
diff --git a/server/esync.h b/server/esync.h
index 1e12560ddd6..fcbfd0989bb 100644
index 1241e6d9f1a..d259b5f604d 100644
--- a/server/esync.h
+++ b/server/esync.h
@@ -22,3 +22,4 @@ extern int do_esync(void);
@@ -24,3 +24,4 @@ extern int do_esync(void);
void esync_init(void);
int esync_create_fd( int initval, int flags );
void esync_wake_up( struct object *obj );
+void esync_clear( int fd );
diff --git a/server/event.c b/server/event.c
index c727bfdd1ba..69126abc096 100644
index c727bfdd1ba..f1a88e3d23f 100644
--- a/server/event.c
+++ b/server/event.c
@@ -24,6 +24,7 @@
#include <stdio.h>
#include <stdlib.h>
#include <stdarg.h>
+#include <unistd.h>
#include <sys/types.h>
#include "ntstatus.h"
@@ -35,6 +36,7 @@
@@ -35,6 +35,7 @@
#include "thread.h"
#include "request.h"
#include "security.h"
@@ -60,7 +52,7 @@ index c727bfdd1ba..69126abc096 100644
static const WCHAR event_name[] = {'E','v','e','n','t'};
@@ -56,13 +58,16 @@ struct event
@@ -56,13 +57,16 @@ struct event
struct list kernel_object; /* list of kernel object pointers */
int manual_reset; /* is it a manual reset event? */
int signaled; /* event has been signaled */
@@ -77,7 +69,7 @@ index c727bfdd1ba..69126abc096 100644
static const struct object_ops event_ops =
{
@@ -72,7 +77,7 @@ static const struct object_ops event_ops =
@@ -72,7 +76,7 @@ static const struct object_ops event_ops =
add_queue, /* add_queue */
remove_queue, /* remove_queue */
event_signaled, /* signaled */
@@ -86,7 +78,7 @@ index c727bfdd1ba..69126abc096 100644
event_satisfied, /* satisfied */
event_signal, /* signal */
no_get_fd, /* get_fd */
@@ -86,7 +91,7 @@ static const struct object_ops event_ops =
@@ -86,7 +90,7 @@ static const struct object_ops event_ops =
no_open_file, /* open_file */
event_get_kernel_obj_list, /* get_kernel_obj_list */
no_close_handle, /* close_handle */
@@ -95,7 +87,7 @@ index c727bfdd1ba..69126abc096 100644
};
@@ -152,6 +157,9 @@ struct event *create_event( struct object *root, const struct unicode_str *name,
@@ -152,6 +156,9 @@ struct event *create_event( struct object *root, const struct unicode_str *name,
list_init( &event->kernel_object );
event->manual_reset = manual_reset;
event->signaled = initial_state;
@@ -105,7 +97,7 @@ index c727bfdd1ba..69126abc096 100644
}
}
return event;
@@ -180,6 +188,9 @@ void set_event( struct event *event )
@@ -180,6 +187,9 @@ void set_event( struct event *event )
void reset_event( struct event *event )
{
event->signaled = 0;
@@ -115,7 +107,7 @@ index c727bfdd1ba..69126abc096 100644
}
static void event_dump( struct object *obj, int verbose )
@@ -197,6 +208,13 @@ static int event_signaled( struct object *obj, struct wait_queue_entry *entry )
@@ -197,6 +207,13 @@ static int event_signaled( struct object *obj, struct wait_queue_entry *entry )
return event->signaled;
}
@@ -129,7 +121,7 @@ index c727bfdd1ba..69126abc096 100644
static void event_satisfied( struct object *obj, struct wait_queue_entry *entry )
{
struct event *event = (struct event *)obj;
@@ -225,6 +243,14 @@ static struct list *event_get_kernel_obj_list( struct object *obj )
@@ -225,6 +242,14 @@ static struct list *event_get_kernel_obj_list( struct object *obj )
return &event->kernel_object;
}
@@ -145,5 +137,5 @@ index c727bfdd1ba..69126abc096 100644
unsigned int attr, const struct security_descriptor *sd )
{
--
2.33.0
2.35.1

View File

@@ -1,14 +1,14 @@
From a273680e7cbdc66e9fdb6fd6482803ddfed94dca Mon Sep 17 00:00:00 2001
From 0d55971a114d650b7826e01e43ccd3a60597fefd Mon Sep 17 00:00:00 2001
From: Zebediah Figura <zfigura@codeweavers.com>
Date: Mon, 6 Jul 2020 16:01:56 -0500
Subject: [PATCH] server: Create eventfd file descriptors for message queues.
---
server/queue.c | 29 ++++++++++++++++++++++++++++-
1 file changed, 28 insertions(+), 1 deletion(-)
server/queue.c | 30 +++++++++++++++++++++++++++++-
1 file changed, 29 insertions(+), 1 deletion(-)
diff --git a/server/queue.c b/server/queue.c
index b6decc521e9..e70c0f5ad81 100644
index b6decc521e9..23fb338924e 100644
--- a/server/queue.c
+++ b/server/queue.c
@@ -41,6 +41,7 @@
@@ -85,7 +85,15 @@ index b6decc521e9..e70c0f5ad81 100644
static void msg_queue_satisfied( struct object *obj, struct wait_queue_entry *entry )
{
struct msg_queue *queue = (struct msg_queue *)obj;
@@ -2485,6 +2502,9 @@ DECL_HANDLER(set_queue_mask)
@@ -1090,6 +1107,7 @@ static void msg_queue_destroy( struct object *obj )
release_object( queue->input );
if (queue->hooks) release_object( queue->hooks );
if (queue->fd) release_object( queue->fd );
+ if (do_esync()) close( queue->esync_fd );
}
static void msg_queue_poll_event( struct fd *fd, int event )
@@ -2485,6 +2503,9 @@ DECL_HANDLER(set_queue_mask)
if (req->skip_wait) queue->wake_mask = queue->changed_mask = 0;
else wake_up( &queue->obj, 0 );
}
@@ -95,7 +103,7 @@ index b6decc521e9..e70c0f5ad81 100644
}
}
@@ -2498,6 +2518,9 @@ DECL_HANDLER(get_queue_status)
@@ -2498,6 +2519,9 @@ DECL_HANDLER(get_queue_status)
reply->wake_bits = queue->wake_bits;
reply->changed_bits = queue->changed_bits;
queue->changed_bits &= ~req->clear_bits;
@@ -105,7 +113,7 @@ index b6decc521e9..e70c0f5ad81 100644
}
else reply->wake_bits = reply->changed_bits = 0;
}
@@ -2746,6 +2769,10 @@ DECL_HANDLER(get_message)
@@ -2746,6 +2770,10 @@ DECL_HANDLER(get_message)
queue->wake_mask = req->wake_mask;
queue->changed_mask = req->changed_mask;
set_error( STATUS_PENDING ); /* FIXME */
@@ -117,5 +125,5 @@ index b6decc521e9..e70c0f5ad81 100644
found_msg:
--
2.34.1
2.35.1

View File

@@ -1,4 +1,4 @@
From e0a89702e35941e75ce06f795966c92b3f195ed8 Mon Sep 17 00:00:00 2001
From ca6a89f3bfb6aa5d7ac05bb0c469b527ae1a9d9d Mon Sep 17 00:00:00 2001
From: Zebediah Figura <zfigura@codeweavers.com>
Date: Mon, 6 Jul 2020 16:11:23 -0500
Subject: [PATCH] server, ntdll: Implement message waits.
@@ -10,10 +10,10 @@ Subject: [PATCH] server, ntdll: Implement message waits.
3 files changed, 75 insertions(+), 2 deletions(-)
diff --git a/dlls/ntdll/unix/esync.c b/dlls/ntdll/unix/esync.c
index fcbe563bb5a..88490e08ef9 100644
index 2ae334d8417..608c318c1c7 100644
--- a/dlls/ntdll/unix/esync.c
+++ b/dlls/ntdll/unix/esync.c
@@ -482,12 +482,13 @@ static void update_grabbed_object( struct esync *obj )
@@ -475,12 +475,13 @@ static void update_grabbed_object( struct esync *obj )
/* A value of STATUS_NOT_IMPLEMENTED returned from this function means that we
* need to delegate to server_select(). */
@@ -28,7 +28,7 @@ index fcbe563bb5a..88490e08ef9 100644
LONGLONG timeleft;
LARGE_INTEGER now;
ULONGLONG end;
@@ -515,6 +516,9 @@ NTSTATUS esync_wait_objects( DWORD count, const HANDLE *handles, BOOLEAN wait_an
@@ -508,6 +509,9 @@ NTSTATUS esync_wait_objects( DWORD count, const HANDLE *handles, BOOLEAN wait_an
return ret;
}
@@ -38,7 +38,7 @@ index fcbe563bb5a..88490e08ef9 100644
if (has_esync && has_server)
FIXME("Can't wait on esync and server objects at the same time!\n");
else if (has_server)
@@ -526,6 +530,9 @@ NTSTATUS esync_wait_objects( DWORD count, const HANDLE *handles, BOOLEAN wait_an
@@ -519,6 +523,9 @@ NTSTATUS esync_wait_objects( DWORD count, const HANDLE *handles, BOOLEAN wait_an
for (i = 0; i < count; i++)
TRACE(" %p", handles[i]);
@@ -48,7 +48,7 @@ index fcbe563bb5a..88490e08ef9 100644
if (!timeout)
TRACE(", timeout = INFINITE.\n");
else
@@ -565,7 +572,9 @@ NTSTATUS esync_wait_objects( DWORD count, const HANDLE *handles, BOOLEAN wait_an
@@ -558,7 +565,9 @@ NTSTATUS esync_wait_objects( DWORD count, const HANDLE *handles, BOOLEAN wait_an
int64_t value;
ssize_t size;
@@ -59,7 +59,7 @@ index fcbe563bb5a..88490e08ef9 100644
{
/* Don't grab the object, just check if it's signaled. */
if (fds[i].revents & POLLIN)
@@ -610,6 +619,44 @@ NTSTATUS esync_wait_objects( DWORD count, const HANDLE *handles, BOOLEAN wait_an
@@ -603,6 +612,44 @@ NTSTATUS esync_wait_objects( DWORD count, const HANDLE *handles, BOOLEAN wait_an
}
}
@@ -105,10 +105,10 @@ index fcbe563bb5a..88490e08ef9 100644
{
struct stat st;
diff --git a/server/protocol.def b/server/protocol.def
index cf00ab99c63..ecbb78cc9bb 100644
index 5cf63cbac21..f837944574e 100644
--- a/server/protocol.def
+++ b/server/protocol.def
@@ -3734,3 +3734,8 @@ enum esync_type
@@ -3797,3 +3797,8 @@ enum esync_type
int type;
unsigned int shm_idx;
@END
@@ -118,10 +118,10 @@ index cf00ab99c63..ecbb78cc9bb 100644
+ int in_msgwait; /* are we in a message wait? */
+@END
diff --git a/server/queue.c b/server/queue.c
index d34bc284d08..f4edb299dc3 100644
index 1702acb8480..9593ae532d4 100644
--- a/server/queue.c
+++ b/server/queue.c
@@ -146,6 +146,7 @@ struct msg_queue
@@ -144,6 +144,7 @@ struct msg_queue
int keystate_lock; /* owns an input keystate lock */
unsigned int ignore_post_msg; /* ignore post messages newer than this unique id */
int esync_fd; /* esync file descriptor (signalled on message) */
@@ -129,7 +129,7 @@ index d34bc284d08..f4edb299dc3 100644
};
struct hotkey
@@ -319,6 +320,7 @@ static struct msg_queue *create_msg_queue( struct thread *thread, struct thread_
@@ -317,6 +318,7 @@ static struct msg_queue *create_msg_queue( struct thread *thread, struct thread_
queue->keystate_lock = 0;
queue->ignore_post_msg = 0;
queue->esync_fd = -1;
@@ -137,7 +137,7 @@ index d34bc284d08..f4edb299dc3 100644
list_init( &queue->send_result );
list_init( &queue->callback_result );
list_init( &queue->pending_timers );
@@ -1002,6 +1004,10 @@ static int is_queue_hung( struct msg_queue *queue )
@@ -1001,6 +1003,10 @@ static int is_queue_hung( struct msg_queue *queue )
if (get_wait_queue_thread(entry)->queue == queue)
return 0; /* thread is waiting on queue -> not hung */
}
@@ -148,9 +148,9 @@ index d34bc284d08..f4edb299dc3 100644
return 1;
}
@@ -3416,3 +3422,18 @@ DECL_HANDLER(get_rawinput_devices)
devices[i++] = e->device;
}
@@ -3456,3 +3462,18 @@ DECL_HANDLER(update_rawinput_devices)
process->rawinput_mouse = find_rawinput_device( process, 1, 2 );
process->rawinput_kbd = find_rawinput_device( process, 1, 6 );
}
+
+DECL_HANDLER(esync_msgwait)
@@ -168,5 +168,5 @@ index d34bc284d08..f4edb299dc3 100644
+ set_fd_events( queue->fd, req->in_msgwait ? POLLIN : 0 );
+}
--
2.30.2
2.35.1

View File

@@ -1,4 +1,4 @@
From 3518ce5bf3c6010425f35bb228b3fb2b238b1726 Mon Sep 17 00:00:00 2001
From 8111350c608821aa86c6acfb4959446abf97d382 Mon Sep 17 00:00:00 2001
From: Zebediah Figura <z.figura12@gmail.com>
Date: Sat, 9 Jun 2018 15:39:37 -0500
Subject: [PATCH] server: Create eventfd descriptors for device manager
@@ -11,22 +11,14 @@ process.
This lets drivers like mountmgr finally work, and so winecfg can open the
Drives tab.
---
server/device.c | 25 ++++++++++++++++++++++++-
1 file changed, 24 insertions(+), 1 deletion(-)
server/device.c | 24 +++++++++++++++++++++++-
1 file changed, 23 insertions(+), 1 deletion(-)
diff --git a/server/device.c b/server/device.c
index 80904d33d0d..2a7727f05ae 100644
index f730fa81afa..c45d0102a56 100644
--- a/server/device.c
+++ b/server/device.c
@@ -25,6 +25,7 @@
#include <stdio.h>
#include <stdlib.h>
#include <stdarg.h>
+#include <unistd.h>
#include "ntstatus.h"
#define WIN32_NO_STATUS
@@ -38,6 +39,7 @@
@@ -38,6 +38,7 @@
#include "handle.h"
#include "request.h"
#include "process.h"
@@ -34,7 +26,7 @@ index 80904d33d0d..2a7727f05ae 100644
/* IRP object */
@@ -93,10 +95,12 @@ struct device_manager
@@ -93,10 +94,12 @@ struct device_manager
struct list requests; /* list of pending irps across all devices */
struct irp_call *current_call; /* call currently executed on client side */
struct wine_rb_tree kernel_objects; /* map of objects that have client side pointer associated */
@@ -47,7 +39,7 @@ index 80904d33d0d..2a7727f05ae 100644
static void device_manager_destroy( struct object *obj );
static const struct object_ops device_manager_ops =
@@ -107,7 +111,7 @@ static const struct object_ops device_manager_ops =
@@ -107,7 +110,7 @@ static const struct object_ops device_manager_ops =
add_queue, /* add_queue */
remove_queue, /* remove_queue */
device_manager_signaled, /* signaled */
@@ -56,7 +48,7 @@ index 80904d33d0d..2a7727f05ae 100644
no_satisfied, /* satisfied */
no_signal, /* signal */
no_get_fd, /* get_fd */
@@ -751,6 +755,9 @@ static void delete_file( struct device_file *file )
@@ -751,6 +754,9 @@ static void delete_file( struct device_file *file )
/* terminate all pending requests */
LIST_FOR_EACH_ENTRY_SAFE( irp, next, &file->requests, struct irp_call, dev_entry )
{
@@ -66,7 +58,7 @@ index 80904d33d0d..2a7727f05ae 100644
list_remove( &irp->mgr_entry );
set_irp_result( irp, STATUS_FILE_DELETED, NULL, 0, 0 );
}
@@ -786,6 +793,13 @@ static int device_manager_signaled( struct object *obj, struct wait_queue_entry
@@ -786,6 +792,13 @@ static int device_manager_signaled( struct object *obj, struct wait_queue_entry
return !list_empty( &manager->requests );
}
@@ -80,7 +72,7 @@ index 80904d33d0d..2a7727f05ae 100644
static void device_manager_destroy( struct object *obj )
{
struct device_manager *manager = (struct device_manager *)obj;
@@ -820,6 +834,9 @@ static void device_manager_destroy( struct object *obj )
@@ -820,6 +833,9 @@ static void device_manager_destroy( struct object *obj )
assert( !irp->file && !irp->async );
release_object( irp );
}
@@ -90,7 +82,7 @@ index 80904d33d0d..2a7727f05ae 100644
}
static struct device_manager *create_device_manager(void)
@@ -832,6 +849,9 @@ static struct device_manager *create_device_manager(void)
@@ -832,6 +848,9 @@ static struct device_manager *create_device_manager(void)
list_init( &manager->devices );
list_init( &manager->requests );
wine_rb_init( &manager->kernel_objects, compare_kernel_object );
@@ -100,7 +92,7 @@ index 80904d33d0d..2a7727f05ae 100644
}
return manager;
}
@@ -1019,6 +1039,9 @@ DECL_HANDLER(get_next_device_request)
@@ -1021,6 +1040,9 @@ DECL_HANDLER(get_next_device_request)
/* we already own the object if it's only on manager queue */
if (irp->file) grab_object( irp );
manager->current_call = irp;
@@ -111,5 +103,5 @@ index 80904d33d0d..2a7727f05ae 100644
else close_handle( current->process, reply->next );
}
--
2.33.0
2.35.1

View File

@@ -1,17 +1,17 @@
From 1ad0cfe6a328fd4ffdbce2c61e1cc7c822391734 Mon Sep 17 00:00:00 2001
From 543476e8a53d41c69e89fbaa7d9cee8a48059944 Mon Sep 17 00:00:00 2001
From: Zebediah Figura <z.figura12@gmail.com>
Date: Fri, 15 Jun 2018 11:01:44 -0500
Subject: [PATCH] server: Create eventfd descriptors for timers.
---
server/timer.c | 19 ++++++++++++++++++-
1 file changed, 18 insertions(+), 1 deletion(-)
server/timer.c | 20 +++++++++++++++++++-
1 file changed, 19 insertions(+), 1 deletion(-)
diff --git a/server/timer.c b/server/timer.c
index 23d03aa3582..43b40a13032 100644
index f59902d5607..36645a2a8d2 100644
--- a/server/timer.c
+++ b/server/timer.c
@@ -36,6 +36,7 @@
@@ -35,6 +35,7 @@
#include "file.h"
#include "handle.h"
#include "request.h"
@@ -19,7 +19,7 @@ index 23d03aa3582..43b40a13032 100644
static const WCHAR timer_name[] = {'T','i','m','e','r'};
@@ -62,10 +63,12 @@ struct timer
@@ -61,10 +62,12 @@ struct timer
struct thread *thread; /* thread that set the APC function */
client_ptr_t callback; /* callback APC function */
client_ptr_t arg; /* callback argument */
@@ -32,7 +32,7 @@ index 23d03aa3582..43b40a13032 100644
static void timer_satisfied( struct object *obj, struct wait_queue_entry *entry );
static void timer_destroy( struct object *obj );
@@ -77,7 +80,7 @@ static const struct object_ops timer_ops =
@@ -76,7 +79,7 @@ static const struct object_ops timer_ops =
add_queue, /* add_queue */
remove_queue, /* remove_queue */
timer_signaled, /* signaled */
@@ -41,7 +41,7 @@ index 23d03aa3582..43b40a13032 100644
timer_satisfied, /* satisfied */
no_signal, /* signal */
no_get_fd, /* get_fd */
@@ -112,6 +115,10 @@ static struct timer *create_timer( struct object *root, const struct unicode_str
@@ -111,6 +114,10 @@ static struct timer *create_timer( struct object *root, const struct unicode_str
timer->period = 0;
timer->timeout = NULL;
timer->thread = NULL;
@@ -52,7 +52,7 @@ index 23d03aa3582..43b40a13032 100644
}
}
return timer;
@@ -185,6 +192,9 @@ static int set_timer( struct timer *timer, timeout_t expire, unsigned int period
@@ -182,6 +189,9 @@ static int set_timer( struct timer *timer, timeout_t expire, unsigned int period
{
period = 0; /* period doesn't make any sense for a manual timer */
timer->signaled = 0;
@@ -62,7 +62,7 @@ index 23d03aa3582..43b40a13032 100644
}
timer->when = (expire <= 0) ? expire - monotonic_time : max( expire, current_time );
timer->period = period;
@@ -212,6 +222,13 @@ static int timer_signaled( struct object *obj, struct wait_queue_entry *entry )
@@ -209,6 +219,13 @@ static int timer_signaled( struct object *obj, struct wait_queue_entry *entry )
return timer->signaled;
}
@@ -76,6 +76,14 @@ index 23d03aa3582..43b40a13032 100644
static void timer_satisfied( struct object *obj, struct wait_queue_entry *entry )
{
struct timer *timer = (struct timer *)obj;
@@ -223,6 +240,7 @@ static void timer_destroy( struct object *obj )
if (timer->timeout) remove_timeout_user( timer->timeout );
if (timer->thread) release_object( timer->thread );
+ if (do_esync()) close( timer->esync_fd );
}
/* create a timer */
--
2.20.1
2.35.1

View File

@@ -1,4 +1,4 @@
From 505384ad65984c3fc18c1c1a7b1fd39ecd0186f1 Mon Sep 17 00:00:00 2001
From 07694655cf43e87ffc6185a5e7fe8d1bdd8658a4 Mon Sep 17 00:00:00 2001
From: Zebediah Figura <z.figura12@gmail.com>
Date: Wed, 13 Jun 2018 23:32:04 -0500
Subject: [PATCH] kernel32/tests: Add some mutex tests.
@@ -8,11 +8,11 @@ Subject: [PATCH] kernel32/tests: Add some mutex tests.
1 file changed, 94 insertions(+)
diff --git a/dlls/kernel32/tests/sync.c b/dlls/kernel32/tests/sync.c
index ea54cb069df..790b7bfe797 100644
index bc85126d9aa..491052d5593 100644
--- a/dlls/kernel32/tests/sync.c
+++ b/dlls/kernel32/tests/sync.c
@@ -177,8 +177,23 @@ static void test_signalandwait(void)
CloseHandle(file);
@@ -227,8 +227,23 @@ static void test_temporary_objects(void)
ok(GetLastError() == ERROR_FILE_NOT_FOUND, "wrong error %lu\n", GetLastError());
}
+static HANDLE mutex, mutex2, mutices[2];
@@ -35,7 +35,7 @@ index ea54cb069df..790b7bfe797 100644
DWORD wait_ret;
BOOL ret;
HANDLE hCreated;
@@ -289,6 +304,85 @@ todo_wine_if(getenv("WINEESYNC")) /* XFAIL: due to the above */
@@ -339,6 +354,85 @@ todo_wine_if(getenv("WINEESYNC")) /* XFAIL: due to the above */
CloseHandle(hOpened);
CloseHandle(hCreated);
@@ -122,5 +122,5 @@ index ea54cb069df..790b7bfe797 100644
static void test_slist(void)
--
2.28.0
2.35.1

View File

@@ -1,14 +1,14 @@
From fa9bbbaa8630c4b259e287437a627e226c1c34da Mon Sep 17 00:00:00 2001
From 6adfd0593d10cc9ec8ed8364de167d40ee2098ce Mon Sep 17 00:00:00 2001
From: Zebediah Figura <z.figura12@gmail.com>
Date: Sat, 17 Oct 2020 19:13:16 -0500
Subject: [PATCH] server: Create esync file descriptors for console servers.
---
server/console.c | 36 ++++++++++++++++++++++++++++--------
1 file changed, 28 insertions(+), 8 deletions(-)
server/console.c | 37 +++++++++++++++++++++++++++++--------
1 file changed, 29 insertions(+), 8 deletions(-)
diff --git a/server/console.c b/server/console.c
index e7c97e99579..98ac09efc3f 100644
index ae5d84f7a06..3f9c0ce356c 100644
--- a/server/console.c
+++ b/server/console.c
@@ -41,6 +41,7 @@
@@ -67,7 +67,15 @@ index e7c97e99579..98ac09efc3f 100644
while (!list_empty( &server->read_queue ))
{
struct console_host_ioctl *call = LIST_ENTRY( list_head( &server->read_queue ), struct console_host_ioctl, entry );
@@ -897,6 +902,13 @@ static int console_server_signaled( struct object *obj, struct wait_queue_entry
@@ -877,6 +882,7 @@ static void console_server_destroy( struct object *obj )
assert( obj->ops == &console_server_ops );
disconnect_console_server( server );
if (server->fd) release_object( server->fd );
+ if (do_esync()) close( server->esync_fd );
}
static struct object *console_server_lookup_name( struct object *obj, struct unicode_str *name,
@@ -918,6 +924,13 @@ static int console_server_signaled( struct object *obj, struct wait_queue_entry
return !server->console || !list_empty( &server->queue );
}
@@ -81,7 +89,7 @@ index e7c97e99579..98ac09efc3f 100644
static struct fd *console_server_get_fd( struct object* obj )
{
struct console_server *server = (struct console_server*)obj;
@@ -928,6 +940,10 @@ static struct object *create_console_server( void )
@@ -949,6 +962,10 @@ static struct object *create_console_server( void )
return NULL;
}
allow_fd_caching(server->fd);
@@ -92,7 +100,7 @@ index e7c97e99579..98ac09efc3f 100644
return &server->obj;
}
@@ -1513,6 +1529,8 @@ DECL_HANDLER(get_next_console_request)
@@ -1562,6 +1579,8 @@ DECL_HANDLER(get_next_console_request)
/* set result of previous ioctl */
ioctl = LIST_ENTRY( list_head( &server->queue ), struct console_host_ioctl, entry );
list_remove( &ioctl->entry );
@@ -101,7 +109,7 @@ index e7c97e99579..98ac09efc3f 100644
}
if (ioctl)
@@ -1598,6 +1616,8 @@ DECL_HANDLER(get_next_console_request)
@@ -1647,6 +1666,8 @@ DECL_HANDLER(get_next_console_request)
{
set_error( STATUS_PENDING );
}
@@ -111,5 +119,5 @@ index e7c97e99579..98ac09efc3f 100644
release_object( server );
}
--
2.34.1
2.35.1

Some files were not shown because too many files have changed in this diff Show More