You've already forked wine-staging
mirror of
https://gitlab.winehq.org/wine/wine-staging.git
synced 2025-04-13 14:42:51 -07:00
Compare commits
39 Commits
Author | SHA1 | Date | |
---|---|---|---|
|
53515d7e75 | ||
|
2736fc8378 | ||
|
594626def2 | ||
|
920fd825cf | ||
|
87c5a4c7a0 | ||
|
b829697078 | ||
|
102992bb70 | ||
|
0d02a7aa99 | ||
|
ea03a5cda2 | ||
|
7f7f0fc98d | ||
|
9763d6e295 | ||
|
5361c0277d | ||
|
05319e0efd | ||
|
cfd8b7de65 | ||
|
cdcdde3d46 | ||
|
520ac85b6f | ||
|
142c3eb080 | ||
|
10a0e0b89e | ||
|
fac630367d | ||
|
da76250fad | ||
|
9d9c5c700a | ||
|
0b96046f15 | ||
|
cc31308c32 | ||
|
559b29238c | ||
|
e2d51dfc4b | ||
|
d3de5eadd9 | ||
|
4fa70d510c | ||
|
505a83ad9e | ||
|
a1e634bca9 | ||
|
13a418812a | ||
|
965789d221 | ||
|
2a2c8b5228 | ||
|
c210ef9f59 | ||
|
dab36ebe1e | ||
|
1ca1b3b602 | ||
|
2b16926188 | ||
|
bbbe9cbbc7 | ||
|
1142823d53 | ||
|
390b1f4127 |
@@ -1,4 +1,4 @@
|
||||
From 7362e037e8160046fffcf062a663ea8e7ac45290 Mon Sep 17 00:00:00 2001
|
||||
From f9f5002e4ce6417dd196d53b50c51a3b224015d3 Mon Sep 17 00:00:00 2001
|
||||
From: Dmitry Timoshkov <dmitry@baikal.ru>
|
||||
Date: Tue, 12 Nov 2019 18:13:20 +0800
|
||||
Subject: [PATCH] comctl32: Bump version to 6.0.
|
||||
@@ -14,12 +14,12 @@ Signed-off-by: Dmitry Timoshkov <dmitry@baikal.ru>
|
||||
3 files changed, 3 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/dlls/comctl32/comctl32.h b/dlls/comctl32/comctl32.h
|
||||
index 7dfdf089eb1..17ec7eeab40 100644
|
||||
index 51f4337add2..3fe8905abea 100644
|
||||
--- a/dlls/comctl32/comctl32.h
|
||||
+++ b/dlls/comctl32/comctl32.h
|
||||
@@ -194,7 +194,7 @@ BOOL Str_SetPtrAtoW (LPWSTR *lppDest, LPCSTR lpSrc) DECLSPEC_HIDDEN;
|
||||
BOOL Str_SetPtrWtoA (LPSTR *lppDest, LPCWSTR lpSrc) DECLSPEC_HIDDEN;
|
||||
BOOL imagelist_has_alpha(HIMAGELIST, UINT) DECLSPEC_HIDDEN;
|
||||
@@ -194,7 +194,7 @@ BOOL Str_SetPtrAtoW(LPWSTR *lppDest, LPCSTR lpSrc);
|
||||
BOOL Str_SetPtrWtoA(LPSTR *lppDest, LPCWSTR lpSrc);
|
||||
BOOL imagelist_has_alpha(HIMAGELIST, UINT);
|
||||
|
||||
-#define COMCTL32_VERSION_MINOR 81
|
||||
+#define COMCTL32_VERSION_MINOR 0
|
||||
@@ -53,5 +53,5 @@ index a54de13d8b2..e0b0e22d4dc 100644
|
||||
#define ICC_LISTVIEW_CLASSES 0x00000001 /* listview, header */
|
||||
#define ICC_TREEVIEW_CLASSES 0x00000002 /* treeview, tooltips */
|
||||
--
|
||||
2.35.1
|
||||
2.40.1
|
||||
|
||||
|
@@ -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
|
||||
|
||||
|
@@ -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
|
||||
|
||||
|
@@ -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
|
||||
|
@@ -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)
|
||||
|
File diff suppressed because it is too large
Load Diff
2
patches/ddraw-GetPickRecords/definition
Normal file
2
patches/ddraw-GetPickRecords/definition
Normal file
@@ -0,0 +1,2 @@
|
||||
Fixes: [10729] ddraw: Implement Pick() and GetPickRecords().
|
||||
|
@@ -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;
|
||||
|
@@ -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
|
||||
|
@@ -1,4 +1,4 @@
|
||||
From 9eccf33cb881c2e847a22a72f1c8d8b10886d531 Mon Sep 17 00:00:00 2001
|
||||
From 87bf08071997f446498bdea2d18d1bb539a1990e Mon Sep 17 00:00:00 2001
|
||||
From: Alistair Leslie-Hughes <leslie_alistair@hotmail.com>
|
||||
Date: Fri, 2 Dec 2022 14:41:30 +1100
|
||||
Subject: [PATCH] dmime: Implement IDirectMusicSegment8 Download
|
||||
@@ -10,7 +10,7 @@ Subject: [PATCH] dmime: Implement IDirectMusicSegment8 Download
|
||||
3 files changed, 93 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/dlls/dmime/dmime_private.h b/dlls/dmime/dmime_private.h
|
||||
index 7cdc1534866..39f6cdce790 100644
|
||||
index 6102fd5ec2f..da40b58ad9b 100644
|
||||
--- a/dlls/dmime/dmime_private.h
|
||||
+++ b/dlls/dmime/dmime_private.h
|
||||
@@ -71,6 +71,8 @@ extern void set_audiopath_perf_pointer(IDirectMusicAudioPath*,IDirectMusicPerfor
|
||||
@@ -23,25 +23,25 @@ index 7cdc1534866..39f6cdce790 100644
|
||||
* Auxiliary definitions
|
||||
*/
|
||||
diff --git a/dlls/dmime/performance.c b/dlls/dmime/performance.c
|
||||
index d69a27540d6..5578c3e523b 100644
|
||||
index 1f8de0837d5..622939f3553 100644
|
||||
--- a/dlls/dmime/performance.c
|
||||
+++ b/dlls/dmime/performance.c
|
||||
@@ -252,6 +252,13 @@ static inline IDirectMusicPerformance8Impl *impl_from_IDirectMusicPerformance8(I
|
||||
return CONTAINING_RECORD(iface, IDirectMusicPerformance8Impl, IDirectMusicPerformance8_iface);
|
||||
@@ -253,6 +253,13 @@ static inline struct performance *impl_from_IDirectMusicPerformance8(IDirectMusi
|
||||
return CONTAINING_RECORD(iface, struct performance, IDirectMusicPerformance8_iface);
|
||||
}
|
||||
|
||||
+IDirectSound *get_dsound_interface(IDirectMusicPerformance8* iface)
|
||||
+{
|
||||
+ IDirectMusicPerformance8Impl *This = impl_from_IDirectMusicPerformance8(iface);
|
||||
+ struct performance *This = impl_from_IDirectMusicPerformance8(iface);
|
||||
+ return This->dsound;
|
||||
+}
|
||||
+
|
||||
+
|
||||
/* IDirectMusicPerformance8 IUnknown part: */
|
||||
static HRESULT WINAPI IDirectMusicPerformance8Impl_QueryInterface(IDirectMusicPerformance8 *iface,
|
||||
REFIID riid, void **ppv)
|
||||
static HRESULT WINAPI performance_QueryInterface(IDirectMusicPerformance8 *iface, REFIID riid, void **ret_iface)
|
||||
{
|
||||
diff --git a/dlls/dmime/segment.c b/dlls/dmime/segment.c
|
||||
index 6bf9f3abf0c..0ea0c15c5e0 100644
|
||||
index 39a5333fbbb..ce49ddc9940 100644
|
||||
--- a/dlls/dmime/segment.c
|
||||
+++ b/dlls/dmime/segment.c
|
||||
@@ -37,6 +37,7 @@ typedef struct IDirectMusicSegment8Impl {
|
||||
|
@@ -1,4 +1,4 @@
|
||||
From 8f92585ece53fbcd940fe028dd7ee24d6b854ec3 Mon Sep 17 00:00:00 2001
|
||||
From 43007318a6303312b6226c9ede009e4299826af3 Mon Sep 17 00:00:00 2001
|
||||
From: Alistair Leslie-Hughes <leslie_alistair@hotmail.com>
|
||||
Date: Mon, 12 Dec 2022 15:20:10 +1100
|
||||
Subject: [PATCH] dmime: Play a sound in IDirectMusicPerformance8 PlaySegmentEx
|
||||
@@ -10,7 +10,7 @@ Subject: [PATCH] dmime: Play a sound in IDirectMusicPerformance8 PlaySegmentEx
|
||||
3 files changed, 26 insertions(+), 6 deletions(-)
|
||||
|
||||
diff --git a/dlls/dmime/dmime_private.h b/dlls/dmime/dmime_private.h
|
||||
index 39f6cdce790..6cd45697e2f 100644
|
||||
index da40b58ad9b..4532528f535 100644
|
||||
--- a/dlls/dmime/dmime_private.h
|
||||
+++ b/dlls/dmime/dmime_private.h
|
||||
@@ -72,6 +72,7 @@ extern void set_audiopath_dsound_buffer(IDirectMusicAudioPath*,IDirectSoundBuffe
|
||||
@@ -22,15 +22,15 @@ index 39f6cdce790..6cd45697e2f 100644
|
||||
/*****************************************************************************
|
||||
* Auxiliary definitions
|
||||
diff --git a/dlls/dmime/performance.c b/dlls/dmime/performance.c
|
||||
index 5578c3e523b..03e59e95af3 100644
|
||||
index 622939f3553..c7b149f0686 100644
|
||||
--- a/dlls/dmime/performance.c
|
||||
+++ b/dlls/dmime/performance.c
|
||||
@@ -1043,13 +1043,26 @@ static HRESULT WINAPI IDirectMusicPerformance8Impl_PlaySegmentEx(IDirectMusicPer
|
||||
__int64 i64StartTime, IDirectMusicSegmentState **ppSegmentState, IUnknown *pFrom,
|
||||
IUnknown *pAudioPath)
|
||||
@@ -1028,13 +1028,26 @@ static HRESULT WINAPI performance_PlaySegmentEx(IDirectMusicPerformance8 *iface,
|
||||
WCHAR *pwzSegmentName, IUnknown *pTransition, DWORD dwFlags, __int64 i64StartTime,
|
||||
IDirectMusicSegmentState **ppSegmentState, IUnknown *pFrom, IUnknown *pAudioPath)
|
||||
{
|
||||
- IDirectMusicPerformance8Impl *This = impl_from_IDirectMusicPerformance8(iface);
|
||||
+ IDirectMusicPerformance8Impl *This = impl_from_IDirectMusicPerformance8(iface);
|
||||
- struct performance *This = impl_from_IDirectMusicPerformance8(iface);
|
||||
+ struct performance *This = impl_from_IDirectMusicPerformance8(iface);
|
||||
+ IDirectMusicSegment8 *segment;
|
||||
+ IDirectSoundBuffer *buffer;
|
||||
+ HRESULT hr;
|
||||
@@ -57,9 +57,9 @@ index 5578c3e523b..03e59e95af3 100644
|
||||
+ return S_OK;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI IDirectMusicPerformance8Impl_StopEx(IDirectMusicPerformance8 *iface,
|
||||
static HRESULT WINAPI performance_StopEx(IDirectMusicPerformance8 *iface, IUnknown *pObjectToStop,
|
||||
diff --git a/dlls/dmime/segment.c b/dlls/dmime/segment.c
|
||||
index 0ea0c15c5e0..b21f93bbfc6 100644
|
||||
index ce49ddc9940..ad121736acd 100644
|
||||
--- a/dlls/dmime/segment.c
|
||||
+++ b/dlls/dmime/segment.c
|
||||
@@ -47,6 +47,12 @@ static inline IDirectMusicSegment8Impl *impl_from_IDirectMusicSegment8(IDirectMu
|
||||
|
@@ -1,96 +0,0 @@
|
||||
From fcf816014b4f7ce60b544f5a50a5a88ade3b055b Mon Sep 17 00:00:00 2001
|
||||
From: Dmitry Timoshkov <dmitry@baikal.ru>
|
||||
Date: Thu, 1 Jun 2023 14:30:10 +0300
|
||||
Subject: [PATCH] dnsapi/tests: Add some tests for DNS_TYPE_SRV messages.
|
||||
|
||||
Signed-off-by: Dmitry Timoshkov <dmitry@baikal.ru>
|
||||
---
|
||||
dlls/dnsapi/tests/record.c | 65 ++++++++++++++++++++++++++++++++++++++
|
||||
1 file changed, 65 insertions(+)
|
||||
|
||||
diff --git a/dlls/dnsapi/tests/record.c b/dlls/dnsapi/tests/record.c
|
||||
index 20738de3618..8abcdadaacc 100644
|
||||
--- a/dlls/dnsapi/tests/record.c
|
||||
+++ b/dlls/dnsapi/tests/record.c
|
||||
@@ -193,6 +193,28 @@ static BYTE msg_types[] = /* various record types */
|
||||
/* KEY */ 0xc0, 0x0c, 0x00, 0x19, 0x00, 0x01, 0x04, 0x05, 0x06, 0x07, 0x00, 0x06, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66,
|
||||
/* TXT */ 0x01, 't', 0x01, 'x', 0x00, 0x00, 0x10, 0x00, 0x01, 0x04, 0x05, 0x06, 0x07, 0x00, 0x09, 0x02, 'z', 'y', 0x00, 0x04, 'X', 'Y', 0xc3, 0xa9
|
||||
};
|
||||
+static BYTE msg_question_srv[] = /* SRV question only */
|
||||
+{
|
||||
+ 0x12, 0x34, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
+ 5,'_','l','d','a','p',4,'_','t','c','p',2,'d','c',6,'_','m','s','d','c','s',6,'w','i','n','e','h','q',3,'o','r','g',0x00,0x00,0x00,0x21,0x00
|
||||
+};
|
||||
+static BYTE msg_answer_srv[] = /* SRV answer only */
|
||||
+{
|
||||
+ 0x12, 0x34, 0x81, 0x80, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
+ 5,'_','l','d','a','p',4,'_','t','c','p',2,'d','c',6,'_','m','s','d','c','s',6,'w','i','n','e','h','q',3,'o','r','g',0x00,
|
||||
+ 0x00,0x21,0x00,0x01,0x04,0x05,0x06,0x07,
|
||||
+ 0x00,0x15,0x00,0x00,0x00,0x00,0x01,0x85,
|
||||
+ 2,'d','c',6,'w','i','n','e','h','q',3,'o','r','g',0x00
|
||||
+};
|
||||
+static BYTE msg_full_srv[] = /* SRV question + answer */
|
||||
+{
|
||||
+ 0x12, 0x34, 0x81, 0x80, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
+ 5,'_','l','d','a','p',4,'_','t','c','p',2,'d','c',6,'_','m','s','d','c','s',6,'w','i','n','e','h','q',3,'o','r','g',0x00,
|
||||
+ 0x00,0x21,0x00,0x01,
|
||||
+ 0xc0,0x0c,0x00,0x21,0x00,0x01,0x04,0x05,0x06,0x07,
|
||||
+ 0x00,0x15,0x00,0x00,0x00,0x00,0x01,0x85,
|
||||
+ 2,'d','c',6,'w','i','n','e','h','q',3,'o','r','g',0x00
|
||||
+};
|
||||
|
||||
static void test_DnsExtractRecordsFromMessage(void)
|
||||
{
|
||||
@@ -200,6 +222,49 @@ static void test_DnsExtractRecordsFromMessage(void)
|
||||
DNS_RECORDA *rec, *r;
|
||||
DNS_RECORDW *recW, *rW;
|
||||
|
||||
+ rec = NULL;
|
||||
+ ret = DnsExtractRecordsFromMessage_UTF8( (DNS_MESSAGE_BUFFER *)msg_full_srv, sizeof(msg_full_srv), &rec );
|
||||
+ todo_wine
|
||||
+ ok( !ret, "failed %ld\n", ret );
|
||||
+ todo_wine
|
||||
+ ok( rec != NULL, "record not set\n" );
|
||||
+ if (!rec) goto next;
|
||||
+ ok( !strcmp( rec->pName, "_ldap._tcp.dc._msdcs.winehq.org" ), "wrong name %s\n", rec->pName );
|
||||
+ ok( rec->Flags.S.Section == DnsSectionAnswer, "wrong section %u\n", rec->Flags.S.Section );
|
||||
+ ok( rec->Flags.S.CharSet == DnsCharSetUtf8, "wrong charset %u\n", rec->Flags.S.CharSet );
|
||||
+ ok( rec->wType == DNS_TYPE_SRV, "wrong type %u\n", rec->wType );
|
||||
+ todo_wine
|
||||
+ ok( rec->wDataLength == sizeof(DNS_SRV_DATAA) + strlen( "dc.winehq.org" ) + 1, "wrong len %u\n", rec->wDataLength );
|
||||
+ ok( rec->dwTtl == 0x04050607, "wrong ttl %#lx\n", rec->dwTtl );
|
||||
+ ok( !strcmp( rec->Data.SRV.pNameTarget, "dc.winehq.org"), "wrong target %s\n", rec->Data.SRV.pNameTarget );
|
||||
+ ok( !rec->pNext, "next record %p\n", rec->pNext );
|
||||
+ DnsRecordListFree( (DNS_RECORD *)rec, DnsFreeRecordList );
|
||||
+
|
||||
+next:
|
||||
+ rec = (void *)0xdeadbeef;
|
||||
+ ret = DnsExtractRecordsFromMessage_UTF8( (DNS_MESSAGE_BUFFER *)msg_question_srv, sizeof(msg_question_srv), &rec );
|
||||
+ ok( !ret, "failed %ld\n", ret );
|
||||
+ ok( !rec, "record %p\n", rec );
|
||||
+
|
||||
+ rec = NULL;
|
||||
+ ret = DnsExtractRecordsFromMessage_UTF8( (DNS_MESSAGE_BUFFER *)msg_answer_srv, sizeof(msg_answer_srv), &rec );
|
||||
+ todo_wine
|
||||
+ ok( !ret, "failed %ld\n", ret );
|
||||
+ todo_wine
|
||||
+ ok( rec != NULL, "record not set\n" );
|
||||
+ if (!rec) goto next2;
|
||||
+ ok( !strcmp( rec->pName, "_ldap._tcp.dc._msdcs.winehq.org" ), "wrong name %s\n", rec->pName );
|
||||
+ ok( rec->Flags.S.Section == DnsSectionAnswer, "wrong section %u\n", rec->Flags.S.Section );
|
||||
+ ok( rec->Flags.S.CharSet == DnsCharSetUtf8, "wrong charset %u\n", rec->Flags.S.CharSet );
|
||||
+ ok( rec->wType == DNS_TYPE_SRV, "wrong type %u\n", rec->wType );
|
||||
+ todo_wine
|
||||
+ ok( rec->wDataLength == sizeof(DNS_SRV_DATAA) + strlen( "dc.winehq.org" ) + 1, "wrong len %u\n", rec->wDataLength );
|
||||
+ ok( rec->dwTtl == 0x04050607, "wrong ttl %#lx\n", rec->dwTtl );
|
||||
+ ok( !strcmp( rec->Data.SRV.pNameTarget, "dc.winehq.org"), "wrong target %s\n", rec->Data.SRV.pNameTarget );
|
||||
+ ok( !rec->pNext, "next record %p\n", rec->pNext );
|
||||
+ DnsRecordListFree( (DNS_RECORD *)rec, DnsFreeRecordList );
|
||||
+
|
||||
+next2:
|
||||
ret = DnsExtractRecordsFromMessage_UTF8( (DNS_MESSAGE_BUFFER *)msg_empty, sizeof(msg_empty) - 1, &rec );
|
||||
ok( ret == ERROR_INVALID_PARAMETER || broken(ret == DNS_ERROR_BAD_PACKET) /* win7 */,
|
||||
"failed %ld\n", ret );
|
||||
--
|
||||
2.40.1
|
||||
|
@@ -1,72 +0,0 @@
|
||||
From 3c5ac02e18d5898d68c01f6a58996dc47e5582db Mon Sep 17 00:00:00 2001
|
||||
From: Dmitry Timoshkov <dmitry@baikal.ru>
|
||||
Date: Thu, 1 Jun 2023 14:32:55 +0300
|
||||
Subject: [PATCH] dnsapi: Accept name records of exact size at the end of the
|
||||
packet.
|
||||
|
||||
Signed-off-by: Dmitry Timoshkov <dmitry@baikal.ru>
|
||||
---
|
||||
dlls/dnsapi/record.c | 2 +-
|
||||
dlls/dnsapi/tests/record.c | 8 --------
|
||||
2 files changed, 1 insertion(+), 9 deletions(-)
|
||||
|
||||
diff --git a/dlls/dnsapi/record.c b/dlls/dnsapi/record.c
|
||||
index 01786842b73..cfd55a44852 100644
|
||||
--- a/dlls/dnsapi/record.c
|
||||
+++ b/dlls/dnsapi/record.c
|
||||
@@ -199,7 +199,7 @@ static const BYTE *get_name( const BYTE *base, const BYTE *end, const BYTE *ptr,
|
||||
return NULL;
|
||||
}
|
||||
}
|
||||
- if (ptr >= end) return NULL;
|
||||
+ if (ptr > end) return NULL;
|
||||
if (out == name) *out++ = '.';
|
||||
*out = 0;
|
||||
return next ? next : ptr;
|
||||
diff --git a/dlls/dnsapi/tests/record.c b/dlls/dnsapi/tests/record.c
|
||||
index 8abcdadaacc..340d10f6024 100644
|
||||
--- a/dlls/dnsapi/tests/record.c
|
||||
+++ b/dlls/dnsapi/tests/record.c
|
||||
@@ -224,11 +224,8 @@ static void test_DnsExtractRecordsFromMessage(void)
|
||||
|
||||
rec = NULL;
|
||||
ret = DnsExtractRecordsFromMessage_UTF8( (DNS_MESSAGE_BUFFER *)msg_full_srv, sizeof(msg_full_srv), &rec );
|
||||
- todo_wine
|
||||
ok( !ret, "failed %ld\n", ret );
|
||||
- todo_wine
|
||||
ok( rec != NULL, "record not set\n" );
|
||||
- if (!rec) goto next;
|
||||
ok( !strcmp( rec->pName, "_ldap._tcp.dc._msdcs.winehq.org" ), "wrong name %s\n", rec->pName );
|
||||
ok( rec->Flags.S.Section == DnsSectionAnswer, "wrong section %u\n", rec->Flags.S.Section );
|
||||
ok( rec->Flags.S.CharSet == DnsCharSetUtf8, "wrong charset %u\n", rec->Flags.S.CharSet );
|
||||
@@ -240,7 +237,6 @@ static void test_DnsExtractRecordsFromMessage(void)
|
||||
ok( !rec->pNext, "next record %p\n", rec->pNext );
|
||||
DnsRecordListFree( (DNS_RECORD *)rec, DnsFreeRecordList );
|
||||
|
||||
-next:
|
||||
rec = (void *)0xdeadbeef;
|
||||
ret = DnsExtractRecordsFromMessage_UTF8( (DNS_MESSAGE_BUFFER *)msg_question_srv, sizeof(msg_question_srv), &rec );
|
||||
ok( !ret, "failed %ld\n", ret );
|
||||
@@ -248,11 +244,8 @@ next:
|
||||
|
||||
rec = NULL;
|
||||
ret = DnsExtractRecordsFromMessage_UTF8( (DNS_MESSAGE_BUFFER *)msg_answer_srv, sizeof(msg_answer_srv), &rec );
|
||||
- todo_wine
|
||||
ok( !ret, "failed %ld\n", ret );
|
||||
- todo_wine
|
||||
ok( rec != NULL, "record not set\n" );
|
||||
- if (!rec) goto next2;
|
||||
ok( !strcmp( rec->pName, "_ldap._tcp.dc._msdcs.winehq.org" ), "wrong name %s\n", rec->pName );
|
||||
ok( rec->Flags.S.Section == DnsSectionAnswer, "wrong section %u\n", rec->Flags.S.Section );
|
||||
ok( rec->Flags.S.CharSet == DnsCharSetUtf8, "wrong charset %u\n", rec->Flags.S.CharSet );
|
||||
@@ -264,7 +257,6 @@ next:
|
||||
ok( !rec->pNext, "next record %p\n", rec->pNext );
|
||||
DnsRecordListFree( (DNS_RECORD *)rec, DnsFreeRecordList );
|
||||
|
||||
-next2:
|
||||
ret = DnsExtractRecordsFromMessage_UTF8( (DNS_MESSAGE_BUFFER *)msg_empty, sizeof(msg_empty) - 1, &rec );
|
||||
ok( ret == ERROR_INVALID_PARAMETER || broken(ret == DNS_ERROR_BAD_PACKET) /* win7 */,
|
||||
"failed %ld\n", ret );
|
||||
--
|
||||
2.40.1
|
||||
|
@@ -1,49 +0,0 @@
|
||||
From 623038324e863d3438243f75f5726291e5ee3ac2 Mon Sep 17 00:00:00 2001
|
||||
From: Dmitry Timoshkov <dmitry@baikal.ru>
|
||||
Date: Thu, 1 Jun 2023 14:48:23 +0300
|
||||
Subject: [PATCH] dnsapi: Set correct wDataLength for DNS_TYPE_SRV records.
|
||||
|
||||
Signed-off-by: Dmitry Timoshkov <dmitry@baikal.ru>
|
||||
---
|
||||
dlls/dnsapi/record.c | 4 ++++
|
||||
dlls/dnsapi/tests/record.c | 2 --
|
||||
2 files changed, 4 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/dlls/dnsapi/record.c b/dlls/dnsapi/record.c
|
||||
index cfd55a44852..1b4cbfeac0f 100644
|
||||
--- a/dlls/dnsapi/record.c
|
||||
+++ b/dlls/dnsapi/record.c
|
||||
@@ -1046,6 +1046,10 @@ static DNS_STATUS extract_rdata( const BYTE *base, const BYTE *end, const BYTE *
|
||||
if (!get_name( base, end, pos, name )) return DNS_ERROR_BAD_PACKET;
|
||||
if (!(r->Data.SRV.pNameTarget = strdupX( name, in, out ))) return ERROR_NOT_ENOUGH_MEMORY;
|
||||
r->wDataLength = sizeof(DNS_SRV_DATAA);
|
||||
+ if (out == DnsCharSetUnicode)
|
||||
+ r->wDataLength += (wcslen( (const WCHAR *)r->Data.SRV.pNameTarget ) + 1) * sizeof(WCHAR);
|
||||
+ else
|
||||
+ r->wDataLength += strlen( r->Data.SRV.pNameTarget ) + 1;
|
||||
break;
|
||||
|
||||
case DNS_TYPE_HINFO:
|
||||
diff --git a/dlls/dnsapi/tests/record.c b/dlls/dnsapi/tests/record.c
|
||||
index 340d10f6024..d340c064554 100644
|
||||
--- a/dlls/dnsapi/tests/record.c
|
||||
+++ b/dlls/dnsapi/tests/record.c
|
||||
@@ -230,7 +230,6 @@ static void test_DnsExtractRecordsFromMessage(void)
|
||||
ok( rec->Flags.S.Section == DnsSectionAnswer, "wrong section %u\n", rec->Flags.S.Section );
|
||||
ok( rec->Flags.S.CharSet == DnsCharSetUtf8, "wrong charset %u\n", rec->Flags.S.CharSet );
|
||||
ok( rec->wType == DNS_TYPE_SRV, "wrong type %u\n", rec->wType );
|
||||
- todo_wine
|
||||
ok( rec->wDataLength == sizeof(DNS_SRV_DATAA) + strlen( "dc.winehq.org" ) + 1, "wrong len %u\n", rec->wDataLength );
|
||||
ok( rec->dwTtl == 0x04050607, "wrong ttl %#lx\n", rec->dwTtl );
|
||||
ok( !strcmp( rec->Data.SRV.pNameTarget, "dc.winehq.org"), "wrong target %s\n", rec->Data.SRV.pNameTarget );
|
||||
@@ -250,7 +249,6 @@ static void test_DnsExtractRecordsFromMessage(void)
|
||||
ok( rec->Flags.S.Section == DnsSectionAnswer, "wrong section %u\n", rec->Flags.S.Section );
|
||||
ok( rec->Flags.S.CharSet == DnsCharSetUtf8, "wrong charset %u\n", rec->Flags.S.CharSet );
|
||||
ok( rec->wType == DNS_TYPE_SRV, "wrong type %u\n", rec->wType );
|
||||
- todo_wine
|
||||
ok( rec->wDataLength == sizeof(DNS_SRV_DATAA) + strlen( "dc.winehq.org" ) + 1, "wrong len %u\n", rec->wDataLength );
|
||||
ok( rec->dwTtl == 0x04050607, "wrong ttl %#lx\n", rec->dwTtl );
|
||||
ok( !strcmp( rec->Data.SRV.pNameTarget, "dc.winehq.org"), "wrong target %s\n", rec->Data.SRV.pNameTarget );
|
||||
--
|
||||
2.40.1
|
||||
|
@@ -1 +0,0 @@
|
||||
Fixes: [54998] - DnsQuery(DNS_TYPE_SRV) fails to parse some of the server answers
|
@@ -1,4 +1,4 @@
|
||||
From f9da0ca4c7012918b5c8660ebe8a9ea0c74f05b0 Mon Sep 17 00:00:00 2001
|
||||
From 2a8ffcea70c41f013660d2b6168ab694c70246c0 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
|
||||
@@ -7,12 +7,12 @@ 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
|
||||
index 6ebd48d9412..ae0e812cb22 100644
|
||||
--- a/dlls/fltmgr.sys/Makefile.in
|
||||
+++ b/dlls/fltmgr.sys/Makefile.in
|
||||
@@ -1,5 +1,6 @@
|
||||
@@ -20,8 +20,8 @@ index ba106a43831..bb1f34b4896 100644
|
||||
EXTRADLLFLAGS = -Wl,--subsystem,native
|
||||
+IMPORTS = ntoskrnl
|
||||
|
||||
C_SRCS = \
|
||||
main.c
|
||||
SOURCES = \
|
||||
fltmgr.sys.spec \
|
||||
diff --git a/dlls/fltmgr.sys/fltmgr.sys.spec b/dlls/fltmgr.sys/fltmgr.sys.spec
|
||||
index 39ce6798178..8943b9f85cf 100644
|
||||
--- a/dlls/fltmgr.sys/fltmgr.sys.spec
|
||||
@@ -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..68f242ab8e8 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;
|
||||
+}
|
||||
@@ -125,7 +136,7 @@ index e1016a4989c..ea9685b4308 100644
|
||||
+}
|
||||
\ No newline at end of file
|
||||
diff --git a/include/ddk/fltkernel.h b/include/ddk/fltkernel.h
|
||||
index 8ebebfa2e81..9ece0990810 100644
|
||||
index 49c9d55dbaa..e5483d5a3fa 100644
|
||||
--- a/include/ddk/fltkernel.h
|
||||
+++ b/include/ddk/fltkernel.h
|
||||
@@ -653,7 +653,8 @@ typedef struct _FLT_REGISTRATION
|
||||
@@ -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
|
||||
|
||||
|
@@ -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
|
||||
|
||||
|
@@ -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
|
||||
|
||||
|
@@ -28,7 +28,7 @@ index a9bd8a3d558..444551778e1 100644
|
||||
+ break;
|
||||
+ case WM_KEYUP:
|
||||
+ {
|
||||
+ TRACE("Processing key %I64d\n", lpmsg->wParam);
|
||||
+ TRACE("Processing key %Ix\n", lpmsg->wParam);
|
||||
+ if (lpmsg->wParam == VK_F5)
|
||||
+ hres = IOleCommandTarget_Exec(&This->IOleCommandTarget_iface, NULL, OLECMDID_REFRESH, 0, NULL, NULL);
|
||||
+
|
||||
|
@@ -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
|
||||
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user