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
30 Commits
Author | SHA1 | Date | |
---|---|---|---|
|
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)
|
||||
|
@@ -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,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
|
||||
|
||||
|
@@ -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
|
||||
|
||||
|
@@ -1,19 +1,18 @@
|
||||
From da81169743bd7f070186ec5e58c89bab53d0bb7f Mon Sep 17 00:00:00 2001
|
||||
From 6e2509a34fb6f8f06438ee9908eb61320b73697f Mon Sep 17 00:00:00 2001
|
||||
From: Sebastian Lackner <sebastian@fds-team.de>
|
||||
Date: Sun, 28 Sep 2014 23:39:51 +0200
|
||||
Subject: [PATCH] ntdll: OutputDebugString should throw the exception a second
|
||||
time, if a debugger is attached.
|
||||
|
||||
---
|
||||
dlls/kernelbase/debug.c | 17 +++++++++++++++++
|
||||
dlls/ntdll/tests/exception.c | 9 ++++-----
|
||||
2 files changed, 21 insertions(+), 5 deletions(-)
|
||||
dlls/kernelbase/debug.c | 17 +++++++++++++++++
|
||||
1 file changed, 17 insertions(+)
|
||||
|
||||
diff --git a/dlls/kernelbase/debug.c b/dlls/kernelbase/debug.c
|
||||
index 9e954e3ffbe..a6793c20204 100644
|
||||
index e1976777b7f..7294f99da7e 100644
|
||||
--- a/dlls/kernelbase/debug.c
|
||||
+++ b/dlls/kernelbase/debug.c
|
||||
@@ -200,6 +200,23 @@ void WINAPI DECLSPEC_HOTPATCH OutputDebugStringA( LPCSTR str )
|
||||
@@ -202,6 +202,23 @@ void WINAPI DECLSPEC_HOTPATCH OutputDebugStringA( LPCSTR str )
|
||||
__ENDTRY
|
||||
if (caught_by_dbg) return;
|
||||
|
||||
@@ -37,48 +36,6 @@ index 9e954e3ffbe..a6793c20204 100644
|
||||
/* send string to a system-wide monitor */
|
||||
if (!mutex_inited)
|
||||
{
|
||||
diff --git a/dlls/ntdll/tests/exception.c b/dlls/ntdll/tests/exception.c
|
||||
index 3e76b001147..0c02486e19c 100644
|
||||
--- a/dlls/ntdll/tests/exception.c
|
||||
+++ b/dlls/ntdll/tests/exception.c
|
||||
@@ -8345,7 +8345,7 @@ static LONG CALLBACK outputdebugstring_vectored_handler(EXCEPTION_POINTERS *Exce
|
||||
return EXCEPTION_CONTINUE_SEARCH;
|
||||
}
|
||||
|
||||
-static void test_outputdebugstring(DWORD numexc, BOOL todo)
|
||||
+static void test_outputdebugstring(DWORD numexc)
|
||||
{
|
||||
PVOID vectored_handler;
|
||||
|
||||
@@ -8361,7 +8361,6 @@ static void test_outputdebugstring(DWORD numexc, BOOL todo)
|
||||
outputdebugstring_exceptions = 0;
|
||||
OutputDebugStringA("Hello World");
|
||||
|
||||
- todo_wine_if(todo)
|
||||
ok(outputdebugstring_exceptions == numexc, "OutputDebugStringA generated %ld exceptions, expected %ld\n",
|
||||
outputdebugstring_exceptions, numexc);
|
||||
|
||||
@@ -10785,9 +10784,9 @@ START_TEST(exception)
|
||||
else skip( "RtlRaiseException not found\n" );
|
||||
#endif
|
||||
test_stage = 3;
|
||||
- test_outputdebugstring(0, FALSE);
|
||||
+ test_outputdebugstring(0);
|
||||
test_stage = 4;
|
||||
- test_outputdebugstring(2, TRUE); /* is this a Windows bug? */
|
||||
+ test_outputdebugstring(2);
|
||||
test_stage = 5;
|
||||
test_ripevent(0);
|
||||
test_stage = 6;
|
||||
@@ -10900,7 +10899,7 @@ START_TEST(exception)
|
||||
test_debugger(DBG_EXCEPTION_HANDLED);
|
||||
test_debugger(DBG_CONTINUE);
|
||||
test_thread_context();
|
||||
- test_outputdebugstring(1, FALSE);
|
||||
+ test_outputdebugstring(1);
|
||||
test_ripevent(1);
|
||||
test_fastfail();
|
||||
test_breakpoint(1);
|
||||
--
|
||||
2.36.1
|
||||
2.40.1
|
||||
|
||||
|
@@ -1,4 +1,4 @@
|
||||
From eb6cc70e5e7fe6f9500b7fc632064aa71bc64fe3 Mon Sep 17 00:00:00 2001
|
||||
From 09318135fc87cd27e9df660958dcda6fe7d6f997 Mon Sep 17 00:00:00 2001
|
||||
From: "Erich E. Hoover" <erich.e.hoover@wine-staging.com>
|
||||
Date: Sat, 12 Dec 2020 17:28:31 -0700
|
||||
Subject: [PATCH] kernel32: Advertise reparse point support.
|
||||
@@ -11,10 +11,10 @@ Signed-off-by: Erich E. Hoover <erich.e.hoover@gmail.com>
|
||||
3 files changed, 137 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/dlls/mountmgr.sys/device.c b/dlls/mountmgr.sys/device.c
|
||||
index 0757036c8e3..6b2187c0991 100644
|
||||
index 6c62ac78c76..1ee82e92c97 100644
|
||||
--- a/dlls/mountmgr.sys/device.c
|
||||
+++ b/dlls/mountmgr.sys/device.c
|
||||
@@ -197,6 +197,36 @@ static void get_filesystem_serial( struct volume *volume )
|
||||
@@ -177,6 +177,36 @@ static void get_filesystem_serial( struct volume *volume )
|
||||
volume->serial = strtoul( buffer, NULL, 16 );
|
||||
}
|
||||
|
||||
@@ -51,7 +51,7 @@ index 0757036c8e3..6b2187c0991 100644
|
||||
|
||||
/******************************************************************
|
||||
* VOLUME_FindCdRomDataBestVoldesc
|
||||
@@ -1716,7 +1746,8 @@ static NTSTATUS WINAPI harddisk_query_volume( DEVICE_OBJECT *device, IRP *irp )
|
||||
@@ -1704,7 +1734,8 @@ static NTSTATUS WINAPI harddisk_query_volume( DEVICE_OBJECT *device, IRP *irp )
|
||||
break;
|
||||
default:
|
||||
fsname = L"NTFS";
|
||||
@@ -62,7 +62,7 @@ index 0757036c8e3..6b2187c0991 100644
|
||||
break;
|
||||
}
|
||||
diff --git a/dlls/mountmgr.sys/unixlib.c b/dlls/mountmgr.sys/unixlib.c
|
||||
index 0332f6f6018..93ec6f266c5 100644
|
||||
index 80e7c850854..55489d9965b 100644
|
||||
--- a/dlls/mountmgr.sys/unixlib.c
|
||||
+++ b/dlls/mountmgr.sys/unixlib.c
|
||||
@@ -38,6 +38,21 @@
|
||||
@@ -175,14 +175,16 @@ index 0332f6f6018..93ec6f266c5 100644
|
||||
static NTSTATUS match_unixdev( void *args )
|
||||
{
|
||||
const struct match_unixdev_params *params = args;
|
||||
@@ -607,4 +703,5 @@ const unixlib_entry_t __wine_unix_call_funcs[] =
|
||||
@@ -607,6 +703,7 @@ const unixlib_entry_t __wine_unix_call_funcs[] =
|
||||
write_credential,
|
||||
delete_credential,
|
||||
enumerate_credentials,
|
||||
+ get_volume_filesystem,
|
||||
};
|
||||
|
||||
C_ASSERT( ARRAYSIZE(__wine_unix_call_funcs) == unix_funcs_count );
|
||||
diff --git a/dlls/mountmgr.sys/unixlib.h b/dlls/mountmgr.sys/unixlib.h
|
||||
index 56b460862fa..01993b3baec 100644
|
||||
index 7a3d0038512..ac7e6a553c7 100644
|
||||
--- a/dlls/mountmgr.sys/unixlib.h
|
||||
+++ b/dlls/mountmgr.sys/unixlib.h
|
||||
@@ -107,6 +107,13 @@ struct read_volume_file_params
|
||||
@@ -204,9 +206,9 @@ index 56b460862fa..01993b3baec 100644
|
||||
unix_delete_credential,
|
||||
unix_enumerate_credentials,
|
||||
+ unix_get_volume_filesystem,
|
||||
unix_funcs_count
|
||||
};
|
||||
|
||||
#define MOUNTMGR_CALL( func, params ) WINE_UNIX_CALL( unix_ ## func, params )
|
||||
--
|
||||
2.38.1
|
||||
2.40.1
|
||||
|
||||
|
@@ -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();
|
||||
|
@@ -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
|
||||
|
||||
|
@@ -1,2 +1 @@
|
||||
Fixes: [48291] Detroit: Become Human crashes on launch
|
||||
Disabled: True
|
||||
|
@@ -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
|
||||
|
||||
|
@@ -1,4 +1,4 @@
|
||||
From de4cd156d5a676091d4a7e38265161819a69137e Mon Sep 17 00:00:00 2001
|
||||
From 4c2973947ad85bbed99b3149462eb73e823c977a Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Michael=20M=C3=BCller?= <michael@fds-team.de>
|
||||
Date: Mon, 8 May 2017 23:33:45 +0200
|
||||
Subject: [PATCH] shell32: Add security property tab.
|
||||
@@ -62,17 +62,16 @@ index 264947d337d..90898b7ed98 100644
|
||||
/* FIXME: Some will be unused until desktop.ini support is implemented */
|
||||
IDS_PROGRAMS "Programs"
|
||||
diff --git a/dlls/shell32/shlview_cmenu.c b/dlls/shell32/shlview_cmenu.c
|
||||
index 14cd9aeeebe..ed3a07c423d 100644
|
||||
index 181ff36787e..cc43b710c29 100644
|
||||
--- a/dlls/shell32/shlview_cmenu.c
|
||||
+++ b/dlls/shell32/shlview_cmenu.c
|
||||
@@ -38,14 +38,133 @@
|
||||
@@ -36,13 +36,132 @@
|
||||
|
||||
#include "shresdef.h"
|
||||
#include "shlwapi.h"
|
||||
+#include "aclui.h"
|
||||
+#include "aclapi.h"
|
||||
|
||||
#include "wine/heap.h"
|
||||
#include "wine/debug.h"
|
||||
|
||||
+/* Small hack: We need to remove DECLSPEC_HIDDEN from the aclui export. */
|
||||
@@ -199,8 +198,8 @@ index 14cd9aeeebe..ed3a07c423d 100644
|
||||
typedef struct
|
||||
{
|
||||
IContextMenu3 IContextMenu3_iface;
|
||||
@@ -637,6 +756,269 @@ error:
|
||||
heap_free(props);
|
||||
@@ -634,6 +753,269 @@ error:
|
||||
free(props);
|
||||
}
|
||||
|
||||
+static HRESULT WINAPI filesecurity_QueryInterface(ISecurityInformation *iface, REFIID riid, void **ppv)
|
||||
@@ -469,7 +468,7 @@ index 14cd9aeeebe..ed3a07c423d 100644
|
||||
#define MAX_PROP_PAGES 99
|
||||
|
||||
static void DoOpenProperties(ContextMenu *This, HWND hwnd)
|
||||
@@ -716,6 +1098,7 @@ static void DoOpenProperties(ContextMenu *This, HWND hwnd)
|
||||
@@ -713,6 +1095,7 @@ static void DoOpenProperties(ContextMenu *This, HWND hwnd)
|
||||
if (SUCCEEDED(ret))
|
||||
{
|
||||
init_file_properties_pages(lpDo, Properties_AddPropSheetCallback, (LPARAM)&psh);
|
||||
@@ -516,5 +515,5 @@ index 210046e729d..0f3a64f16d2 100644
|
||||
#define IDS_RECYCLEBIN_FOLDER_NAME 8964
|
||||
|
||||
--
|
||||
2.35.1
|
||||
2.40.1
|
||||
|
||||
|
@@ -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
|
||||
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user