Compare commits

...

20 Commits
v8.13 ... v8.14

Author SHA1 Message Date
Alistair Leslie-Hughes
da76250fad Release v8.14 2023-08-21 13:42:05 +10:00
Alistair Leslie-Hughes
9d9c5c700a Updated vkd3d-latest patchset 2023-08-19 12:24:21 +10:00
Paul Gofman
0b96046f15 Update and re-enable ntdll-Syscall_Emulation patchset.
Thanks DodoGTA from LGD discord for spotting related upstream
ABI change and suggesting a part of the fix.
2023-08-18 20:22:35 -06:00
Alistair Leslie-Hughes
cc31308c32 Updated user32-rawinput-mouse patchset 2023-08-17 10:02:51 +10:00
Alistair Leslie-Hughes
559b29238c Rebase against 5cd11ade210ce4a7b5b7b500be664b3661d3e710. 2023-08-16 10:04:48 +10:00
Alistair Leslie-Hughes
e2d51dfc4b Updated widl-SLTG_Typelib_Support patchset
Remove compile warning.
2023-08-15 14:53:27 +10:00
Alistair Leslie-Hughes
d3de5eadd9 Rebase against 8f76cc687da9c0fc7fb10e84a8cf36bcad0ef473. 2023-08-15 08:34:49 +10:00
Alistair Leslie-Hughes
4fa70d510c Updated user32-rawinput-mouse patchset
Fixes: https://bugs.winehq.org/show_bug.cgi?id=55085
Fixes: https://bugs.winehq.org/show_bug.cgi?id=55407
2023-08-14 09:05:44 +10:00
Alistair Leslie-Hughes
505a83ad9e Rebase against b2a099b3ceec6fef05c455408c05714232cb466f. 2023-08-14 08:58:10 +10:00
Alistair Leslie-Hughes
a1e634bca9 Updated user32-rawinput-mouse patchset 2023-08-10 07:49:54 +10:00
Alistair Leslie-Hughes
13a418812a Updated winex11-CandidateWindowPos patchset 2023-08-09 18:48:52 +10:00
Alistair Leslie-Hughes
965789d221 Rebase against ee1d3a19a4b8571ba32bdf9af845a74bca22c97b. 2023-08-09 12:11:22 +10:00
Alistair Leslie-Hughes
2a2c8b5228 Updated vkd3d-latest patchset 2023-08-05 09:53:23 +10:00
Alistair Leslie-Hughes
c210ef9f59 Updated fltmgr.sys-FltBuildDefaultSecurityDescriptor patchset 2023-08-04 14:19:06 +10:00
Alistair Leslie-Hughes
dab36ebe1e Updated vkd3d-latest patchset 2023-08-03 12:06:16 +10:00
Alistair Leslie-Hughes
1ca1b3b602 Updated d3dx11_43-D3DX11CreateTextureFromMemory patchset 2023-08-02 09:58:16 +10:00
Alistair Leslie-Hughes
2b16926188 Updated d3dx11_43-D3DX11CreateTextureFromMemory patchset 2023-08-01 14:38:44 +10:00
Alistair Leslie-Hughes
bbbe9cbbc7 Rebase against b80ea4153b096970514f86f385a37c9ceaceada2. 2023-08-01 09:59:38 +10:00
Alistair Leslie-Hughes
1142823d53 Updated xactengine3_7-PrepareWave patchset 2023-07-28 17:54:06 +10:00
Alistair Leslie-Hughes
390b1f4127 Rebase against fddb79776871ee00adf4d78583135a5d96ca8c06. 2023-07-28 08:02:08 +10:00
37 changed files with 12955 additions and 4588 deletions

View File

@@ -1,7 +1,7 @@
From ea3579b5b3d701647f5c7f16de658f1cd7fe876d Mon Sep 17 00:00:00 2001
From 0fbce9fe4b69f27b7df82c6517c364aab57de63b Mon Sep 17 00:00:00 2001
From: Alistair Leslie-Hughes <leslie_alistair@hotmail.com>
Date: Fri, 30 Jul 2021 15:57:29 +1000
Subject: [PATCH] d3dx11_43: Implement D3DX11GetImageInfoFromMemory
Subject: [PATCH 1/2] d3dx11_43: Implement D3DX11GetImageInfoFromMemory
Wine-bug: https://bugs.winehq.org/show_bug.cgi?id=50210
@@ -10,8 +10,8 @@ Signed-off-by: Alistair Leslie-Hughes <leslie_alistair@hotmail.com>
dlls/d3dx11_42/Makefile.in | 1 +
dlls/d3dx11_43/Makefile.in | 1 +
dlls/d3dx11_43/main.c | 9 --
dlls/d3dx11_43/texture.c | 176 +++++++++++++++++++++++++++++++++++++
4 files changed, 178 insertions(+), 9 deletions(-)
dlls/d3dx11_43/texture.c | 167 +++++++++++++++++++++++++++++++++++++
4 files changed, 169 insertions(+), 9 deletions(-)
diff --git a/dlls/d3dx11_42/Makefile.in b/dlls/d3dx11_42/Makefile.in
index 7fcce18a8e1..78ca5f707a7 100644
@@ -55,10 +55,10 @@ index 5dad027864f..00c1db35e42 100644
- return E_NOTIMPL;
-}
diff --git a/dlls/d3dx11_43/texture.c b/dlls/d3dx11_43/texture.c
index 81ac8ee6db7..6881eec107d 100644
index 81ac8ee6db7..bbf937cdab0 100644
--- a/dlls/d3dx11_43/texture.c
+++ b/dlls/d3dx11_43/texture.c
@@ -15,14 +15,190 @@
@@ -15,14 +15,181 @@
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
*/
@@ -145,13 +145,11 @@ index 81ac8ee6db7..6881eec107d 100644
+HRESULT WINAPI D3DX11GetImageInfoFromMemory(const void *src_data, SIZE_T src_data_size, ID3DX11ThreadPump *pump,
+ D3DX11_IMAGE_INFO *img_info, HRESULT *hresult)
+{
+ IWICBitmapFrameDecode *frame = NULL;
+ IWICImagingFactory *factory = NULL;
+ IWICDdsDecoder *dds_decoder = NULL;
+ IWICBitmapDecoder *decoder = NULL;
+ WICDdsParameters dds_params;
+ IWICStream *stream = NULL;
+ unsigned int frame_count;
+ GUID container_format;
+ HRESULT hr;
+
@@ -186,16 +184,6 @@ index 81ac8ee6db7..6881eec107d 100644
+ goto end;
+ }
+
+ hr = IWICBitmapDecoder_GetFrameCount(decoder, &frame_count);
+ if (FAILED(hr) || !frame_count)
+ goto end;
+ hr = IWICBitmapDecoder_GetFrame(decoder, 0, &frame);
+ if (FAILED(hr))
+ goto end;
+ hr = IWICBitmapFrameDecode_GetSize(frame, &img_info->Width, &img_info->Height);
+ if (FAILED(hr))
+ goto end;
+
+ if (img_info->ImageFileFormat == D3DX11_IFF_DDS)
+ {
+ hr = IWICBitmapDecoder_QueryInterface(decoder, &IID_IWICDdsDecoder, (void **)&dds_decoder);
@@ -204,6 +192,8 @@ index 81ac8ee6db7..6881eec107d 100644
+ hr = IWICDdsDecoder_GetParameters(dds_decoder, &dds_params);
+ if (FAILED(hr))
+ goto end;
+ img_info->Width = dds_params.Width;
+ img_info->Height = dds_params.Height;
+ img_info->ArraySize = dds_params.ArraySize;
+ img_info->Depth = dds_params.Depth;
+ img_info->MipLevels = dds_params.MipLevels;
@@ -218,6 +208,9 @@ index 81ac8ee6db7..6881eec107d 100644
+ }
+ else
+ {
+ FIXME("Unsupported image format %d\n", img_info->ImageFileFormat);
+ img_info->Width = 1;
+ img_info->Height = 1;
+ img_info->ArraySize = 1;
+ img_info->Depth = 1;
+ img_info->MipLevels = 1;
@@ -229,8 +222,6 @@ index 81ac8ee6db7..6881eec107d 100644
+end:
+ if (dds_decoder)
+ IWICDdsDecoder_Release(dds_decoder);
+ if (frame)
+ IWICBitmapFrameDecode_Release(frame);
+ if (decoder)
+ IWICBitmapDecoder_Release(decoder);
+ if (stream)
@@ -250,5 +241,5 @@ index 81ac8ee6db7..6881eec107d 100644
SIZE_T data_size, D3DX11_IMAGE_LOAD_INFO *load_info, ID3DX11ThreadPump *pump,
ID3D11ShaderResourceView **view, HRESULT *hresult)
--
2.34.1
2.40.1

View File

@@ -1,15 +1,15 @@
From 5be34c9e347d4379179eeba742b25986152d4e4f Mon Sep 17 00:00:00 2001
From 7285c2c90f43cd46d873a2ddb65e9c6c9d63f750 Mon Sep 17 00:00:00 2001
From: Alistair Leslie-Hughes <leslie_alistair@hotmail.com>
Date: Tue, 3 Aug 2021 11:13:18 +1000
Subject: [PATCH] d3dx11_42: Implement D3DX11CreateTextureFromMemory
Subject: [PATCH 2/2] d3dx11_42: Implement D3DX11CreateTextureFromMemory
Signed-off-by: Alistair Leslie-Hughes <leslie_alistair@hotmail.com>
---
dlls/d3dx11_43/texture.c | 347 ++++++++++++++++++++++++++++++++++++++-
1 file changed, 342 insertions(+), 5 deletions(-)
dlls/d3dx11_43/texture.c | 359 ++++++++++++++++++++++++++++++++++++++-
1 file changed, 354 insertions(+), 5 deletions(-)
diff --git a/dlls/d3dx11_43/texture.c b/dlls/d3dx11_43/texture.c
index 6881eec107d..b91bd8d881a 100644
index bbf937cdab0..10dedf30c0f 100644
--- a/dlls/d3dx11_43/texture.c
+++ b/dlls/d3dx11_43/texture.c
@@ -22,6 +22,7 @@
@@ -20,7 +20,7 @@ index 6881eec107d..b91bd8d881a 100644
WINE_DEFAULT_DEBUG_CHANNEL(d3dx);
@@ -43,6 +44,32 @@ file_formats[] =
@@ -43,6 +44,33 @@ file_formats[] =
{ &GUID_ContainerFormatWmp, D3DX11_IFF_WMP },
};
@@ -42,6 +42,7 @@ index 6881eec107d..b91bd8d881a 100644
+ { &GUID_WICPixelFormat32bppBGR, DXGI_FORMAT_B8G8R8X8_UNORM },
+ { &GUID_WICPixelFormat32bppBGRA, DXGI_FORMAT_B8G8R8A8_UNORM },
+ { &GUID_WICPixelFormat32bppRGBA, DXGI_FORMAT_R8G8B8A8_UNORM },
+ { &GUID_WICPixelFormat32bppRGBA, DXGI_FORMAT_R8G8B8A8_UNORM_SRGB },
+ { &GUID_WICPixelFormat32bppRGBA1010102, DXGI_FORMAT_R10G10B10A2_UNORM },
+ { &GUID_WICPixelFormat32bppRGBA1010102XR, DXGI_FORMAT_R10G10B10_XR_BIAS_A2_UNORM },
+ { &GUID_WICPixelFormat64bppRGBA, DXGI_FORMAT_R16G16B16A16_UNORM },
@@ -53,7 +54,7 @@ index 6881eec107d..b91bd8d881a 100644
static D3DX11_IMAGE_FILE_FORMAT wic_container_guid_to_file_format(GUID *container_format)
{
unsigned int i;
@@ -95,6 +122,175 @@ static DXGI_FORMAT get_d3dx11_dds_format(DXGI_FORMAT format)
@@ -95,6 +123,175 @@ static DXGI_FORMAT get_d3dx11_dds_format(DXGI_FORMAT format)
return format;
}
@@ -229,7 +230,7 @@ index 6881eec107d..b91bd8d881a 100644
HRESULT WINAPI D3DX11GetImageInfoFromMemory(const void *src_data, SIZE_T src_data_size, ID3DX11ThreadPump *pump,
D3DX11_IMAGE_INFO *img_info, HRESULT *hresult)
{
@@ -229,14 +425,155 @@ HRESULT WINAPI D3DX11CreateTextureFromFileW(ID3D11Device *device, const WCHAR *f
@@ -220,14 +417,166 @@ HRESULT WINAPI D3DX11CreateTextureFromFileW(ID3D11Device *device, const WCHAR *f
return E_NOTIMPL;
}
@@ -264,17 +265,28 @@ index 6881eec107d..b91bd8d881a 100644
+
+ if (!src_data || !src_data_size || !texture)
+ return E_FAIL;
+ if (load_info)
+ FIXME("load_info is ignored.\n");
+ if (pump)
+ FIXME("Thread pump is not supported yet.\n");
+
+ if (FAILED(D3DX11GetImageInfoFromMemory(src_data, src_data_size, NULL, &img_info, NULL)))
+ return E_FAIL;
+ if (img_info.MiscFlags & D3D11_RESOURCE_MISC_TEXTURECUBE)
+ if (load_info)
+ {
+ FIXME("Cube map is not supported.\n");
+ return E_FAIL;
+ img_info.Width = load_info->Width;
+ img_info.Height = load_info->Height;
+ img_info.Depth = load_info->Depth;
+ img_info.ArraySize = 1;
+ img_info.MipLevels = load_info->MipLevels;
+ img_info.MiscFlags = load_info->MiscFlags;
+ img_info.Format = load_info->Format;
+ }
+ else
+ {
+ if (FAILED(D3DX11GetImageInfoFromMemory(src_data, src_data_size, NULL, &img_info, NULL)))
+ return E_FAIL;
+ if (img_info.MiscFlags & D3D11_RESOURCE_MISC_TEXTURECUBE)
+ {
+ FIXME("Cube map is not supported.\n");
+ return E_FAIL;
+ }
+ }
+
+ if (FAILED(hr = WICCreateImagingFactory_Proxy(WINCODEC_SDK_VERSION, &factory)))
@@ -391,5 +403,5 @@ index 6881eec107d..b91bd8d881a 100644
HRESULT WINAPI D3DX11SaveTextureToFileW(ID3D11DeviceContext *context, ID3D11Resource *texture,
--
2.34.1
2.40.1

View File

@@ -0,0 +1,56 @@
From 30d677139afe2af3f72c68ba11f1bbaead6f1c11 Mon Sep 17 00:00:00 2001
From: Alistair Leslie-Hughes <leslie_alistair@hotmail.com>
Date: Wed, 2 Aug 2023 08:24:11 +1000
Subject: [PATCH] d3dx11_43: D3DX11GetImageInfoFromMemory - Only use frame for
non DDS images
---
dlls/d3dx11_43/texture.c | 18 +++++++++++++++---
1 file changed, 15 insertions(+), 3 deletions(-)
diff --git a/dlls/d3dx11_43/texture.c b/dlls/d3dx11_43/texture.c
index 10dedf30c0f..f3f7d350131 100644
--- a/dlls/d3dx11_43/texture.c
+++ b/dlls/d3dx11_43/texture.c
@@ -295,6 +295,7 @@ static const GUID *dxgi_format_to_wic_guid(DXGI_FORMAT format)
HRESULT WINAPI D3DX11GetImageInfoFromMemory(const void *src_data, SIZE_T src_data_size, ID3DX11ThreadPump *pump,
D3DX11_IMAGE_INFO *img_info, HRESULT *hresult)
{
+ IWICBitmapFrameDecode *frame = NULL;
IWICImagingFactory *factory = NULL;
IWICDdsDecoder *dds_decoder = NULL;
IWICBitmapDecoder *decoder = NULL;
@@ -358,9 +359,18 @@ HRESULT WINAPI D3DX11GetImageInfoFromMemory(const void *src_data, SIZE_T src_dat
}
else
{
- FIXME("Unsupported image format %d\n", img_info->ImageFileFormat);
- img_info->Width = 1;
- img_info->Height = 1;
+ unsigned int frame_count;
+
+ hr = IWICBitmapDecoder_GetFrameCount(decoder, &frame_count);
+ if (FAILED(hr) || !frame_count)
+ goto end;
+ hr = IWICBitmapDecoder_GetFrame(decoder, 0, &frame);
+ if (FAILED(hr))
+ goto end;
+ hr = IWICBitmapFrameDecode_GetSize(frame, &img_info->Width, &img_info->Height);
+ if (FAILED(hr))
+ goto end;
+
img_info->ArraySize = 1;
img_info->Depth = 1;
img_info->MipLevels = 1;
@@ -372,6 +382,8 @@ HRESULT WINAPI D3DX11GetImageInfoFromMemory(const void *src_data, SIZE_T src_dat
end:
if (dds_decoder)
IWICDdsDecoder_Release(dds_decoder);
+ if (frame)
+ IWICBitmapFrameDecode_Release(frame);
if (decoder)
IWICBitmapDecoder_Release(decoder);
if (stream)
--
2.40.1

View File

@@ -254,14 +254,14 @@ index f437a83cbd8..c5faae520c9 100644
+ hr = D3DXOptimizeVertices(indices, num_faces,
+ num_vertices, FALSE,
+ vertex_remap);
+ ok(hr == D3D_OK, "D3DXOptimizeVertices failed. Got %x, expected D3D_OK.\n", hr);
+ ok(hr == D3D_OK, "D3DXOptimizeVertices failed. Got %lx, expected D3D_OK.\n", hr);
+
+ /* vertex_remap must not be NULL */
+ hr = D3DXOptimizeVertices(indices, num_faces,
+ num_vertices, FALSE,
+ NULL);
+ ok(hr == D3DERR_INVALIDCALL, "D3DXOptimizeVertices passed NULL vertex_remap "
+ "pointer. Got %x, expected D3DERR_INVALIDCALL.\n", hr);
+ "pointer. Got %lx, expected D3DERR_INVALIDCALL.\n", hr);
+}
+
static void test_optimize_faces(void)

View File

@@ -37,19 +37,19 @@ index 87d0648b699..e88bbf59767 100644
+ ddsd.dwSize = sizeof(ddsd);
+
+ hr = IDirectDrawSurface_Lock(surface, NULL, &ddsd, DDLOCK_WAIT, NULL);
+ ok(hr == DD_OK, "IDirectDrawSurface_Lock returned: %x\n", hr);
+ ok(hr == DD_OK, "IDirectDrawSurface_Lock returned: %lx\n", hr);
+
+ for (y = 0; y < ddsd.dwHeight; y++)
+ {
+ if (U1(U4(ddsd).ddpfPixelFormat).dwRGBBitCount == 32)
+ if (ddsd.ddpfPixelFormat.dwRGBBitCount == 32)
+ {
+ DWORD *textureRow = (DWORD *)((char *)ddsd.lpSurface + y * U1(ddsd).lPitch);
+ DWORD *textureRow = (DWORD *)((char *)ddsd.lpSurface + y * ddsd.lPitch);
+ for (x = 0; x < ddsd.dwWidth; x++)
+ *textureRow++ = fillcolor;
+ }
+ else if (U1(U4(ddsd).ddpfPixelFormat).dwRGBBitCount == 16)
+ else if (ddsd.ddpfPixelFormat.dwRGBBitCount == 16)
+ {
+ WORD *textureRow = (WORD *)((char *)ddsd.lpSurface + y * U1(ddsd).lPitch);
+ WORD *textureRow = (WORD *)((char *)ddsd.lpSurface + y * ddsd.lPitch);
+ for (x = 0; x < ddsd.dwWidth; x++)
+ *textureRow++ = fillcolor;
+ }
@@ -61,7 +61,7 @@ index 87d0648b699..e88bbf59767 100644
+ }
+
+ hr = IDirectDrawSurface_Unlock(surface, NULL);
+ ok(hr == DD_OK, "IDirectDrawSurface_Unlock returned: %x\n", hr);
+ ok(hr == DD_OK, "IDirectDrawSurface_Unlock returned: %lx\n", hr);
+ }
+
+ if (level != -1 && curlevel >= level)
@@ -101,18 +101,18 @@ index 87d0648b699..e88bbf59767 100644
+ ddsd.dwSize = sizeof(ddsd);
+
+ hr = IDirectDrawSurface_Lock(surface, NULL, &ddsd, DDLOCK_WAIT, NULL);
+ ok(hr == DD_OK, "IDirectDrawSurface_Lock returned: %x\n", hr);
+ ok(hr == DD_OK, "IDirectDrawSurface_Lock returned: %lx\n", hr);
+
+ for (y = 0; y < ddsd.dwHeight; y++)
+ {
+ if (U1(U4(ddsd).ddpfPixelFormat).dwRGBBitCount == 32)
+ if (ddsd.ddpfPixelFormat.dwRGBBitCount == 32)
+ {
+ DWORD *textureRow = (DWORD *)((char *)ddsd.lpSurface + y * U1(ddsd).lPitch);
+ DWORD *textureRow = (DWORD *)((char *)ddsd.lpSurface + y * ddsd.lPitch);
+ for (x = 0; x < ddsd.dwWidth; x++)
+ {
+ if ((*textureRow & 0x00ffffff) != fillcolor)
+ {
+ ok(0, "Expected color %x, got %x at (%d, %d) in level %d\n",
+ ok(0, "Expected color %lx, got %lx at (%ld, %ld) in level %d\n",
+ fillcolor, *textureRow, x, y, curlevel);
+ result = FALSE;
+ goto end;
@@ -120,14 +120,14 @@ index 87d0648b699..e88bbf59767 100644
+ textureRow++;
+ }
+ }
+ else if (U1(U4(ddsd).ddpfPixelFormat).dwRGBBitCount == 16)
+ else if (ddsd.ddpfPixelFormat.dwRGBBitCount == 16)
+ {
+ WORD *textureRow = (WORD *)((char *)ddsd.lpSurface + y * U1(ddsd).lPitch);
+ WORD *textureRow = (WORD *)((char *)ddsd.lpSurface + y * ddsd.lPitch);
+ for (x = 0; x < ddsd.dwWidth; x++)
+ {
+ if (*textureRow != fillcolor)
+ {
+ ok(0, "Expected color %x, got %x at (%d, %d) in level %d\n",
+ ok(0, "Expected color %lx, got %lx at (%ld, %ld) in level %ld\n",
+ fillcolor, *textureRow, x, y, curlevel);
+ result = FALSE;
+ goto end;
@@ -144,7 +144,7 @@ index 87d0648b699..e88bbf59767 100644
+
+ end:
+ hr = IDirectDrawSurface_Unlock(surface, NULL);
+ ok(hr == DD_OK, "IDirectDrawSurface_Unlock returned: %x\n", hr);
+ ok(hr == DD_OK, "IDirectDrawSurface_Unlock returned: %lx\n", hr);
+ }
+
+ if (level != -1 && curlevel >= level)
@@ -322,24 +322,24 @@ index 87d0648b699..e88bbf59767 100644
+ ddsd2.ddsCaps.dwCaps = DDSCAPS_TEXTURE;
+ ddsd2.ddpfPixelFormat.dwSize = sizeof(ddsd2.ddpfPixelFormat);
+ ddsd2.ddpfPixelFormat.dwFlags = DDPF_RGB;
+ U1(U4(ddsd2).ddpfPixelFormat).dwRGBBitCount = load_tests[i].surfaces[j].format->dwRGBBitCount;
+ U2(U4(ddsd2).ddpfPixelFormat).dwRBitMask = load_tests[i].surfaces[j].format->dwRBitMask;
+ U3(U4(ddsd2).ddpfPixelFormat).dwGBitMask = load_tests[i].surfaces[j].format->dwGBitMask;
+ U4(U4(ddsd2).ddpfPixelFormat).dwBBitMask = load_tests[i].surfaces[j].format->dwBBitMask;
+ ddsd2.ddpfPixelFormat.dwRGBBitCount = load_tests[i].surfaces[j].format->dwRGBBitCount;
+ ddsd2.ddpfPixelFormat.dwRBitMask = load_tests[i].surfaces[j].format->dwRBitMask;
+ ddsd2.ddpfPixelFormat.dwGBitMask = load_tests[i].surfaces[j].format->dwGBitMask;
+ ddsd2.ddpfPixelFormat.dwBBitMask = load_tests[i].surfaces[j].format->dwBBitMask;
+
+ if (load_tests[i].surfaces[j].levels)
+ {
+ ddsd2.dwFlags |= DDSD_MIPMAPCOUNT;
+ ddsd2.ddsCaps.dwCaps |= DDSCAPS_MIPMAP | DDSCAPS_COMPLEX;
+ U2(ddsd2).dwMipMapCount = load_tests[i].surfaces[j].levels;
+ ddsd2.dwMipMapCount = load_tests[i].surfaces[j].levels;
+ }
+
+ hr = IDirectDraw_CreateSurface(DirectDraw1, &ddsd2, &TexSurfaces[j], NULL);
+ ok(hr == D3D_OK, "IDirectDraw_CreateSurface returned %08x for surface %d in test %d\n", hr, j, i);
+ ok(hr == D3D_OK, "IDirectDraw_CreateSurface returned %08lx for surface %d in test %d\n", hr, j, i);
+ if (FAILED(hr)) goto next;
+
+ hr = IDirectDrawSurface_QueryInterface(TexSurfaces[j], &IID_IDirect3DTexture, (void *)&Textures[j]);
+ ok(hr == D3D_OK, "IDirectDrawSurface_QueryInterface returned %08x for surface %d in test %d\n", hr, j, i);
+ ok(hr == D3D_OK, "IDirectDrawSurface_QueryInterface returned %08lx for surface %d in test %d\n", hr, j, i);
+ if (FAILED(hr)) goto next;
+
+ if (load_tests[i].surfaces[j].levels)
@@ -352,19 +352,19 @@ index 87d0648b699..e88bbf59767 100644
+ }
+
+ hr = IDirect3DTexture_Load(Textures[1], Textures[0]);
+ ok(hr == load_tests[i].hres, "IDirect3DTexture_Load returned %08x, expected %08x\n", hr, load_tests[i].hres);
+ ok(hr == load_tests[i].hres, "IDirect3DTexture_Load returned %08lx, expected %08x\n", hr, load_tests[i].hres);
+ if (hr != DD_OK) goto next;
+
+ memset(&ddsd2, 0, sizeof (ddsd2));
+ ddsd2.dwSize = sizeof(ddsd2);
+ hr = IDirectDrawSurface_GetSurfaceDesc(TexSurfaces[1], &ddsd2);
+ ok(hr == DD_OK, "IDirectDrawSurface_GetSurfaceDesc returned %08x\n", hr);
+ ok(hr == DD_OK, "IDirectDrawSurface_GetSurfaceDesc returned %08lx\n", hr);
+
+ if (load_tests[i].surfaces[1].levels)
+ {
+ ok(U2(ddsd2).dwMipMapCount == load_tests[i].surfaces[1].levels,
+ ok(ddsd2.dwMipMapCount == load_tests[i].surfaces[1].levels,
+ "Expected %d mipmap levels, got %d in run %d\n", load_tests[i].surfaces[1].levels,
+ U2(ddsd2).dwMipMapCount, i);
+ ddsd2.dwMipMapCount, i);
+ }
+
+ for (k = 0; k < load_tests[i].level_check; k++)
@@ -373,21 +373,21 @@ index 87d0648b699..e88bbf59767 100644
+ ok(0, "Check surface failed in test %d\n", i);
+ }
+
+ ok(U1(U4(ddsd2).ddpfPixelFormat).dwRGBBitCount == load_tests[i].surfaces[1].format->dwRGBBitCount,
+ ok(ddsd2.ddpfPixelFormat.dwRGBBitCount == load_tests[i].surfaces[1].format->dwRGBBitCount,
+ "Expected %d rgb bits, got %d in run %d\n", load_tests[i].surfaces[1].format->dwRGBBitCount,
+ U1(U4(ddsd2).ddpfPixelFormat).dwRGBBitCount, i);
+ ddsd2.ddpfPixelFormat.dwRGBBitCount, i);
+
+ ok(U1(U4(ddsd2).ddpfPixelFormat).dwRBitMask == load_tests[i].surfaces[1].format->dwRBitMask,
+ ok(ddsd2.ddpfPixelFormat.dwRBitMask == load_tests[i].surfaces[1].format->dwRBitMask,
+ "Expected %08x red bits, got %08x in run %d\n", load_tests[i].surfaces[1].format->dwRBitMask,
+ U1(U4(ddsd2).ddpfPixelFormat).dwRBitMask, i);
+ ddsd2.ddpfPixelFormat.dwRBitMask, i);
+
+ ok(U1(U4(ddsd2).ddpfPixelFormat).dwGBitMask == load_tests[i].surfaces[1].format->dwGBitMask,
+ ok(ddsd2.ddpfPixelFormat.dwGBitMask == load_tests[i].surfaces[1].format->dwGBitMask,
+ "Expected %08x green bits, got %08x in run %d\n", load_tests[i].surfaces[1].format->dwGBitMask,
+ U1(U4(ddsd2).ddpfPixelFormat).dwGBitMask, i);
+ ddsd2.ddpfPixelFormat.dwGBitMask, i);
+
+ ok(U1(U4(ddsd2).ddpfPixelFormat).dwBBitMask == load_tests[i].surfaces[1].format->dwBBitMask,
+ ok(ddsd2.ddpfPixelFormat.dwBBitMask == load_tests[i].surfaces[1].format->dwBBitMask,
+ "Expected %08x blue bits, got %08x in run %d\n", load_tests[i].surfaces[1].format->dwBBitMask,
+ U1(U4(ddsd2).ddpfPixelFormat).dwBBitMask, i);
+ ddsd2.ddpfPixelFormat.dwBBitMask, i);
+
+ next:
+ if (Textures[0]) IDirect3DTexture_Release(Textures[0]);
@@ -425,10 +425,10 @@ index 2d08718d131..0a2d575e8cc 100644
ddsd.ddsCaps.dwCaps = DDSCAPS_TEXTURE | DDSCAPS_SYSTEMMEMORY;
+ ddsd.ddpfPixelFormat.dwSize = sizeof(ddsd.ddpfPixelFormat);
+ ddsd.ddpfPixelFormat.dwFlags = DDPF_RGB;
+ U1(ddsd.ddpfPixelFormat).dwRGBBitCount = 32;
+ U2(ddsd.ddpfPixelFormat).dwRBitMask = 0x00FF0000;
+ U3(ddsd.ddpfPixelFormat).dwGBitMask = 0x0000FF00;
+ U4(ddsd.ddpfPixelFormat).dwBBitMask = 0x000000FF;
+ ddsd.ddpfPixelFormat.dwRGBBitCount = 32;
+ ddsd.ddpfPixelFormat.dwRBitMask = 0x00FF0000;
+ ddsd.ddpfPixelFormat.dwGBitMask = 0x0000FF00;
+ ddsd.ddpfPixelFormat.dwBBitMask = 0x000000FF;
+
hr = IDirectDraw2_CreateSurface(ddraw, &ddsd, &src, NULL);
ok(SUCCEEDED(hr), "Failed to create source texture, hr %#lx.\n", hr);
@@ -436,13 +436,13 @@ index 2d08718d131..0a2d575e8cc 100644
hr = IDirectDraw2_CreateSurface(ddraw, &ddsd, &dst, NULL);
ok(SUCCEEDED(hr), "Failed to create destination texture, hr %#lx.\n", hr);
+ U1(ddsd.ddpfPixelFormat).dwRGBBitCount = 16;
+ U2(ddsd.ddpfPixelFormat).dwRBitMask = 0xf800;
+ U3(ddsd.ddpfPixelFormat).dwGBitMask = 0x07e0;
+ U4(ddsd.ddpfPixelFormat).dwBBitMask = 0x001f;
+ ddsd.ddpfPixelFormat.dwRGBBitCount = 16;
+ ddsd.ddpfPixelFormat.dwRBitMask = 0xf800;
+ ddsd.ddpfPixelFormat.dwGBitMask = 0x07e0;
+ ddsd.ddpfPixelFormat.dwBBitMask = 0x001f;
+
+ hr = IDirectDraw2_CreateSurface(ddraw, &ddsd, &dst2, 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);
+
hr = IDirectDrawSurface_QueryInterface(src, &IID_IDirect3DTexture, (void **)&src_tex);
ok(SUCCEEDED(hr) || hr == E_NOINTERFACE, "Failed to get Direct3DTexture interface, hr %#lx.\n", hr);
@@ -463,7 +463,7 @@ index 2d08718d131..0a2d575e8cc 100644
+ /* Source surface has a color key but destination differs in format */
+ ckey.dwColorSpaceLowValue = ckey.dwColorSpaceHighValue = 0x0;
+ hr = IDirect3DTexture_Load(dst2_tex, src_tex);
+ ok(hr == E_FAIL, "Got unexpected hr %#x, expected E_FAIL.\n", hr);
+ ok(hr == E_FAIL, "Got unexpected hr %#lx, expected E_FAIL.\n", hr);
+
/* Both surfaces have a color key: Dest ckey is overwritten */
ckey.dwColorSpaceLowValue = ckey.dwColorSpaceHighValue = 0x000000ff;

View File

@@ -1,100 +0,0 @@
From 4b20338821a19304650d1acc1229b0e8615896bc Mon Sep 17 00:00:00 2001
From: Alistair Leslie-Hughes <leslie_alistair@hotmail.com>
Date: Wed, 3 Aug 2022 16:25:11 +1000
Subject: [PATCH] dmime: Store WAVE data when Loading.
---
dlls/dmime/segment.c | 56 ++++++++++++++++++++++++++++++++++++++++----
1 file changed, 52 insertions(+), 4 deletions(-)
diff --git a/dlls/dmime/segment.c b/dlls/dmime/segment.c
index bf44c5e73b3..6bf9f3abf0c 100644
--- a/dlls/dmime/segment.c
+++ b/dlls/dmime/segment.c
@@ -33,6 +33,10 @@ typedef struct IDirectMusicSegment8Impl {
DMUS_IO_SEGMENT_HEADER header;
IDirectMusicGraph *pGraph;
struct list Tracks;
+
+ PCMWAVEFORMAT wave_format;
+ void *wave_data;
+ int data_size;
} IDirectMusicSegment8Impl;
IDirectMusicSegment8Impl *create_segment(void);
@@ -86,6 +90,9 @@ static ULONG WINAPI IDirectMusicSegment8Impl_Release(IDirectMusicSegment8 *iface
TRACE("(%p) ref=%ld\n", This, ref);
if (!ref) {
+ if (This->wave_data)
+ free(This->wave_data);
+
HeapFree(GetProcessHeap(), 0, This);
DMIME_UnlockModule();
}
@@ -818,6 +825,49 @@ static inline IDirectMusicSegment8Impl *impl_from_IPersistStream(IPersistStream
return CONTAINING_RECORD(iface, IDirectMusicSegment8Impl, dmobj.IPersistStream_iface);
}
+static HRESULT parse_wave_form(IDirectMusicSegment8Impl *This, IStream *stream, const struct chunk_entry *riff)
+{
+ HRESULT hr;
+ struct chunk_entry chunk = {.parent = riff};
+
+ TRACE("Parsing segment wave in %p: %s\n", stream, debugstr_chunk(riff));
+
+ while ((hr = stream_next_chunk(stream, &chunk)) == S_OK) {
+ switch (chunk.id) {
+ case mmioFOURCC('f','m','t',' '): {
+ if (FAILED(hr = stream_chunk_get_data(stream, &chunk, &This->wave_format, chunk.size)))
+ return hr;
+ TRACE("Wave Format tag %d\n", This->wave_format.wf.wFormatTag);
+ break;
+ }
+ case mmioFOURCC('d','a','t','a'): {
+ TRACE("Wave Data size %lu\n", chunk.size);
+ This->wave_data = malloc(chunk.size);
+ This->data_size = chunk.size;
+ if (!This->wave_data)
+ return E_OUTOFMEMORY;
+ if (FAILED(hr = stream_chunk_get_data(stream, &chunk, This->wave_data, chunk.size)))
+ return hr;
+ break;
+ }
+ case FOURCC_LIST: {
+ FIXME("Skipping LIST tag\n");
+ break;
+ }
+ case mmioFOURCC('I','S','F','T'): {
+ FIXME("Skipping ISFT tag\n");
+ break;
+ }
+ case mmioFOURCC('f','a','c','t'): {
+ FIXME("Skipping fact tag\n");
+ break;
+ }
+ }
+ }
+
+ return S_OK;
+}
+
static HRESULT WINAPI seg_IPersistStream_Load(IPersistStream *iface, IStream *stream)
{
IDirectMusicSegment8Impl *This = impl_from_IPersistStream(iface);
@@ -847,10 +897,8 @@ static HRESULT WINAPI seg_IPersistStream_Load(IPersistStream *iface, IStream *st
if (riff.type == DMUS_FOURCC_SEGMENT_FORM)
hr = parse_segment_form(This, stream, &riff);
- else {
- FIXME("WAVE form loading not implemented\n");
- hr = S_OK;
- }
+ else
+ hr = parse_wave_form(This, stream, &riff);
return hr;
}
--
2.39.1

View File

@@ -1,15 +1,15 @@
From f9da0ca4c7012918b5c8660ebe8a9ea0c74f05b0 Mon Sep 17 00:00:00 2001
From 93d33e5934d8d71db35025f5046d8d44ac1182cc Mon Sep 17 00:00:00 2001
From: Alistair Leslie-Hughes <leslie_alistair@hotmail.com>
Date: Sun, 29 Aug 2021 13:26:53 +1000
Subject: [PATCH] fltmgr.sys: Implement FltBuildDefaultSecurityDescriptor
Subject: [PATCH 1/3] fltmgr.sys: Implement FltBuildDefaultSecurityDescriptor
Signed-off-by: Alistair Leslie-Hughes <leslie_alistair@hotmail.com>
---
dlls/fltmgr.sys/Makefile.in | 1 +
dlls/fltmgr.sys/fltmgr.sys.spec | 4 +-
dlls/fltmgr.sys/main.c | 71 +++++++++++++++++++++++++++++++++
dlls/fltmgr.sys/main.c | 75 ++++++++++++++++++++++++++++++++-
include/ddk/fltkernel.h | 3 +-
4 files changed, 76 insertions(+), 3 deletions(-)
4 files changed, 79 insertions(+), 4 deletions(-)
diff --git a/dlls/fltmgr.sys/Makefile.in b/dlls/fltmgr.sys/Makefile.in
index ba106a43831..bb1f34b4896 100644
@@ -45,10 +45,18 @@ index 39ce6798178..8943b9f85cf 100644
@ stub FltGetBottomInstance
@ stub FltGetContexts
diff --git a/dlls/fltmgr.sys/main.c b/dlls/fltmgr.sys/main.c
index e1016a4989c..ea9685b4308 100644
index e1016a4989c..79f810570da 100644
--- a/dlls/fltmgr.sys/main.c
+++ b/dlls/fltmgr.sys/main.c
@@ -93,3 +93,74 @@ void* WINAPI FltGetRoutineAddress(LPCSTR name)
@@ -23,7 +23,6 @@
#include "ntstatus.h"
#define WIN32_NO_STATUS
#include "windef.h"
-#include "winbase.h"
#include "winternl.h"
#include "ddk/fltkernel.h"
@@ -93,3 +92,77 @@ void* WINAPI FltGetRoutineAddress(LPCSTR name)
return func;
}
@@ -57,28 +65,34 @@ index e1016a4989c..ea9685b4308 100644
+{
+ PACL dacl;
+ NTSTATUS ret = STATUS_INSUFFICIENT_RESOURCES;
+ ULONG sid_len;
+ PSID sid;
+ PSID sid_system;
+ DWORD sid_len;
+ SID *sid;
+ SID *sid_system = NULL;
+ PSECURITY_DESCRIPTOR sec_desc = NULL;
+ SID_IDENTIFIER_AUTHORITY auth = { SECURITY_NULL_SID_AUTHORITY };
+
+ *descriptor = NULL;
+
+ ret = RtlAllocateAndInitializeSid(&auth, 2, SECURITY_BUILTIN_DOMAIN_RID, DOMAIN_GROUP_RID_ADMINS,
+ 0, 0, 0, 0, 0, 0, &sid);
+ if (ret != STATUS_SUCCESS)
+ sid_len = RtlLengthRequiredSid(2);
+ sid = ExAllocatePool(PagedPool, sid_len);
+ if (!sid)
+ goto done;
+ RtlInitializeSid(sid, &auth, 2);
+ sid->SubAuthority[1] = DOMAIN_GROUP_RID_ADMINS;
+ sid->SubAuthority[0] = SECURITY_BUILTIN_DOMAIN_RID;
+
+ ret = RtlAllocateAndInitializeSid(&auth, 1, SECURITY_LOCAL_SYSTEM_RID, 0, 0, 0, 0, 0, 0, 0, &sid_system);
+ if (ret != STATUS_SUCCESS)
+ sid_len = RtlLengthRequiredSid(1);
+ sid_system = ExAllocatePool(PagedPool, sid_len);
+ if (!sid_system)
+ goto done;
+ RtlInitializeSid(sid_system, &auth, 1);
+ sid_system->SubAuthority[0] = SECURITY_LOCAL_SYSTEM_RID;
+
+ sid_len = SECURITY_DESCRIPTOR_MIN_LENGTH + sizeof(ACL) +
+ sizeof(ACCESS_ALLOWED_ACE) + RtlLengthSid(sid) +
+ sizeof(ACCESS_ALLOWED_ACE) + RtlLengthSid(sid_system);
+
+ sec_desc = RtlAllocateHeap(GetProcessHeap(), HEAP_ZERO_MEMORY, sid_len);
+ sec_desc = ExAllocatePool(PagedPool, sid_len);
+ if (!sec_desc)
+ {
+ ret = STATUS_NO_MEMORY;
@@ -107,14 +121,11 @@ index e1016a4989c..ea9685b4308 100644
+ *descriptor = sec_desc;
+
+done:
+ if (ret != STATUS_SUCCESS && sec_desc != NULL)
+ RtlFreeHeap(GetProcessHeap(), 0, sec_desc);
+ if (ret != STATUS_SUCCESS)
+ ExFreePool(sec_desc);
+
+ if (sid != NULL)
+ RtlFreeHeap(GetProcessHeap(), 0, sid);
+
+ if (sid_system != NULL)
+ RtlFreeHeap(GetProcessHeap(), 0, sid_system);
+ ExFreePool(sid);
+ ExFreePool(sid_system);
+
+ return ret;
+}
@@ -139,5 +150,5 @@ index 8ebebfa2e81..9ece0990810 100644
NTSTATUS WINAPI FltRegisterFilter(PDRIVER_OBJECT, const FLT_REGISTRATION *, PFLT_FILTER *);
NTSTATUS WINAPI FltStartFiltering(PFLT_FILTER);
--
2.33.0
2.40.1

View File

@@ -1,7 +1,7 @@
From 36bb7032734a97c5b9d01ef96d595973ea16eb95 Mon Sep 17 00:00:00 2001
From 9cb5114cbf5af7c360ffb653fc286b8bf9e21db3 Mon Sep 17 00:00:00 2001
From: Alistair Leslie-Hughes <leslie_alistair@hotmail.com>
Date: Mon, 30 Aug 2021 15:15:35 +1000
Subject: [PATCH] fltmgr.sys: Create import library
Subject: [PATCH 2/3] fltmgr.sys: Create import library
Signed-off-by: Alistair Leslie-Hughes <leslie_alistair@hotmail.com>
---
@@ -19,5 +19,5 @@ index bb1f34b4896..5540df35d6a 100644
IMPORTS = ntoskrnl
--
2.33.0
2.40.1

View File

@@ -1,4 +1,4 @@
From bc1d0962b58a45949c91367e84e6f71beb9f698b Mon Sep 17 00:00:00 2001
From 8d12d4dac0cbc7194d11e398b4d3371bef8a1952 Mon Sep 17 00:00:00 2001
From: Alistair Leslie-Hughes <leslie_alistair@hotmail.com>
Date: Mon, 30 Aug 2021 15:16:06 +1000
Subject: [PATCH] ntoskrnl.exe: Add FltBuildDefaultSecurityDescriptor test
@@ -23,7 +23,7 @@ index ab1db85adbb..9c89e44e70a 100644
driver2_IMPORTS = winecrt0 ntoskrnl hal
driver2_EXTRADLLFLAGS = -nodefaultlibs -nostartfiles -Wl,--subsystem,native
diff --git a/dlls/ntoskrnl.exe/tests/driver.c b/dlls/ntoskrnl.exe/tests/driver.c
index 18f2920759d..569007d435e 100644
index c8797e8d8e0..168b47941e8 100644
--- a/dlls/ntoskrnl.exe/tests/driver.c
+++ b/dlls/ntoskrnl.exe/tests/driver.c
@@ -32,6 +32,7 @@
@@ -34,7 +34,7 @@ index 18f2920759d..569007d435e 100644
#include "driver.h"
@@ -2374,6 +2375,69 @@ static void test_default_modules(void)
@@ -2372,6 +2373,69 @@ static void test_default_modules(void)
ok(dxgmms1, "Failed to find dxgmms1.sys\n");
}
@@ -66,12 +66,12 @@ index 18f2920759d..569007d435e 100644
+ ok(acl != NULL, "acl is NULL\n");
+ ok(acl->AceCount == 2, "got %d\n", acl->AceCount);
+
+ sid1 = RtlAllocateHeap(GetProcessHeap(), HEAP_ZERO_MEMORY, RtlLengthRequiredSid(2));
+ sid1 = ExAllocatePool(NonPagedPool, RtlLengthRequiredSid(2));
+ RtlInitializeSid(sid1, &auth, 2);
+ *RtlSubAuthoritySid(sid1, 0) = SECURITY_BUILTIN_DOMAIN_RID;
+ *RtlSubAuthoritySid(sid1, 1) = DOMAIN_GROUP_RID_ADMINS;
+
+ sid2 = RtlAllocateHeap(GetProcessHeap(), HEAP_ZERO_MEMORY, RtlLengthRequiredSid(1));
+ sid2 = ExAllocatePool(NonPagedPool, RtlLengthRequiredSid(1));
+ RtlInitializeSid(sid2, &auth, 1);
+ *RtlSubAuthoritySid(sid2, 0) = SECURITY_LOCAL_SYSTEM_RID;
+
@@ -95,8 +95,8 @@ index 18f2920759d..569007d435e 100644
+
+ ok(RtlEqualSid(sid2, (PSID)&ace->SidStart), "SID not equal\n");
+
+ RtlFreeHeap(GetProcessHeap(), 0, sid1);
+ RtlFreeHeap(GetProcessHeap(), 0, sid2);
+ ExFreePool(sid1);
+ ExFreePool(sid2);
+
+ FltFreeSecurityDescriptor(sd);
+}
@@ -104,7 +104,7 @@ index 18f2920759d..569007d435e 100644
static NTSTATUS main_test(DEVICE_OBJECT *device, IRP *irp, IO_STACK_LOCATION *stack)
{
void *buffer = irp->AssociatedIrp.SystemBuffer;
@@ -2419,6 +2483,7 @@ static NTSTATUS main_test(DEVICE_OBJECT *device, IRP *irp, IO_STACK_LOCATION *st
@@ -2417,6 +2481,7 @@ static NTSTATUS main_test(DEVICE_OBJECT *device, IRP *irp, IO_STACK_LOCATION *st
test_process_memory(test_input);
test_permanence();
test_driver_object_extension();
@@ -113,5 +113,5 @@ index 18f2920759d..569007d435e 100644
IoMarkIrpPending(irp);
IoQueueWorkItem(work_item, main_test_task, DelayedWorkQueue, irp);
--
2.39.2
2.40.1

View File

@@ -1,4 +1,4 @@
From 605c054026a8f871f28292425f1634895a9d3057 Mon Sep 17 00:00:00 2001
From 19c928c1e4b5737956a694fed6ab2b244365b0f0 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?R=C3=A9mi=20Bernon?= <rbernon@codeweavers.com>
Date: Tue, 8 Sep 2020 18:43:52 +0200
Subject: [PATCH] msxml3: Implement FreeThreadedXMLHTTP60.
@@ -49,10 +49,10 @@ index 243ee379712..323c7b49848 100644
IsEqualCLSID( rclsid, &CLSID_ServerXMLHTTP30 ) ||
IsEqualCLSID( rclsid, &CLSID_ServerXMLHTTP40 ) ||
diff --git a/dlls/msxml3/httprequest.c b/dlls/msxml3/httprequest.c
index cc384a380e5..98dd23c9fbb 100644
index 459466a1234..d059c20ae81 100644
--- a/dlls/msxml3/httprequest.c
+++ b/dlls/msxml3/httprequest.c
@@ -38,10 +38,12 @@
@@ -37,10 +37,12 @@
#include "shlwapi.h"
#include "msxml_dispex.h"
@@ -66,7 +66,7 @@ index cc384a380e5..98dd23c9fbb 100644
static const WCHAR colspaceW[] = {':',' ',0};
static const WCHAR crlfW[] = {'\r','\n',0};
@@ -2058,6 +2060,468 @@ static const struct IServerXMLHTTPRequestVtbl ServerXMLHTTPRequestVtbl =
@@ -2057,6 +2059,468 @@ static const struct IServerXMLHTTPRequestVtbl ServerXMLHTTPRequestVtbl =
ServerXMLHTTPRequest_setOption
};
@@ -535,7 +535,7 @@ index cc384a380e5..98dd23c9fbb 100644
static void init_httprequest(httprequest *req)
{
req->IXMLHTTPRequest_iface.lpVtbl = &XMLHTTPRequestVtbl;
@@ -2107,6 +2571,35 @@ HRESULT XMLHTTPRequest_create(void **obj)
@@ -2106,6 +2570,35 @@ HRESULT XMLHTTPRequest_create(void **obj)
return S_OK;
}
@@ -572,17 +572,17 @@ index cc384a380e5..98dd23c9fbb 100644
{
serverhttp *req;
diff --git a/dlls/msxml3/msxml_private.h b/dlls/msxml3/msxml_private.h
index 8003c1a9650..59b8c29845d 100644
index 449a86df5e8..3e5181fa6d8 100644
--- a/dlls/msxml3/msxml_private.h
+++ b/dlls/msxml3/msxml_private.h
@@ -367,6 +367,7 @@ extern HRESULT XMLDocument_create(void**) DECLSPEC_HIDDEN;
extern HRESULT SAXXMLReader_create(MSXML_VERSION, void**) DECLSPEC_HIDDEN;
extern HRESULT SAXAttributes_create(MSXML_VERSION, void**) DECLSPEC_HIDDEN;
extern HRESULT XMLHTTPRequest_create(void **) DECLSPEC_HIDDEN;
+extern HRESULT XMLHTTPRequest2_create(void **) DECLSPEC_HIDDEN;
extern HRESULT ServerXMLHTTP_create(void **) DECLSPEC_HIDDEN;
extern HRESULT XSLTemplate_create(void**) DECLSPEC_HIDDEN;
extern HRESULT MXWriter_create(MSXML_VERSION, void**) DECLSPEC_HIDDEN;
@@ -344,6 +344,7 @@ extern HRESULT XMLDocument_create(void**);
extern HRESULT SAXXMLReader_create(MSXML_VERSION, void**);
extern HRESULT SAXAttributes_create(MSXML_VERSION, void**);
extern HRESULT XMLHTTPRequest_create(void **);
+extern HRESULT XMLHTTPRequest2_create(void **);
extern HRESULT ServerXMLHTTP_create(void **);
extern HRESULT XSLTemplate_create(void**);
extern HRESULT MXWriter_create(MSXML_VERSION, void**);
diff --git a/dlls/msxml3/tests/httpreq.c b/dlls/msxml3/tests/httpreq.c
index bccfbaf582a..23d7680d196 100644
--- a/dlls/msxml3/tests/httpreq.c
@@ -1060,5 +1060,5 @@ index 333d4f3d3c7..1b4f0452c5f 100644
/*
* Note that because of a #define in msxml2.h, we end up initializing
--
2.35.1
2.40.1

View File

@@ -1,4 +1,4 @@
From 60fc38b76fb1fa1f70f37eacc50127fe8de30840 Mon Sep 17 00:00:00 2001
From 3242c225381a5beb2690402b8e37179bb9f3e71f Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Michael=20M=C3=BCller?= <michael@fds-team.de>
Date: Sun, 17 Jan 2016 00:50:50 +0100
Subject: [PATCH] ntdll/tests: Add basic tests for RtlQueryPackageIdentity.
@@ -20,12 +20,12 @@ index 90deb5865f8..428ebde23b3 100644
C_SRCS = \
atom.c \
diff --git a/dlls/ntdll/tests/rtl.c b/dlls/ntdll/tests/rtl.c
index b1ef492627a..e13b24a0219 100644
index 117d9eed067..1255ad93dd8 100644
--- a/dlls/ntdll/tests/rtl.c
+++ b/dlls/ntdll/tests/rtl.c
@@ -28,6 +28,9 @@
#include "inaddr.h"
@@ -29,6 +29,9 @@
#include "ip2string.h"
#include "ddk/ntifs.h"
#include "wine/asm.h"
+#include "initguid.h"
+#define COBJMACROS
@@ -33,7 +33,7 @@ index b1ef492627a..e13b24a0219 100644
#ifndef __WINE_WINTERNL_H
@@ -95,6 +98,9 @@ static BOOL (WINAPI *pRtlIsCriticalSectionLocked)(CRITICAL_SECTION *);
@@ -96,6 +99,9 @@ static BOOL (WINAPI *pRtlIsCriticalSectionLocked)(CRITICAL_SECTION *);
static BOOL (WINAPI *pRtlIsCriticalSectionLockedByThread)(CRITICAL_SECTION *);
static NTSTATUS (WINAPI *pRtlInitializeCriticalSectionEx)(CRITICAL_SECTION *, ULONG, ULONG);
static NTSTATUS (WINAPI *pLdrEnumerateLoadedModules)(void *, void *, void *);
@@ -43,7 +43,7 @@ index b1ef492627a..e13b24a0219 100644
static NTSTATUS (WINAPI *pLdrRegisterDllNotification)(ULONG, PLDR_DLL_NOTIFICATION_FUNCTION, void *, void **);
static NTSTATUS (WINAPI *pLdrUnregisterDllNotification)(void *);
@@ -137,6 +143,9 @@ static void InitFunctionPtrs(void)
@@ -138,6 +144,9 @@ static void InitFunctionPtrs(void)
pRtlIsCriticalSectionLockedByThread = (void *)GetProcAddress(hntdll, "RtlIsCriticalSectionLockedByThread");
pRtlInitializeCriticalSectionEx = (void *)GetProcAddress(hntdll, "RtlInitializeCriticalSectionEx");
pLdrEnumerateLoadedModules = (void *)GetProcAddress(hntdll, "LdrEnumerateLoadedModules");
@@ -53,7 +53,7 @@ index b1ef492627a..e13b24a0219 100644
pLdrRegisterDllNotification = (void *)GetProcAddress(hntdll, "LdrRegisterDllNotification");
pLdrUnregisterDllNotification = (void *)GetProcAddress(hntdll, "LdrUnregisterDllNotification");
}
@@ -3608,6 +3617,76 @@ static void test_RtlFirstFreeAce(void)
@@ -3609,6 +3618,76 @@ static void test_RtlFirstFreeAce(void)
HeapFree(GetProcessHeap(), 0, acl);
}
@@ -130,7 +130,7 @@ index b1ef492627a..e13b24a0219 100644
static void test_RtlInitializeSid(void)
{
SID_IDENTIFIER_AUTHORITY sid_ident = { SECURITY_NT_AUTHORITY };
@@ -3687,6 +3766,7 @@ START_TEST(rtl)
@@ -3688,6 +3767,7 @@ START_TEST(rtl)
test_RtlInitializeCriticalSectionEx();
test_RtlLeaveCriticalSection();
test_LdrEnumerateLoadedModules();

View File

@@ -1,18 +1,18 @@
From a20d7bb78dc0d2d134cfe6461c117fea1a5753ed Mon Sep 17 00:00:00 2001
From 45df10c65cee279caac2184919c81e6b473bd3f8 Mon Sep 17 00:00:00 2001
From: Paul Gofman <pgofman@codeweavers.com>
Date: Tue, 14 Jul 2020 15:00:34 +0300
Subject: [PATCH] ntdll: Support x86_64 syscall emulation.
---
configure.ac | 1 +
dlls/ntdll/unix/signal_x86_64.c | 185 ++++++++++++++++++++++++++++++++
2 files changed, 186 insertions(+)
dlls/ntdll/unix/signal_x86_64.c | 192 ++++++++++++++++++++++++++++++++
2 files changed, 193 insertions(+)
diff --git a/configure.ac b/configure.ac
index a8c1d1522fe..2fd9f7a497d 100644
index b759c57f4a0..b72e5c59274 100644
--- a/configure.ac
+++ b/configure.ac
@@ -427,6 +427,7 @@ AC_CHECK_HEADERS(\
@@ -420,6 +420,7 @@ AC_CHECK_HEADERS(\
linux/ioctl.h \
linux/major.h \
linux/param.h \
@@ -21,7 +21,7 @@ index a8c1d1522fe..2fd9f7a497d 100644
linux/types.h \
linux/ucdrom.h \
diff --git a/dlls/ntdll/unix/signal_x86_64.c b/dlls/ntdll/unix/signal_x86_64.c
index bf528226462..a5cd26b7ea0 100644
index 0204139631f..117c238cf44 100644
--- a/dlls/ntdll/unix/signal_x86_64.c
+++ b/dlls/ntdll/unix/signal_x86_64.c
@@ -27,6 +27,7 @@
@@ -56,7 +56,7 @@ index bf528226462..a5cd26b7ea0 100644
#include "ntstatus.h"
#define WIN32_NO_STATUS
#include "windef.h"
@@ -1821,6 +1832,179 @@ static inline DWORD is_privileged_instr( CONTEXT *context )
@@ -1773,6 +1784,186 @@ static inline DWORD is_privileged_instr( CONTEXT *context )
return 0;
}
@@ -70,6 +70,13 @@ index bf528226462..a5cd26b7ea0 100644
+ TRACE_(seh)("SIGSYS, rax %#llx, rip %#llx.\n", ctx->uc_mcontext.gregs[REG_RAX],
+ ctx->uc_mcontext.gregs[REG_RIP]);
+
+ if (ctx->uc_mcontext.gregs[REG_RAX] == 0xffff)
+ {
+ /* Test syscall from the Unix side (install_bpf). */
+ ctx->uc_mcontext.gregs[REG_RAX] = STATUS_INVALID_PARAMETER;
+ return;
+ }
+
+ frame->rip = ctx->uc_mcontext.gregs[REG_RIP] + 0xb;
+ frame->rcx = ctx->uc_mcontext.gregs[REG_RIP];
+ frame->eflags = ctx->uc_mcontext.gregs[REG_EFL];
@@ -129,7 +136,7 @@ index bf528226462..a5cd26b7ea0 100644
+# endif
+ static const BYTE syscall_trap_test[] =
+ {
+ 0x48, 0x89, 0xc8, /* mov %rcx, %rax */
+ 0x48, 0x89, 0xf8, /* mov %rdi, %rax */
+ 0x0f, 0x05, /* syscall */
+ 0xc3, /* retq */
+ };
@@ -155,7 +162,7 @@ index bf528226462..a5cd26b7ea0 100644
+ BPF_STMT(BPF_RET | BPF_K, SECCOMP_RET_TRAP),
+ BPF_STMT(BPF_RET | BPF_K, SECCOMP_RET_ALLOW),
+ };
+ long (WINAPI *test_syscall)(long sc_number);
+ long (*test_syscall)(long sc_number);
+ struct syscall_frame *frame = amd64_thread_data()->syscall_frame;
+ struct sock_fprog prog;
+ NTSTATUS status;
@@ -236,7 +243,7 @@ index bf528226462..a5cd26b7ea0 100644
/***********************************************************************
* handle_interrupt
@@ -2520,6 +2704,7 @@ void signal_init_process(void)
@@ -2448,6 +2639,7 @@ void signal_init_process(void)
if (sigaction( SIGSEGV, &sig_act, NULL ) == -1) goto error;
if (sigaction( SIGILL, &sig_act, NULL ) == -1) goto error;
if (sigaction( SIGBUS, &sig_act, NULL ) == -1) goto error;
@@ -245,5 +252,5 @@ index bf528226462..a5cd26b7ea0 100644
error:
--
2.40.1
2.41.0

View File

@@ -1,2 +1 @@
Fixes: [48291] Detroit: Become Human crashes on launch
Disabled: True

View File

@@ -1,4 +1,4 @@
From c1b129ea5fb6f23e8d07cdb0c3c74e8672e880e9 Mon Sep 17 00:00:00 2001
From e332b9169147c9956e498133be4164ae8597681b Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Michael=20M=C3=BCller?= <michael@fds-team.de>
Date: Fri, 4 Mar 2016 04:53:00 +0100
Subject: [PATCH] setupapi: ImplementSetupAddSectionToDiskSpaceList.
@@ -12,7 +12,7 @@ Subject: [PATCH] setupapi: ImplementSetupAddSectionToDiskSpaceList.
5 files changed, 328 insertions(+), 4 deletions(-)
diff --git a/dlls/setupapi/diskspace.c b/dlls/setupapi/diskspace.c
index c079014a109..436af0ec1f0 100644
index ee9fdb801bb..3d1e96f43c3 100644
--- a/dlls/setupapi/diskspace.c
+++ b/dlls/setupapi/diskspace.c
@@ -20,6 +20,7 @@
@@ -168,10 +168,10 @@ index c079014a109..436af0ec1f0 100644
BOOL WINAPI SetupAddInstallSectionToDiskSpaceListA(HDSKSPC DiskSpace,
HINF InfHandle, HINF LayoutInfHandle,
diff --git a/dlls/setupapi/queue.c b/dlls/setupapi/queue.c
index f6c83d30e1d..4e5d3f99e9c 100644
index 40e106fffcd..53053e8c4d4 100644
--- a/dlls/setupapi/queue.c
+++ b/dlls/setupapi/queue.c
@@ -338,7 +338,7 @@ static void get_source_info( HINF hinf, const WCHAR *src_file, SP_FILE_COPY_PARA
@@ -337,7 +337,7 @@ static void get_source_info( HINF hinf, const WCHAR *src_file, SP_FILE_COPY_PARA
*
* Retrieve the destination dir for a given section.
*/
@@ -181,7 +181,7 @@ index f6c83d30e1d..4e5d3f99e9c 100644
INFCONTEXT context;
WCHAR systemdir[MAX_PATH], *dir;
diff --git a/dlls/setupapi/setupapi.spec b/dlls/setupapi/setupapi.spec
index 1b3f5cc6bd8..b2c42fe6e20 100644
index 7578fb25c9c..660b5ed422d 100644
--- a/dlls/setupapi/setupapi.spec
+++ b/dlls/setupapi/setupapi.spec
@@ -246,8 +246,8 @@
@@ -196,12 +196,12 @@ index 1b3f5cc6bd8..b2c42fe6e20 100644
@ stdcall SetupAddToDiskSpaceListW(long wstr int64 long ptr long)
@ stdcall SetupAddToSourceListA(long str)
diff --git a/dlls/setupapi/setupapi_private.h b/dlls/setupapi/setupapi_private.h
index 7681348a11c..edc833f5768 100644
index 9d3d19c84c0..c93cfd6af49 100644
--- a/dlls/setupapi/setupapi_private.h
+++ b/dlls/setupapi/setupapi_private.h
@@ -94,6 +94,8 @@ extern const WCHAR *DIRID_get_string( int dirid ) DECLSPEC_HIDDEN;
extern const WCHAR *PARSER_get_inf_filename( HINF hinf ) DECLSPEC_HIDDEN;
extern WCHAR *PARSER_get_dest_dir( INFCONTEXT *context ) DECLSPEC_HIDDEN;
@@ -86,6 +86,8 @@ extern const WCHAR *DIRID_get_string( int dirid );
extern const WCHAR *PARSER_get_inf_filename( HINF hinf );
extern WCHAR *PARSER_get_dest_dir( INFCONTEXT *context );
+extern WCHAR *get_destination_dir( HINF hinf, const WCHAR *section );
+
@@ -432,5 +432,5 @@ index 0cacf9a75aa..8e2eb88bf93 100644
+ test_SetupAddSectionToDiskSpaceListA();
}
--
2.35.1
2.40.1

View File

@@ -1,20 +1,20 @@
From c7ab99f5961daaf0c81a710d332dca5fc79528c0 Mon Sep 17 00:00:00 2001
From 81651a2975b37adfbdc393753804fd9d84f43442 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Michael=20M=C3=BCller?= <michael@fds-team.de>
Date: Sat, 2 Apr 2016 04:15:02 +0200
Subject: [PATCH] shell32: Add support for setting/getting PREFERREDDROPEFFECT
in IDataObject.
---
dlls/shell32/clipboard.c | 40 +++++++++++++++++++++++++++++++++++++
dlls/shell32/dataobject.c | 24 +++++++++++++++++++---
dlls/shell32/clipboard.c | 38 +++++++++++++++++++++++++++++++++++++
dlls/shell32/dataobject.c | 24 ++++++++++++++++++++---
dlls/shell32/shell32_main.h | 2 ++
3 files changed, 63 insertions(+), 3 deletions(-)
3 files changed, 61 insertions(+), 3 deletions(-)
diff --git a/dlls/shell32/clipboard.c b/dlls/shell32/clipboard.c
index 2f5c63bed9d..27c3421cf28 100644
index 487fd0dcf8c..68b671414a6 100644
--- a/dlls/shell32/clipboard.c
+++ b/dlls/shell32/clipboard.c
@@ -212,3 +214,41 @@ HGLOBAL RenderFILENAMEW (LPITEMIDLIST pidlRoot, LPITEMIDLIST * apidl, UINT cidl)
@@ -212,3 +212,41 @@ HGLOBAL RenderFILENAMEW (LPITEMIDLIST pidlRoot, LPITEMIDLIST * apidl, UINT cidl)
return hGlobal;
}
@@ -57,7 +57,7 @@ index 2f5c63bed9d..27c3421cf28 100644
+ return result;
+}
diff --git a/dlls/shell32/dataobject.c b/dlls/shell32/dataobject.c
index 3cd86845c42..cc7ab601bac 100644
index 3cd86845c42..202cd2dc0d1 100644
--- a/dlls/shell32/dataobject.c
+++ b/dlls/shell32/dataobject.c
@@ -193,7 +193,7 @@ LPENUMFORMATETC IEnumFORMATETC_Constructor(UINT cfmt, const FORMATETC afmt[])
@@ -133,18 +133,18 @@ index 3cd86845c42..cc7ab601bac 100644
TRACE("(%p)->(apidl=%p cidl=%u)\n",dto, apidl, cidl);
diff --git a/dlls/shell32/shell32_main.h b/dlls/shell32/shell32_main.h
index f9607585184..56f0a631d08 100644
index 5571da9f632..de6e8dfa9e6 100644
--- a/dlls/shell32/shell32_main.h
+++ b/dlls/shell32/shell32_main.h
@@ -141,6 +141,8 @@ HGLOBAL RenderHDROP(LPITEMIDLIST pidlRoot, LPITEMIDLIST * apidl, UINT cidl) DECL
HGLOBAL RenderSHELLIDLIST (LPITEMIDLIST pidlRoot, LPITEMIDLIST * apidl, UINT cidl) DECLSPEC_HIDDEN;
HGLOBAL RenderFILENAMEA (LPITEMIDLIST pidlRoot, LPITEMIDLIST * apidl, UINT cidl) DECLSPEC_HIDDEN;
HGLOBAL RenderFILENAMEW (LPITEMIDLIST pidlRoot, LPITEMIDLIST * apidl, UINT cidl) DECLSPEC_HIDDEN;
@@ -141,6 +141,8 @@ HGLOBAL RenderHDROP(LPITEMIDLIST pidlRoot, LPITEMIDLIST * apidl, UINT cidl);
HGLOBAL RenderSHELLIDLIST (LPITEMIDLIST pidlRoot, LPITEMIDLIST * apidl, UINT cidl);
HGLOBAL RenderFILENAMEA (LPITEMIDLIST pidlRoot, LPITEMIDLIST * apidl, UINT cidl);
HGLOBAL RenderFILENAMEW (LPITEMIDLIST pidlRoot, LPITEMIDLIST * apidl, UINT cidl);
+HGLOBAL RenderPREFERREDDROPEFFECT (DWORD value);
+HRESULT GetPREFERREDDROPEFFECT (STGMEDIUM *pmedium, DWORD *value);
/* Change Notification */
void InitChangeNotifications(void) DECLSPEC_HIDDEN;
void InitChangeNotifications(void);
--
2.40.1

View File

@@ -1,4 +1,4 @@
From 69b8c9461157d1b988ec039c4f7e7a467cb9e951 Mon Sep 17 00:00:00 2001
From d061f8ebe8c9858a249e0129350d8b7c59ceaee6 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Michael=20M=C3=BCller?= <michael@fds-team.de>
Date: Sun, 16 Aug 2015 17:34:22 +0200
Subject: [PATCH] shell32: Implement NewMenu with new folder item.
@@ -21,10 +21,10 @@ Correct header issue when compiling i386 (var_arg)
create mode 100644 dlls/shell32/shellnew.c
diff --git a/dlls/shell32/Makefile.in b/dlls/shell32/Makefile.in
index 9e2395126fc..3bba1b0e3fd 100644
index 8efcbfb4dbf..7f5586ad6a5 100644
--- a/dlls/shell32/Makefile.in
+++ b/dlls/shell32/Makefile.in
@@ -28,6 +28,7 @@ C_SRCS = \
@@ -29,6 +29,7 @@ C_SRCS = \
shelldispatch.c \
shellitem.c \
shelllink.c \
@@ -49,16 +49,16 @@ index dc65ed3728d..c5f4215196f 100644
threading(apartment),
uuid(00bb2763-6a77-11d0-a535-00c04fd7d062)
diff --git a/dlls/shell32/shell32_main.h b/dlls/shell32/shell32_main.h
index 7bb26e46a6e..f539a1b1e00 100644
index de6e8dfa9e6..12d2d84224a 100644
--- a/dlls/shell32/shell32_main.h
+++ b/dlls/shell32/shell32_main.h
@@ -101,6 +101,7 @@ HRESULT WINAPI RecycleBin_Constructor(IUnknown * pUnkOuter, REFIID riif, LPVOID
HRESULT WINAPI QueryAssociations_Constructor(IUnknown *pUnkOuter, REFIID riid, LPVOID *ppOutput) DECLSPEC_HIDDEN;
HRESULT WINAPI ExplorerBrowser_Constructor(IUnknown *pUnkOuter, REFIID riid, LPVOID *ppv) DECLSPEC_HIDDEN;
HRESULT WINAPI KnownFolderManager_Constructor(IUnknown *pUnkOuter, REFIID riid, LPVOID *ppv) DECLSPEC_HIDDEN;
+HRESULT WINAPI NewMenu_Constructor(IUnknown *outer, REFIID riid, LPVOID *ppv) DECLSPEC_HIDDEN;
HRESULT WINAPI IFileOperation_Constructor(IUnknown *outer, REFIID riid, void **out) DECLSPEC_HIDDEN;
HRESULT WINAPI ActiveDesktop_Constructor(IUnknown *outer, REFIID riid, void **out) DECLSPEC_HIDDEN;
HRESULT WINAPI QueryAssociations_Constructor(IUnknown *pUnkOuter, REFIID riid, LPVOID *ppOutput);
HRESULT WINAPI ExplorerBrowser_Constructor(IUnknown *pUnkOuter, REFIID riid, LPVOID *ppv);
HRESULT WINAPI KnownFolderManager_Constructor(IUnknown *pUnkOuter, REFIID riid, LPVOID *ppv);
+HRESULT WINAPI NewMenu_Constructor(IUnknown *outer, REFIID riid, LPVOID *ppv);
HRESULT WINAPI IFileOperation_Constructor(IUnknown *outer, REFIID riid, void **out);
HRESULT WINAPI ActiveDesktop_Constructor(IUnknown *outer, REFIID riid, void **out);
diff --git a/dlls/shell32/shellnew.c b/dlls/shell32/shellnew.c
new file mode 100644
@@ -564,10 +564,10 @@ index 00000000000..ba31b3787f8
+ return hr;
+}
diff --git a/dlls/shell32/shellole.c b/dlls/shell32/shellole.c
index 589e5c5170a..2984e691c17 100644
index 52123ac0004..256f6e45122 100644
--- a/dlls/shell32/shellole.c
+++ b/dlls/shell32/shellole.c
@@ -72,6 +72,7 @@ static const struct {
@@ -70,6 +70,7 @@ static const struct {
{&CLSID_MyComputer, ISF_MyComputer_Constructor},
{&CLSID_MyDocuments, MyDocuments_Constructor},
{&CLSID_NetworkPlaces, ISF_NetworkPlaces_Constructor},
@@ -576,10 +576,10 @@ index 589e5c5170a..2984e691c17 100644
{&CLSID_QueryAssociations, QueryAssociations_Constructor},
{&CLSID_RecycleBin, RecycleBin_Constructor},
diff --git a/dlls/shell32/tests/shlview.c b/dlls/shell32/tests/shlview.c
index a83f3137509..2781c2152f9 100644
index 89ff2e71eb0..2bfe543b61a 100644
--- a/dlls/shell32/tests/shlview.c
+++ b/dlls/shell32/tests/shlview.c
@@ -1478,7 +1478,6 @@ static void test_newmenu(void)
@@ -1482,7 +1482,6 @@ static void test_newmenu(void)
HRESULT hr;
hr = CoCreateInstance(&CLSID_NewMenu, NULL, CLSCTX_INPROC_SERVER, &IID_IUnknown, (void **)&unk);
@@ -587,7 +587,7 @@ index a83f3137509..2781c2152f9 100644
ok(hr == S_OK, "Failed to create NewMenu object, hr %#lx.\n", hr);
if (hr != S_OK)
{
@@ -1490,6 +1489,14 @@ static void test_newmenu(void)
@@ -1494,6 +1493,14 @@ static void test_newmenu(void)
ok(hr == S_OK, "Failed to get IShellExtInit, hr %#lx.\n", hr);
IUnknown_Release(unk2);
@@ -603,5 +603,5 @@ index a83f3137509..2781c2152f9 100644
ok(hr == S_OK, "Failed to get IContextMenu3, hr %#lx.\n", hr);
IUnknown_Release(unk2);
--
2.35.1
2.40.1

View File

@@ -1,4 +1,4 @@
From 2efe896d8b1b48a20a6f33691b0a2d12181124ca Mon Sep 17 00:00:00 2001
From 02e3cc8520790ddbae90b5b38421aa6218ca2b1e Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?R=C3=A9mi=20Bernon?= <rbernon@codeweavers.com>
Date: Thu, 23 Jan 2020 11:00:19 +0100
Subject: [PATCH] winex11.drv: Support XInput2 events for individual windows.
@@ -14,10 +14,10 @@ which can bring additional information.
5 files changed, 65 insertions(+), 17 deletions(-)
diff --git a/dlls/winex11.drv/desktop.c b/dlls/winex11.drv/desktop.c
index 8a5682c1acb..6a5770c7671 100644
index 687c0cf5a4c..01bd6a1b74a 100644
--- a/dlls/winex11.drv/desktop.c
+++ b/dlls/winex11.drv/desktop.c
@@ -379,6 +379,8 @@ BOOL X11DRV_CreateDesktop( const WCHAR *name, UINT width, UINT height )
@@ -86,6 +86,8 @@ BOOL X11DRV_CreateDesktop( const WCHAR *name, UINT width, UINT height )
0, 0, width, height, 0, default_visual.depth, InputOutput,
default_visual.visual, CWEventMask | CWCursor | CWColormap, &win_attr );
if (!win) return FALSE;
@@ -27,7 +27,7 @@ index 8a5682c1acb..6a5770c7671 100644
X11DRV_init_desktop( win, width, height );
diff --git a/dlls/winex11.drv/event.c b/dlls/winex11.drv/event.c
index a7793f0c399..e5021eb38ff 100644
index c3c8d9a4070..f6d9041ca65 100644
--- a/dlls/winex11.drv/event.c
+++ b/dlls/winex11.drv/event.c
@@ -235,6 +235,13 @@ static Bool filter_event( Display *display, XEvent *event, char *arg )
@@ -45,10 +45,10 @@ index a7793f0c399..e5021eb38ff 100644
case MotionNotify:
case EnterNotify:
diff --git a/dlls/winex11.drv/mouse.c b/dlls/winex11.drv/mouse.c
index 25077973f26..fbd463ce85d 100644
index a28746b9aef..c8c94733122 100644
--- a/dlls/winex11.drv/mouse.c
+++ b/dlls/winex11.drv/mouse.c
@@ -281,20 +281,32 @@ void x11drv_xinput_init(void)
@@ -280,20 +280,32 @@ void x11drv_xinput_init(void)
/***********************************************************************
@@ -86,7 +86,7 @@ index 25077973f26..fbd463ce85d 100644
mask.mask = mask_bits;
mask.mask_len = sizeof(mask_bits);
@@ -304,8 +316,9 @@ static void enable_xinput2(void)
@@ -303,8 +315,9 @@ static void enable_xinput2(void)
XISetMask( mask_bits, XI_RawMotion );
XISetMask( mask_bits, XI_ButtonPress );
@@ -97,7 +97,7 @@ index 25077973f26..fbd463ce85d 100644
pointer_info = pXIQueryDevice( data->display, data->xi2_core_pointer, &count );
update_relative_valuators( pointer_info->classes, pointer_info->num_classes );
pXIFreeDeviceInfo( pointer_info );
@@ -314,7 +327,7 @@ static void enable_xinput2(void)
@@ -313,7 +326,7 @@ static void enable_xinput2(void)
* no XI_DeviceChanged events happened. If any hierarchy change occurred that
* might be relevant here (eg. user switching mice after (un)plugging), a
* XI_DeviceChanged event will point us to the right slave. So this list is
@@ -106,7 +106,7 @@ index 25077973f26..fbd463ce85d 100644
*/
if (data->xi2_devices) pXIFreeDeviceInfo( data->xi2_devices );
data->xi2_devices = pXIQueryDevice( data->display, XIAllDevices, &data->xi2_device_count );
@@ -326,24 +339,37 @@ static void enable_xinput2(void)
@@ -325,24 +338,37 @@ static void enable_xinput2(void)
#endif
/***********************************************************************
@@ -150,7 +150,7 @@ index 25077973f26..fbd463ce85d 100644
pXIFreeDeviceInfo( data->xi2_devices );
data->x_valuator.number = -1;
data->y_valuator.number = -1;
@@ -352,6 +378,7 @@ static void disable_xinput2(void)
@@ -351,6 +377,7 @@ static void disable_xinput2(void)
data->xi2_devices = NULL;
data->xi2_core_pointer = 0;
data->xi2_current_slave = 0;
@@ -158,7 +158,7 @@ index 25077973f26..fbd463ce85d 100644
#endif
}
@@ -384,7 +411,7 @@ static BOOL grab_clipping_window( const RECT *clip )
@@ -383,7 +410,7 @@ static BOOL grab_clipping_window( const RECT *clip )
}
/* enable XInput2 unless we are already clipping */
@@ -167,7 +167,7 @@ index 25077973f26..fbd463ce85d 100644
if (data->xi2_state != xi_enabled)
{
@@ -424,7 +451,7 @@ static BOOL grab_clipping_window( const RECT *clip )
@@ -423,7 +450,7 @@ static BOOL grab_clipping_window( const RECT *clip )
if (!clipping_cursor)
{
@@ -176,7 +176,7 @@ index 25077973f26..fbd463ce85d 100644
return FALSE;
}
clip_rect = *clip;
@@ -453,7 +480,6 @@ void ungrab_clipping_window(void)
@@ -452,7 +479,6 @@ void ungrab_clipping_window(void)
if (clipping_cursor) XUngrabPointer( data->display, CurrentTime );
clipping_cursor = FALSE;
data->clipping_cursor = FALSE;
@@ -185,7 +185,7 @@ index 25077973f26..fbd463ce85d 100644
/***********************************************************************
diff --git a/dlls/winex11.drv/window.c b/dlls/winex11.drv/window.c
index 177cdc0faa3..e915ef4fe8b 100644
index ed3728773af..f043e64047e 100644
--- a/dlls/winex11.drv/window.c
+++ b/dlls/winex11.drv/window.c
@@ -362,6 +362,7 @@ static void sync_window_style( struct x11drv_win_data *data )
@@ -196,7 +196,7 @@ index 177cdc0faa3..e915ef4fe8b 100644
}
}
@@ -1647,6 +1648,7 @@ static void create_whole_window( struct x11drv_win_data *data )
@@ -1665,6 +1666,7 @@ static void create_whole_window( struct x11drv_win_data *data )
data->vis.visual, mask, &attr );
if (!data->whole_window) goto done;
@@ -204,7 +204,7 @@ index 177cdc0faa3..e915ef4fe8b 100644
set_initial_wm_hints( data->display, data->whole_window );
set_wm_hints( data );
@@ -1980,6 +1982,7 @@ BOOL X11DRV_CreateWindow( HWND hwnd )
@@ -2003,6 +2005,7 @@ BOOL X11DRV_CreateWindow( HWND hwnd )
data->clip_window = XCreateWindow( data->display, root_window, 0, 0, 1, 1, 0, 0,
InputOnly, default_visual.visual,
CWOverrideRedirect | CWEventMask, &attr );
@@ -213,10 +213,10 @@ index 177cdc0faa3..e915ef4fe8b 100644
NtUserSetProp( hwnd, clip_window_prop, (HANDLE)data->clip_window );
X11DRV_DisplayDevices_RegisterEventHandlers();
diff --git a/dlls/winex11.drv/x11drv.h b/dlls/winex11.drv/x11drv.h
index 4343a23f4d0..d8f7fa1441b 100644
index 16fc2843880..e8cc85a15bd 100644
--- a/dlls/winex11.drv/x11drv.h
+++ b/dlls/winex11.drv/x11drv.h
@@ -264,6 +264,8 @@ extern void X11DRV_ThreadDetach(void) DECLSPEC_HIDDEN;
@@ -263,6 +263,8 @@ extern void X11DRV_ThreadDetach(void) DECLSPEC_HIDDEN;
extern void X11DRV_Xcursor_Init(void) DECLSPEC_HIDDEN;
extern void x11drv_xinput_load(void) DECLSPEC_HIDDEN;
extern void x11drv_xinput_init(void) DECLSPEC_HIDDEN;
@@ -225,7 +225,7 @@ index 4343a23f4d0..d8f7fa1441b 100644
extern DWORD copy_image_bits( BITMAPINFO *info, BOOL is_r8g8b8, XImage *image,
const struct gdi_image_bits *src_bits, struct gdi_image_bits *dst_bits,
@@ -379,6 +381,14 @@ struct x11drv_escape_flush_gl_drawable
@@ -377,6 +379,14 @@ struct x11drv_escape_flush_gl_drawable
* X11 USER driver
*/
@@ -240,7 +240,7 @@ index 4343a23f4d0..d8f7fa1441b 100644
struct x11drv_thread_data
{
Display *display;
@@ -394,7 +404,7 @@ struct x11drv_thread_data
@@ -391,7 +401,7 @@ struct x11drv_thread_data
Window clip_window; /* window used for cursor clipping */
BOOL clipping_cursor; /* whether thread is currently clipping the cursor */
#ifdef HAVE_X11_EXTENSIONS_XINPUT2_H

View File

@@ -0,0 +1,60 @@
From 6071310090160f128f05b2ea8ef050e35170f037 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Aida=20Jonikien=C4=97?= <aidas957@gmail.com>
Date: Mon, 14 Aug 2023 08:52:55 +1000
Subject: [PATCH] winex11: Fixup virtual windows creation
---
dlls/winex11.drv/window.c | 10 ++++++++--
dlls/winex11.drv/x11drv_main.c | 2 +-
2 files changed, 9 insertions(+), 3 deletions(-)
diff --git a/dlls/winex11.drv/window.c b/dlls/winex11.drv/window.c
index 9d3afc8ed13..e008ec1a890 100644
--- a/dlls/winex11.drv/window.c
+++ b/dlls/winex11.drv/window.c
@@ -1905,6 +1905,7 @@ static BOOL create_desktop_win_data( Window win, HWND hwnd )
void X11DRV_SetDesktopWindow( HWND hwnd )
{
unsigned int width, height;
+ Display *display;
/* retrieve the real size of the desktop */
SERVER_START_REQ( get_window_rectangles )
@@ -1943,14 +1944,19 @@ void X11DRV_SetDesktopWindow( HWND hwnd )
{
ERR( "Failed to create virtual desktop window data\n" );
root_window = DefaultRootWindow( gdi_display );
+ return;
}
- else if (is_desktop_fullscreen())
+
+ display = x11drv_thread_data()->display;
+ if (is_desktop_fullscreen())
{
- Display *display = x11drv_thread_data()->display;
TRACE("setting desktop to fullscreen\n");
XChangeProperty( display, root_window, x11drv_atom(_NET_WM_STATE), XA_ATOM, 32, PropModeReplace,
(unsigned char*)&x11drv_atom(_NET_WM_STATE_FULLSCREEN), 1 );
}
+
+ FIXME("Enabling xinput in desktop thread\n");
+ x11drv_xinput_enable( display, DefaultRootWindow( display ), PointerMotionMask );
}
else
{
diff --git a/dlls/winex11.drv/x11drv_main.c b/dlls/winex11.drv/x11drv_main.c
index 26cf404731b..0dc350b3a1b 100644
--- a/dlls/winex11.drv/x11drv_main.c
+++ b/dlls/winex11.drv/x11drv_main.c
@@ -881,7 +881,7 @@ struct x11drv_thread_data *x11drv_init_thread_data(void)
if (use_xim) xim_thread_attach( data );
x11drv_xinput_init();
- if (NtUserGetWindowThread( NtUserGetDesktopWindow(), NULL ) == GetCurrentThreadId())
+ if (NtUserGetWindowThread( UlongToHandle( NtUserGetThreadInfo()->top_window ), NULL ) == GetCurrentThreadId())
x11drv_xinput_enable( data->display, DefaultRootWindow( data->display ), PointerMotionMask );
return data;
--
2.40.1

View File

@@ -1,7 +1,7 @@
From 708e3732ca7672cdde41f3662664265de7f4129e Mon Sep 17 00:00:00 2001
From 226088587d4ba04bd8f9ee05b300ce7d03377187 Mon Sep 17 00:00:00 2001
From: Alistair Leslie-Hughes <leslie_alistair@hotmail.com>
Date: Wed, 17 May 2023 08:35:40 +1000
Subject: [PATCH] Update vkd3d to 771e442af16228a977eebba82224f06f6d0202fe
Subject: [PATCH 1/3] Update vkd3d to 771e442af16228a977eebba82224f06f6d0202fe
(1.8)
---

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