You've already forked wine-staging
mirror of
https://gitlab.winehq.org/wine/wine-staging.git
synced 2025-12-15 08:03:15 -08:00
Compare commits
13 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
978b387c1c | ||
|
|
01d377c9ef | ||
|
|
317665ee20 | ||
|
|
3d1b6a4bc0 | ||
|
|
e33772ec34 | ||
|
|
342cfbc5de | ||
|
|
91b4afcd38 | ||
|
|
5f55fc20dc | ||
|
|
3714d05e91 | ||
|
|
39778538c2 | ||
|
|
0c15cda214 | ||
|
|
858b0697d2 | ||
|
|
0394bb10be |
@@ -1,4 +1,4 @@
|
||||
From 3dc4a148d7c91afea8f589f47daca82c5c27b7c1 Mon Sep 17 00:00:00 2001
|
||||
From efd5485d5026fceb01c7a25bb47a780505adea68 Mon Sep 17 00:00:00 2001
|
||||
From: Sebastian Lackner <sebastian@fds-team.de>
|
||||
Date: Thu, 2 Oct 2014 19:44:31 +0200
|
||||
Subject: [PATCH] ntdll: Print a warning message specifying the wine-staging
|
||||
@@ -9,7 +9,7 @@ Subject: [PATCH] ntdll: Print a warning message specifying the wine-staging
|
||||
1 file changed, 19 insertions(+)
|
||||
|
||||
diff --git a/dlls/ntdll/loader.c b/dlls/ntdll/loader.c
|
||||
index 74eb1b7f500..95639558155 100644
|
||||
index c20d6a5d87b..717f321bc6e 100644
|
||||
--- a/dlls/ntdll/loader.c
|
||||
+++ b/dlls/ntdll/loader.c
|
||||
@@ -43,6 +43,7 @@ WINE_DECLARE_DEBUG_CHANNEL(relay);
|
||||
@@ -20,7 +20,7 @@ index 74eb1b7f500..95639558155 100644
|
||||
|
||||
#ifdef _WIN64
|
||||
#define DEFAULT_SECURITY_COOKIE_64 (((ULONGLONG)0x00002b99 << 32) | 0x2ddfa232)
|
||||
@@ -3870,6 +3871,7 @@ void WINAPI LdrShutdownProcess(void)
|
||||
@@ -3879,6 +3880,7 @@ void WINAPI LdrShutdownProcess(void)
|
||||
process_detach();
|
||||
}
|
||||
|
||||
@@ -28,7 +28,7 @@ index 74eb1b7f500..95639558155 100644
|
||||
|
||||
/******************************************************************
|
||||
* RtlExitUserProcess (NTDLL.@)
|
||||
@@ -4366,6 +4368,9 @@ static void release_address_space(void)
|
||||
@@ -4388,6 +4390,9 @@ static void release_address_space(void)
|
||||
*/
|
||||
void loader_init( CONTEXT *context, void **entry )
|
||||
{
|
||||
@@ -38,9 +38,9 @@ index 74eb1b7f500..95639558155 100644
|
||||
static int attach_done;
|
||||
NTSTATUS status;
|
||||
ULONG_PTR cookie, port = 0;
|
||||
@@ -4455,6 +4460,20 @@ void loader_init( CONTEXT *context, void **entry )
|
||||
arm64ec_thread_init();
|
||||
#endif
|
||||
@@ -4485,6 +4490,20 @@ void loader_init( CONTEXT *context, void **entry )
|
||||
}
|
||||
|
||||
wm = get_modref( NtCurrentTeb()->Peb->ImageBaseAddress );
|
||||
+ /* This hunk occasionally applies in the wrong place;
|
||||
+ * add a comment here to try to prevent that. */
|
||||
@@ -60,5 +60,5 @@ index 74eb1b7f500..95639558155 100644
|
||||
|
||||
NtCurrentTeb()->FlsSlots = fls_alloc_data();
|
||||
--
|
||||
2.47.2
|
||||
2.51.0
|
||||
|
||||
|
||||
@@ -1,63 +1,40 @@
|
||||
From 7285c2c90f43cd46d873a2ddb65e9c6c9d63f750 Mon Sep 17 00:00:00 2001
|
||||
From 18e01f69f4a3ad85253bb73dcd3ff197074c8810 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 2/2] d3dx11_42: Implement D3DX11CreateTextureFromMemory
|
||||
Subject: [PATCH] d3dx11_42: Implement D3DX11CreateTextureFromMemory
|
||||
|
||||
Signed-off-by: Alistair Leslie-Hughes <leslie_alistair@hotmail.com>
|
||||
---
|
||||
dlls/d3dx11_43/texture.c | 359 ++++++++++++++++++++++++++++++++++++++-
|
||||
1 file changed, 354 insertions(+), 5 deletions(-)
|
||||
dlls/d3dx11_43/texture.c | 365 ++++++++++++++++++++++++++++++++++++++-
|
||||
1 file changed, 359 insertions(+), 6 deletions(-)
|
||||
|
||||
diff --git a/dlls/d3dx11_43/texture.c b/dlls/d3dx11_43/texture.c
|
||||
index bbf937cdab0..10dedf30c0f 100644
|
||||
index cbf3b630f58..0bc5ef9ab03 100644
|
||||
--- a/dlls/d3dx11_43/texture.c
|
||||
+++ b/dlls/d3dx11_43/texture.c
|
||||
@@ -22,6 +22,7 @@
|
||||
#include "wincodec.h"
|
||||
@@ -15,12 +15,15 @@
|
||||
* License along with this library; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
|
||||
*/
|
||||
+#define COBJMACROS
|
||||
|
||||
#include "d3dx11.h"
|
||||
#include "d3dcompiler.h"
|
||||
#include "dxhelpers.h"
|
||||
|
||||
+#include "wincodec.h"
|
||||
#include "wine/debug.h"
|
||||
+#include "wine/heap.h"
|
||||
|
||||
WINE_DEFAULT_DEBUG_CHANNEL(d3dx);
|
||||
|
||||
@@ -43,6 +44,33 @@ file_formats[] =
|
||||
{ &GUID_ContainerFormatWmp, D3DX11_IFF_WMP },
|
||||
};
|
||||
|
||||
+static const struct
|
||||
+{
|
||||
+ const GUID *wic_guid;
|
||||
+ DXGI_FORMAT dxgi_format;
|
||||
+}
|
||||
+wic_pixel_formats[] =
|
||||
+{
|
||||
+ { &GUID_WICPixelFormatBlackWhite, DXGI_FORMAT_R1_UNORM },
|
||||
+ { &GUID_WICPixelFormat8bppAlpha, DXGI_FORMAT_A8_UNORM },
|
||||
+ { &GUID_WICPixelFormat8bppGray, DXGI_FORMAT_R8_UNORM },
|
||||
+ { &GUID_WICPixelFormat16bppGray, DXGI_FORMAT_R16_UNORM },
|
||||
+ { &GUID_WICPixelFormat16bppGrayHalf, DXGI_FORMAT_R16_FLOAT },
|
||||
+ { &GUID_WICPixelFormat32bppGrayFloat, DXGI_FORMAT_R32_FLOAT },
|
||||
+ { &GUID_WICPixelFormat16bppBGR565, DXGI_FORMAT_B5G6R5_UNORM },
|
||||
+ { &GUID_WICPixelFormat16bppBGRA5551, DXGI_FORMAT_B5G5R5A1_UNORM },
|
||||
+ { &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 },
|
||||
+ { &GUID_WICPixelFormat64bppRGBAHalf, DXGI_FORMAT_R16G16B16A16_FLOAT },
|
||||
+ { &GUID_WICPixelFormat96bppRGBFloat, DXGI_FORMAT_R32G32B32_FLOAT },
|
||||
+ { &GUID_WICPixelFormat128bppRGBAFloat, DXGI_FORMAT_R32G32B32A32_FLOAT }
|
||||
+};
|
||||
+
|
||||
static D3DX11_IMAGE_FILE_FORMAT wic_container_guid_to_file_format(GUID *container_format)
|
||||
{
|
||||
unsigned int i;
|
||||
@@ -95,6 +123,175 @@ static DXGI_FORMAT get_d3dx11_dds_format(DXGI_FORMAT format)
|
||||
return format;
|
||||
@@ -277,16 +280,366 @@ HRESULT WINAPI D3DX11CreateTextureFromFileW(ID3D11Device *device, const WCHAR *f
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
-HRESULT WINAPI D3DX11CreateTextureFromMemory(ID3D11Device *device, const void *data,
|
||||
- SIZE_T data_size, D3DX11_IMAGE_LOAD_INFO *load_info, ID3DX11ThreadPump *pump,
|
||||
- ID3D11Resource **texture, HRESULT *hresult)
|
||||
+static const DXGI_FORMAT block_compressed_formats[] =
|
||||
+{
|
||||
+ DXGI_FORMAT_BC1_TYPELESS, DXGI_FORMAT_BC1_UNORM, DXGI_FORMAT_BC1_UNORM_SRGB,
|
||||
@@ -70,9 +47,12 @@ index bbf937cdab0..10dedf30c0f 100644
|
||||
+};
|
||||
+
|
||||
+static BOOL is_block_compressed(DXGI_FORMAT format)
|
||||
+{
|
||||
{
|
||||
- FIXME("device %p, data %p, data_size %Iu, load_info %p, pump %p, texture %p, hresult %p stub.\n",
|
||||
- device, data, data_size, load_info, pump, texture, hresult);
|
||||
+ unsigned int i;
|
||||
+
|
||||
|
||||
- return E_NOTIMPL;
|
||||
+ for (i = 0; i < ARRAY_SIZE(block_compressed_formats); ++i)
|
||||
+ if (format == block_compressed_formats[i])
|
||||
+ return TRUE;
|
||||
@@ -214,6 +194,33 @@ index bbf937cdab0..10dedf30c0f 100644
|
||||
+ }
|
||||
+}
|
||||
+
|
||||
+static const struct
|
||||
+{
|
||||
+ const GUID *wic_guid;
|
||||
+ DXGI_FORMAT dxgi_format;
|
||||
+}
|
||||
+wic_pixel_formats[] =
|
||||
+{
|
||||
+ { &GUID_WICPixelFormatBlackWhite, DXGI_FORMAT_R1_UNORM },
|
||||
+ { &GUID_WICPixelFormat8bppAlpha, DXGI_FORMAT_A8_UNORM },
|
||||
+ { &GUID_WICPixelFormat8bppGray, DXGI_FORMAT_R8_UNORM },
|
||||
+ { &GUID_WICPixelFormat16bppGray, DXGI_FORMAT_R16_UNORM },
|
||||
+ { &GUID_WICPixelFormat16bppGrayHalf, DXGI_FORMAT_R16_FLOAT },
|
||||
+ { &GUID_WICPixelFormat32bppGrayFloat, DXGI_FORMAT_R32_FLOAT },
|
||||
+ { &GUID_WICPixelFormat16bppBGR565, DXGI_FORMAT_B5G6R5_UNORM },
|
||||
+ { &GUID_WICPixelFormat16bppBGRA5551, DXGI_FORMAT_B5G5R5A1_UNORM },
|
||||
+ { &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 },
|
||||
+ { &GUID_WICPixelFormat64bppRGBAHalf, DXGI_FORMAT_R16G16B16A16_FLOAT },
|
||||
+ { &GUID_WICPixelFormat96bppRGBFloat, DXGI_FORMAT_R32G32B32_FLOAT },
|
||||
+ { &GUID_WICPixelFormat128bppRGBAFloat, DXGI_FORMAT_R32G32B32A32_FLOAT }
|
||||
+};
|
||||
+
|
||||
+static const GUID *dxgi_format_to_wic_guid(DXGI_FORMAT format)
|
||||
+{
|
||||
+ unsigned int i;
|
||||
@@ -225,23 +232,14 @@ index bbf937cdab0..10dedf30c0f 100644
|
||||
+ }
|
||||
+
|
||||
+ return NULL;
|
||||
+}
|
||||
+
|
||||
HRESULT WINAPI D3DX11GetImageInfoFromMemory(const void *src_data, SIZE_T src_data_size, ID3DX11ThreadPump *pump,
|
||||
D3DX11_IMAGE_INFO *img_info, HRESULT *hresult)
|
||||
{
|
||||
@@ -220,14 +417,166 @@ HRESULT WINAPI D3DX11CreateTextureFromFileW(ID3D11Device *device, const WCHAR *f
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
-HRESULT WINAPI D3DX11CreateTextureFromMemory(ID3D11Device *device, const void *data,
|
||||
- SIZE_T data_size, D3DX11_IMAGE_LOAD_INFO *load_info, ID3DX11ThreadPump *pump,
|
||||
+HRESULT WINAPI WICCreateImagingFactory_Proxy(UINT sdk_version, IWICImagingFactory **imaging_factory);
|
||||
+
|
||||
+HRESULT WINAPI D3DX11CreateTextureFromMemory(ID3D11Device *device, const void *src_data,
|
||||
+ SIZE_T src_data_size, D3DX11_IMAGE_LOAD_INFO *load_info, ID3DX11ThreadPump *pump,
|
||||
ID3D11Resource **texture, HRESULT *hresult)
|
||||
{
|
||||
- FIXME("device %p, data %p, data_size %Iu, load_info %p, pump %p, texture %p, hresult %p stub.\n",
|
||||
- device, data, data_size, load_info, pump, texture, hresult);
|
||||
+ ID3D11Resource **texture, HRESULT *hresult)
|
||||
+ {
|
||||
+ unsigned int frame_count, width, height, stride, frame_size;
|
||||
+ IWICFormatConverter *converter = NULL;
|
||||
+ IWICDdsFrameDecode *dds_frame = NULL;
|
||||
@@ -258,8 +256,7 @@ index bbf937cdab0..10dedf30c0f 100644
|
||||
+ BOOL can_convert;
|
||||
+ GUID src_format;
|
||||
+ HRESULT hr;
|
||||
|
||||
- return E_NOTIMPL;
|
||||
+
|
||||
+ TRACE("device %p, data %p, data_size %Iu, load_info %p, pump %p, texture %p, hresult %p.\n",
|
||||
+ device, src_data, src_data_size, load_info, pump, texture, hresult);
|
||||
+
|
||||
@@ -399,9 +396,11 @@ index bbf937cdab0..10dedf30c0f 100644
|
||||
+ IWICImagingFactory_Release(factory);
|
||||
+
|
||||
+ return hr;
|
||||
}
|
||||
|
||||
+ }
|
||||
+
|
||||
HRESULT WINAPI D3DX11SaveTextureToFileW(ID3D11DeviceContext *context, ID3D11Resource *texture,
|
||||
D3DX11_IMAGE_FILE_FORMAT format, const WCHAR *filename)
|
||||
{
|
||||
--
|
||||
2.40.1
|
||||
2.51.0
|
||||
|
||||
@@ -1,245 +0,0 @@
|
||||
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 1/2] d3dx11_43: Implement D3DX11GetImageInfoFromMemory
|
||||
|
||||
Wine-bug: https://bugs.winehq.org/show_bug.cgi?id=50210
|
||||
|
||||
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 | 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
|
||||
--- a/dlls/d3dx11_42/Makefile.in
|
||||
+++ b/dlls/d3dx11_42/Makefile.in
|
||||
@@ -2,6 +2,7 @@ EXTRADEFS = -DD3DX11_SDK_VERSION=42
|
||||
MODULE = d3dx11_42.dll
|
||||
IMPORTLIB = d3dx11_42
|
||||
IMPORTS = d3dcompiler
|
||||
+DELAYIMPORTS = windowscodecs
|
||||
PARENTSRC = ../d3dx11_43
|
||||
|
||||
EXTRADLLFLAGS = -Wb,--prefer-native
|
||||
diff --git a/dlls/d3dx11_43/Makefile.in b/dlls/d3dx11_43/Makefile.in
|
||||
index ccd4319ace2..6854c73ebcb 100644
|
||||
--- a/dlls/d3dx11_43/Makefile.in
|
||||
+++ b/dlls/d3dx11_43/Makefile.in
|
||||
@@ -2,6 +2,7 @@ EXTRADEFS = -DD3DX11_SDK_VERSION=43
|
||||
MODULE = d3dx11_43.dll
|
||||
IMPORTLIB = d3dx11
|
||||
IMPORTS = d3dcompiler
|
||||
+DELAYIMPORTS = windowscodecs
|
||||
|
||||
EXTRADLLFLAGS = -Wb,--prefer-native
|
||||
|
||||
diff --git a/dlls/d3dx11_43/main.c b/dlls/d3dx11_43/main.c
|
||||
index 5dad027864f..00c1db35e42 100644
|
||||
--- a/dlls/d3dx11_43/main.c
|
||||
+++ b/dlls/d3dx11_43/main.c
|
||||
@@ -66,12 +66,3 @@ HRESULT WINAPI D3DX11GetImageInfoFromFileW(const WCHAR *filename, ID3DX11ThreadP
|
||||
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
-
|
||||
-HRESULT WINAPI D3DX11GetImageInfoFromMemory(const void *src_data, SIZE_T src_data_size, ID3DX11ThreadPump *pump,
|
||||
- D3DX11_IMAGE_INFO *img_info, HRESULT *hresult)
|
||||
-{
|
||||
- FIXME("src_data %p, src_data_size %Iu, pump %p, img_info %p, hresult %p stub!\n",
|
||||
- src_data, src_data_size, pump, img_info, hresult);
|
||||
-
|
||||
- return E_NOTIMPL;
|
||||
-}
|
||||
diff --git a/dlls/d3dx11_43/texture.c b/dlls/d3dx11_43/texture.c
|
||||
index 81ac8ee6db7..bbf937cdab0 100644
|
||||
--- a/dlls/d3dx11_43/texture.c
|
||||
+++ b/dlls/d3dx11_43/texture.c
|
||||
@@ -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
|
||||
*/
|
||||
+#define COBJMACROS
|
||||
|
||||
#include "d3dx11.h"
|
||||
#include "d3dcompiler.h"
|
||||
+#include "wincodec.h"
|
||||
|
||||
#include "wine/debug.h"
|
||||
|
||||
WINE_DEFAULT_DEBUG_CHANNEL(d3dx);
|
||||
|
||||
+HRESULT WINAPI WICCreateImagingFactory_Proxy(UINT sdk_version, IWICImagingFactory **imaging_factory);
|
||||
+
|
||||
+static const struct
|
||||
+{
|
||||
+ const GUID *wic_container_guid;
|
||||
+ D3DX11_IMAGE_FILE_FORMAT d3dx_file_format;
|
||||
+}
|
||||
+file_formats[] =
|
||||
+{
|
||||
+ { &GUID_ContainerFormatBmp, D3DX11_IFF_BMP },
|
||||
+ { &GUID_ContainerFormatJpeg, D3DX11_IFF_JPG },
|
||||
+ { &GUID_ContainerFormatPng, D3DX11_IFF_PNG },
|
||||
+ { &GUID_ContainerFormatDds, D3DX11_IFF_DDS },
|
||||
+ { &GUID_ContainerFormatTiff, D3DX11_IFF_TIFF },
|
||||
+ { &GUID_ContainerFormatGif, D3DX11_IFF_GIF },
|
||||
+ { &GUID_ContainerFormatWmp, D3DX11_IFF_WMP },
|
||||
+};
|
||||
+
|
||||
+static D3DX11_IMAGE_FILE_FORMAT wic_container_guid_to_file_format(GUID *container_format)
|
||||
+{
|
||||
+ unsigned int i;
|
||||
+
|
||||
+ for (i = 0; i < ARRAY_SIZE(file_formats); ++i)
|
||||
+ {
|
||||
+ if (IsEqualGUID(file_formats[i].wic_container_guid, container_format))
|
||||
+ return file_formats[i].d3dx_file_format;
|
||||
+ }
|
||||
+ return D3DX11_IFF_FORCE_DWORD;
|
||||
+}
|
||||
+
|
||||
+static D3D11_RESOURCE_DIMENSION wic_dimension_to_d3dx11_dimension(WICDdsDimension wic_dimension)
|
||||
+{
|
||||
+ switch (wic_dimension)
|
||||
+ {
|
||||
+ case WICDdsTexture1D:
|
||||
+ return D3D11_RESOURCE_DIMENSION_TEXTURE1D;
|
||||
+ case WICDdsTexture2D:
|
||||
+ case WICDdsTextureCube:
|
||||
+ return D3D11_RESOURCE_DIMENSION_TEXTURE2D;
|
||||
+ case WICDdsTexture3D:
|
||||
+ return D3D11_RESOURCE_DIMENSION_TEXTURE3D;
|
||||
+ default:
|
||||
+ return D3D11_RESOURCE_DIMENSION_UNKNOWN;
|
||||
+ }
|
||||
+}
|
||||
+
|
||||
+static const DXGI_FORMAT to_be_converted_format[] =
|
||||
+{
|
||||
+ DXGI_FORMAT_UNKNOWN,
|
||||
+ DXGI_FORMAT_R8_UNORM,
|
||||
+ DXGI_FORMAT_R8G8_UNORM,
|
||||
+ DXGI_FORMAT_B5G6R5_UNORM,
|
||||
+ DXGI_FORMAT_B4G4R4A4_UNORM,
|
||||
+ DXGI_FORMAT_B5G5R5A1_UNORM,
|
||||
+ DXGI_FORMAT_B8G8R8X8_UNORM,
|
||||
+ DXGI_FORMAT_B8G8R8A8_UNORM
|
||||
+};
|
||||
+
|
||||
+static DXGI_FORMAT get_d3dx11_dds_format(DXGI_FORMAT format)
|
||||
+{
|
||||
+ unsigned int i;
|
||||
+
|
||||
+ for (i = 0; i < ARRAY_SIZE(to_be_converted_format); ++i)
|
||||
+ {
|
||||
+ if (format == to_be_converted_format[i])
|
||||
+ return DXGI_FORMAT_R8G8B8A8_UNORM;
|
||||
+ }
|
||||
+ return format;
|
||||
+}
|
||||
+
|
||||
+HRESULT WINAPI D3DX11GetImageInfoFromMemory(const void *src_data, SIZE_T src_data_size, ID3DX11ThreadPump *pump,
|
||||
+ D3DX11_IMAGE_INFO *img_info, HRESULT *hresult)
|
||||
+{
|
||||
+ IWICImagingFactory *factory = NULL;
|
||||
+ IWICDdsDecoder *dds_decoder = NULL;
|
||||
+ IWICBitmapDecoder *decoder = NULL;
|
||||
+ WICDdsParameters dds_params;
|
||||
+ IWICStream *stream = NULL;
|
||||
+ GUID container_format;
|
||||
+ HRESULT hr;
|
||||
+
|
||||
+ TRACE("src_data %p, src_data_size %Iu, pump %p, img_info %p, hresult %p.\n",
|
||||
+ src_data, src_data_size, pump, img_info, hresult);
|
||||
+
|
||||
+ if (!src_data || !src_data_size || !img_info)
|
||||
+ return E_FAIL;
|
||||
+ if (pump)
|
||||
+ FIXME("Thread pump is not supported yet.\n");
|
||||
+
|
||||
+ WICCreateImagingFactory_Proxy(WINCODEC_SDK_VERSION, &factory);
|
||||
+ IWICImagingFactory_CreateStream(factory, &stream);
|
||||
+ hr = IWICStream_InitializeFromMemory(stream, (BYTE *)src_data, src_data_size);
|
||||
+ if (FAILED(hr))
|
||||
+ {
|
||||
+ WARN("Failed to initialize stream.\n");
|
||||
+ goto end;
|
||||
+ }
|
||||
+ hr = IWICImagingFactory_CreateDecoderFromStream(factory, (IStream *)stream, NULL, 0, &decoder);
|
||||
+ if (FAILED(hr))
|
||||
+ goto end;
|
||||
+
|
||||
+ hr = IWICBitmapDecoder_GetContainerFormat(decoder, &container_format);
|
||||
+ if (FAILED(hr))
|
||||
+ goto end;
|
||||
+ img_info->ImageFileFormat = wic_container_guid_to_file_format(&container_format);
|
||||
+ if (img_info->ImageFileFormat == D3DX11_IFF_FORCE_DWORD)
|
||||
+ {
|
||||
+ hr = E_FAIL;
|
||||
+ WARN("Unsupported image file format %s.\n", debugstr_guid(&container_format));
|
||||
+ goto end;
|
||||
+ }
|
||||
+
|
||||
+ if (img_info->ImageFileFormat == D3DX11_IFF_DDS)
|
||||
+ {
|
||||
+ hr = IWICBitmapDecoder_QueryInterface(decoder, &IID_IWICDdsDecoder, (void **)&dds_decoder);
|
||||
+ if (FAILED(hr))
|
||||
+ goto end;
|
||||
+ 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;
|
||||
+ img_info->ResourceDimension = wic_dimension_to_d3dx11_dimension(dds_params.Dimension);
|
||||
+ img_info->Format = get_d3dx11_dds_format(dds_params.DxgiFormat);
|
||||
+ img_info->MiscFlags = 0;
|
||||
+ if (dds_params.Dimension == WICDdsTextureCube)
|
||||
+ {
|
||||
+ img_info->MiscFlags = D3D11_RESOURCE_MISC_TEXTURECUBE;
|
||||
+ img_info->ArraySize *= 6;
|
||||
+ }
|
||||
+ }
|
||||
+ 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;
|
||||
+ img_info->ResourceDimension = D3D11_RESOURCE_DIMENSION_TEXTURE2D;
|
||||
+ img_info->Format = DXGI_FORMAT_R8G8B8A8_UNORM;
|
||||
+ img_info->MiscFlags = 0;
|
||||
+ }
|
||||
+
|
||||
+end:
|
||||
+ if (dds_decoder)
|
||||
+ IWICDdsDecoder_Release(dds_decoder);
|
||||
+ if (decoder)
|
||||
+ IWICBitmapDecoder_Release(decoder);
|
||||
+ if (stream)
|
||||
+ IWICStream_Release(stream);
|
||||
+ if (factory)
|
||||
+ IWICImagingFactory_Release(factory);
|
||||
+
|
||||
+ if (hr != S_OK)
|
||||
+ {
|
||||
+ WARN("Invalid or unsupported image file.\n");
|
||||
+ return E_FAIL;
|
||||
+ }
|
||||
+ return S_OK;
|
||||
+}
|
||||
+
|
||||
HRESULT WINAPI D3DX11CreateShaderResourceViewFromMemory(ID3D11Device *device, const void *data,
|
||||
SIZE_T data_size, D3DX11_IMAGE_LOAD_INFO *load_info, ID3DX11ThreadPump *pump,
|
||||
ID3D11ShaderResourceView **view, HRESULT *hresult)
|
||||
--
|
||||
2.40.1
|
||||
|
||||
@@ -0,0 +1,25 @@
|
||||
From 3c5ed75d72440b3c1ff668c3aece8216b561bece Mon Sep 17 00:00:00 2001
|
||||
From: Alistair Leslie-Hughes <leslie_alistair@hotmail.com>
|
||||
Date: Sat, 13 Sep 2025 08:17:15 +1000
|
||||
Subject: [PATCH] d3dx9: Add support for GUID_WICPixelFormat16bppGray
|
||||
|
||||
Stop error with HighFleet on startup.
|
||||
---
|
||||
dlls/d3dx9_36/d3dx_helpers.c | 1 +
|
||||
1 file changed, 1 insertion(+)
|
||||
|
||||
diff --git a/dlls/d3dx9_36/d3dx_helpers.c b/dlls/d3dx9_36/d3dx_helpers.c
|
||||
index 60394ca1d9b..26b00191b68 100644
|
||||
--- a/dlls/d3dx9_36/d3dx_helpers.c
|
||||
+++ b/dlls/d3dx9_36/d3dx_helpers.c
|
||||
@@ -140,6 +140,7 @@ static const struct
|
||||
{ &GUID_WICPixelFormat2bppIndexed, D3DX_PIXEL_FORMAT_P2_UINT },
|
||||
{ &GUID_WICPixelFormat4bppIndexed, D3DX_PIXEL_FORMAT_P4_UINT },
|
||||
{ &GUID_WICPixelFormat8bppGray, D3DX_PIXEL_FORMAT_L8_UNORM },
|
||||
+ { &GUID_WICPixelFormat16bppGray, D3DX_PIXEL_FORMAT_R16_UNORM },
|
||||
{ &GUID_WICPixelFormat16bppBGR555, D3DX_PIXEL_FORMAT_B5G5R5X1_UNORM },
|
||||
{ &GUID_WICPixelFormat16bppBGR565, D3DX_PIXEL_FORMAT_B5G6R5_UNORM },
|
||||
{ &GUID_WICPixelFormat24bppBGR, D3DX_PIXEL_FORMAT_B8G8R8_UNORM },
|
||||
--
|
||||
2.51.0
|
||||
|
||||
@@ -1,56 +0,0 @@
|
||||
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
|
||||
|
||||
@@ -0,0 +1,49 @@
|
||||
From 9d0bf8024bf5d97540fd1fa7456766fea808bc20 Mon Sep 17 00:00:00 2001
|
||||
From: Alistair Leslie-Hughes <leslie_alistair@hotmail.com>
|
||||
Date: Sat, 13 Sep 2025 08:17:15 +1000
|
||||
Subject: [PATCH] d3dx9_36: Use correct pixel type for DXT* format
|
||||
|
||||
Required for Puyo-Puyo tetris.
|
||||
---
|
||||
dlls/d3dx9_36/d3dx_helpers.c | 18 ++++++++++++++++--
|
||||
1 file changed, 16 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/dlls/d3dx9_36/d3dx_helpers.c b/dlls/d3dx9_36/d3dx_helpers.c
|
||||
index 26b00191b68..694b1b53548 100644
|
||||
--- a/dlls/d3dx9_36/d3dx_helpers.c
|
||||
+++ b/dlls/d3dx9_36/d3dx_helpers.c
|
||||
@@ -290,8 +290,8 @@ static enum d3dx_pixel_format_id d3dx_pixel_format_id_from_dds_pixel_format(cons
|
||||
{
|
||||
uint32_t i;
|
||||
|
||||
- TRACE("pixel_format: size %lu, flags %#lx, fourcc %#lx, bpp %lu.\n", pixel_format->size,
|
||||
- pixel_format->flags, pixel_format->fourcc, pixel_format->bpp);
|
||||
+ TRACE("pixel_format: size %lu, flags %#lx, fourcc %s, bpp %lu.\n", pixel_format->size,
|
||||
+ pixel_format->flags, debugstr_fourcc(pixel_format->fourcc), pixel_format->bpp);
|
||||
TRACE("rmask %#lx, gmask %#lx, bmask %#lx, amask %#lx.\n", pixel_format->rmask, pixel_format->gmask,
|
||||
pixel_format->bmask, pixel_format->amask);
|
||||
|
||||
@@ -1152,6 +1152,20 @@ static HRESULT d3dx_initialize_image_from_dds(const void *src_data, uint32_t src
|
||||
if ((image->format = d3dx_pixel_format_id_from_dds_pixel_format(&header->pixel_format)) == D3DX_PIXEL_FORMAT_COUNT)
|
||||
return D3DXERR_INVALIDDATA;
|
||||
|
||||
+ switch (image->format)
|
||||
+ {
|
||||
+ case D3DX_PIXEL_FORMAT_DXT1_UNORM:
|
||||
+ case D3DX_PIXEL_FORMAT_DXT2_UNORM:
|
||||
+ case D3DX_PIXEL_FORMAT_DXT3_UNORM:
|
||||
+ case D3DX_PIXEL_FORMAT_DXT4_UNORM:
|
||||
+ case D3DX_PIXEL_FORMAT_DXT5_UNORM:
|
||||
+ image->format = D3DX_PIXEL_FORMAT_R8G8B8A8_UNORM;
|
||||
+ break;
|
||||
+ default:
|
||||
+ /* Leave format as is */
|
||||
+ break;
|
||||
+ }
|
||||
+
|
||||
image->image_file_format = D3DX_IMAGE_FILE_FORMAT_DDS;
|
||||
image->layer_count = 1;
|
||||
if (header->flags & DDS_DEPTH)
|
||||
--
|
||||
2.51.0
|
||||
|
||||
@@ -1,4 +1 @@
|
||||
Fixes: [50210] - Implement D3DX11GetImageInfoFromMemory
|
||||
Fixes: [45533] - Implement D3DX11CreateTextureFromMemory
|
||||
|
||||
# This patchset will need to wait until the new wined3dx dll implemented.
|
||||
|
||||
@@ -0,0 +1,93 @@
|
||||
From 78fcd523dff585ce007405bd75d459aa2c4fb13a Mon Sep 17 00:00:00 2001
|
||||
From: Connor McAdams <cmcadams@codeweavers.com>
|
||||
Date: Wed, 3 Sep 2025 13:04:51 -0400
|
||||
Subject: [PATCH] d3dx9: Implement
|
||||
ID3DXAnimationController::RegisterAnimationSet().
|
||||
|
||||
Signed-off-by: Connor McAdams <cmcadams@codeweavers.com>
|
||||
---
|
||||
dlls/d3dx9_36/animation.c | 34 ++++++++++++++++++++++++++++++++--
|
||||
1 file changed, 32 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/dlls/d3dx9_36/animation.c b/dlls/d3dx9_36/animation.c
|
||||
index 8a38c05ed0c..1bb775bc44a 100644
|
||||
--- a/dlls/d3dx9_36/animation.c
|
||||
+++ b/dlls/d3dx9_36/animation.c
|
||||
@@ -29,8 +29,13 @@ struct d3dx9_animation_controller
|
||||
LONG ref;
|
||||
|
||||
UINT max_outputs;
|
||||
+
|
||||
+ ID3DXAnimationSet **animation_sets;
|
||||
+ UINT num_sets;
|
||||
UINT max_sets;
|
||||
+
|
||||
UINT max_tracks;
|
||||
+
|
||||
UINT max_events;
|
||||
};
|
||||
|
||||
@@ -75,6 +80,14 @@ static ULONG WINAPI d3dx9_animation_controller_Release(ID3DXAnimationController
|
||||
|
||||
if (!refcount)
|
||||
{
|
||||
+ unsigned int i;
|
||||
+
|
||||
+ for (i = 0; i < animation->max_sets; i++)
|
||||
+ {
|
||||
+ if (animation->animation_sets[i])
|
||||
+ animation->animation_sets[i]->lpVtbl->Release(animation->animation_sets[i]);
|
||||
+ }
|
||||
+ free(animation->animation_sets);
|
||||
free(animation);
|
||||
}
|
||||
|
||||
@@ -129,9 +142,17 @@ static HRESULT WINAPI d3dx9_animation_controller_RegisterAnimationOutput(ID3DXAn
|
||||
static HRESULT WINAPI d3dx9_animation_controller_RegisterAnimationSet(ID3DXAnimationController *iface,
|
||||
ID3DXAnimationSet *anim_set)
|
||||
{
|
||||
+ struct d3dx9_animation_controller *animation = impl_from_ID3DXAnimationController(iface);
|
||||
+
|
||||
FIXME("iface %p, anim_set %p stub.\n", iface, anim_set);
|
||||
|
||||
- return E_NOTIMPL;
|
||||
+ if (!anim_set || animation->num_sets >= animation->max_sets)
|
||||
+ return D3DERR_INVALIDCALL;
|
||||
+
|
||||
+ animation->animation_sets[animation->num_sets++] = anim_set;
|
||||
+ anim_set->lpVtbl->AddRef(anim_set);
|
||||
+
|
||||
+ return D3D_OK;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI d3dx9_animation_controller_UnregisterAnimationSet(ID3DXAnimationController *iface,
|
||||
@@ -144,9 +165,11 @@ static HRESULT WINAPI d3dx9_animation_controller_UnregisterAnimationSet(ID3DXAni
|
||||
|
||||
static UINT WINAPI d3dx9_animation_controller_GetNumAnimationSets(ID3DXAnimationController *iface)
|
||||
{
|
||||
+ struct d3dx9_animation_controller *animation = impl_from_ID3DXAnimationController(iface);
|
||||
+
|
||||
FIXME("iface %p stub.\n", iface);
|
||||
|
||||
- return 0;
|
||||
+ return animation->num_sets;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI d3dx9_animation_controller_GetAnimationSet(ID3DXAnimationController *iface,
|
||||
@@ -459,6 +482,13 @@ HRESULT WINAPI D3DXCreateAnimationController(UINT max_outputs, UINT max_sets,
|
||||
object->ID3DXAnimationController_iface.lpVtbl = &d3dx9_animation_controller_vtbl;
|
||||
object->ref = 1;
|
||||
object->max_outputs = max_outputs;
|
||||
+
|
||||
+ object->animation_sets = calloc(max_sets, sizeof(*object->animation_sets));
|
||||
+ if (!object->animation_sets)
|
||||
+ {
|
||||
+ free(object);
|
||||
+ return E_OUTOFMEMORY;
|
||||
+ }
|
||||
object->max_sets = max_sets;
|
||||
object->max_tracks = max_tracks;
|
||||
object->max_events = max_events;
|
||||
--
|
||||
2.50.1
|
||||
|
||||
@@ -0,0 +1,85 @@
|
||||
From ee45504fb838a5e7bfeec350c6a7c5a318400c68 Mon Sep 17 00:00:00 2001
|
||||
From: Connor McAdams <cmcadams@codeweavers.com>
|
||||
Date: Wed, 3 Sep 2025 13:31:04 -0400
|
||||
Subject: [PATCH] d3dx9: Implement
|
||||
ID3DXAnimationController::{Get,Set}TrackDesc().
|
||||
|
||||
Signed-off-by: Connor McAdams <cmcadams@codeweavers.com>
|
||||
---
|
||||
dlls/d3dx9_36/animation.c | 30 ++++++++++++++++++++++++++++--
|
||||
1 file changed, 28 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/dlls/d3dx9_36/animation.c b/dlls/d3dx9_36/animation.c
|
||||
index 1bb775bc44a..6ded652930a 100644
|
||||
--- a/dlls/d3dx9_36/animation.c
|
||||
+++ b/dlls/d3dx9_36/animation.c
|
||||
@@ -23,6 +23,11 @@
|
||||
|
||||
WINE_DEFAULT_DEBUG_CHANNEL(d3dx);
|
||||
|
||||
+struct d3dx9_track
|
||||
+{
|
||||
+ D3DXTRACK_DESC desc;
|
||||
+};
|
||||
+
|
||||
struct d3dx9_animation_controller
|
||||
{
|
||||
ID3DXAnimationController ID3DXAnimationController_iface;
|
||||
@@ -34,6 +39,7 @@ struct d3dx9_animation_controller
|
||||
UINT num_sets;
|
||||
UINT max_sets;
|
||||
|
||||
+ struct d3dx9_track *tracks;
|
||||
UINT max_tracks;
|
||||
|
||||
UINT max_events;
|
||||
@@ -269,17 +275,29 @@ static HRESULT WINAPI d3dx9_animation_controller_SetTrackEnable(ID3DXAnimationCo
|
||||
static HRESULT WINAPI d3dx9_animation_controller_SetTrackDesc(ID3DXAnimationController *iface,
|
||||
UINT track, D3DXTRACK_DESC *desc)
|
||||
{
|
||||
+ struct d3dx9_animation_controller *animation = impl_from_ID3DXAnimationController(iface);
|
||||
+
|
||||
FIXME("iface %p, track %u, desc %p stub.\n", iface, track, desc);
|
||||
|
||||
- return E_NOTIMPL;
|
||||
+ if (track > animation->max_tracks || !desc)
|
||||
+ return D3DERR_INVALIDCALL;
|
||||
+
|
||||
+ animation->tracks[track].desc = *desc;
|
||||
+ return D3D_OK;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI d3dx9_animation_controller_GetTrackDesc(ID3DXAnimationController *iface,
|
||||
UINT track, D3DXTRACK_DESC *desc)
|
||||
{
|
||||
+ struct d3dx9_animation_controller *animation = impl_from_ID3DXAnimationController(iface);
|
||||
+
|
||||
FIXME("iface %p, track %u, desc %p stub.\n", iface, track, desc);
|
||||
|
||||
- return E_NOTIMPL;
|
||||
+ if (track > animation->max_tracks || !desc)
|
||||
+ return D3DERR_INVALIDCALL;
|
||||
+
|
||||
+ *desc = animation->tracks[track].desc;
|
||||
+ return D3D_OK;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI d3dx9_animation_controller_SetPriorityBlend(ID3DXAnimationController *iface,
|
||||
@@ -490,6 +508,14 @@ HRESULT WINAPI D3DXCreateAnimationController(UINT max_outputs, UINT max_sets,
|
||||
return E_OUTOFMEMORY;
|
||||
}
|
||||
object->max_sets = max_sets;
|
||||
+
|
||||
+ object->tracks = calloc(max_tracks, sizeof(*object->tracks));
|
||||
+ if (!object->tracks)
|
||||
+ {
|
||||
+ free(object->animation_sets);
|
||||
+ free(object);
|
||||
+ return E_OUTOFMEMORY;
|
||||
+ }
|
||||
object->max_tracks = max_tracks;
|
||||
object->max_events = max_events;
|
||||
|
||||
--
|
||||
2.50.1
|
||||
|
||||
@@ -0,0 +1,93 @@
|
||||
From fa933a9493c8b4a2e9626c1815bb5ef4309627b4 Mon Sep 17 00:00:00 2001
|
||||
From: Connor McAdams <cmcadams@codeweavers.com>
|
||||
Date: Wed, 3 Sep 2025 13:33:16 -0400
|
||||
Subject: [PATCH] d3dx9: Implement
|
||||
ID3DXAnimationController::{Get,Set}TrackAnimationSet().
|
||||
|
||||
Signed-off-by: Connor McAdams <cmcadams@codeweavers.com>
|
||||
---
|
||||
dlls/d3dx9_36/animation.c | 38 ++++++++++++++++++++++++++++++++++++--
|
||||
1 file changed, 36 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/dlls/d3dx9_36/animation.c b/dlls/d3dx9_36/animation.c
|
||||
index 6ded652930a..ccd16778c3e 100644
|
||||
--- a/dlls/d3dx9_36/animation.c
|
||||
+++ b/dlls/d3dx9_36/animation.c
|
||||
@@ -26,6 +26,7 @@ WINE_DEFAULT_DEBUG_CHANNEL(d3dx);
|
||||
struct d3dx9_track
|
||||
{
|
||||
D3DXTRACK_DESC desc;
|
||||
+ int set_idx;
|
||||
};
|
||||
|
||||
struct d3dx9_animation_controller
|
||||
@@ -219,17 +220,47 @@ static double WINAPI d3dx9_animation_controller_GetTime(ID3DXAnimationController
|
||||
static HRESULT WINAPI d3dx9_animation_controller_SetTrackAnimationSet(ID3DXAnimationController *iface,
|
||||
UINT track, ID3DXAnimationSet *anim_set)
|
||||
{
|
||||
+ struct d3dx9_animation_controller *animation = impl_from_ID3DXAnimationController(iface);
|
||||
+ unsigned int i;
|
||||
+ int idx;
|
||||
+
|
||||
FIXME("iface %p, track %u, anim_set %p stub.\n", iface, track, anim_set);
|
||||
|
||||
- return E_NOTIMPL;
|
||||
+ if (track > animation->max_tracks || !anim_set || (animation->tracks[track].set_idx >= 0))
|
||||
+ return D3DERR_INVALIDCALL;
|
||||
+
|
||||
+ idx = -1;
|
||||
+ for (i = 0; i < animation->num_sets; i++)
|
||||
+ {
|
||||
+ if (animation->animation_sets[i] == anim_set)
|
||||
+ {
|
||||
+ idx = i;
|
||||
+ break;
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ animation->tracks[track].set_idx = idx;
|
||||
+
|
||||
+ return idx >= 0 ? D3D_OK : D3DERR_INVALIDCALL;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI d3dx9_animation_controller_GetTrackAnimationSet(ID3DXAnimationController *iface,
|
||||
UINT track, ID3DXAnimationSet **anim_set)
|
||||
{
|
||||
+ struct d3dx9_animation_controller *animation = impl_from_ID3DXAnimationController(iface);
|
||||
+ int set_idx;
|
||||
+
|
||||
FIXME("iface %p, track %u, anim_set %p stub.\n", iface, track, anim_set);
|
||||
|
||||
- return E_NOTIMPL;
|
||||
+ if (track > animation->max_tracks || !anim_set)
|
||||
+ return D3DERR_INVALIDCALL;
|
||||
+
|
||||
+ set_idx = animation->tracks[track].set_idx;
|
||||
+ *anim_set = set_idx >= 0 ? animation->animation_sets[set_idx] : NULL;
|
||||
+
|
||||
+ if (*anim_set)
|
||||
+ (*anim_set)->lpVtbl->AddRef(*anim_set);
|
||||
+ return D3D_OK;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI d3dx9_animation_controller_SetTrackPriority(ID3DXAnimationController *iface,
|
||||
@@ -486,6 +517,7 @@ HRESULT WINAPI D3DXCreateAnimationController(UINT max_outputs, UINT max_sets,
|
||||
UINT max_tracks, UINT max_events, ID3DXAnimationController **controller)
|
||||
{
|
||||
struct d3dx9_animation_controller *object;
|
||||
+ unsigned int i;
|
||||
|
||||
TRACE("max_outputs %u, max_sets %u, max_tracks %u, max_events %u, controller %p.\n",
|
||||
max_outputs, max_sets, max_tracks, max_events, controller);
|
||||
@@ -516,6 +548,8 @@ HRESULT WINAPI D3DXCreateAnimationController(UINT max_outputs, UINT max_sets,
|
||||
free(object);
|
||||
return E_OUTOFMEMORY;
|
||||
}
|
||||
+ for (i = 0; i < max_tracks; ++i)
|
||||
+ object->tracks[i].set_idx = -1;
|
||||
object->max_tracks = max_tracks;
|
||||
object->max_events = max_events;
|
||||
|
||||
--
|
||||
2.50.1
|
||||
|
||||
1
patches/d3dx9_animation_TrackDesc/definition
Normal file
1
patches/d3dx9_animation_TrackDesc/definition
Normal file
@@ -0,0 +1 @@
|
||||
Fixes: [48598] d3dx9: Improve ID3DXAnimationController Animation set support.
|
||||
@@ -1,97 +0,0 @@
|
||||
From 2135156d666a6a7a779326b7f1fdcbd2a8d58c8a Mon Sep 17 00:00:00 2001
|
||||
From: Spencer Wallace <spencerwallace@esri.com>
|
||||
Date: Mon, 24 Feb 2025 13:33:18 -0800
|
||||
Subject: [PATCH] msxml3: Correct looping of Document Element properties.
|
||||
|
||||
---
|
||||
dlls/msxml3/element.c | 2 ++
|
||||
dlls/msxml3/tests/domdoc.c | 53 ++++++++++++++++++++++++++++++++++++++
|
||||
2 files changed, 55 insertions(+)
|
||||
|
||||
diff --git a/dlls/msxml3/element.c b/dlls/msxml3/element.c
|
||||
index 0fe72dcef9c..3e3c2d06169 100644
|
||||
--- a/dlls/msxml3/element.c
|
||||
+++ b/dlls/msxml3/element.c
|
||||
@@ -1812,6 +1812,8 @@ static HRESULT domelem_get_item(const xmlNodePtr node, LONG index, IXMLDOMNode *
|
||||
*item = create_node( (xmlNodePtr) curr );
|
||||
return S_OK;
|
||||
}
|
||||
+
|
||||
+ ++attrIndex;
|
||||
}
|
||||
|
||||
if (!node->nsDef)
|
||||
diff --git a/dlls/msxml3/tests/domdoc.c b/dlls/msxml3/tests/domdoc.c
|
||||
index dcb83f781ba..84a1f330582 100644
|
||||
--- a/dlls/msxml3/tests/domdoc.c
|
||||
+++ b/dlls/msxml3/tests/domdoc.c
|
||||
@@ -10224,6 +10224,15 @@ static void test_get_attributes(void)
|
||||
L"xmlns:dcterms",
|
||||
L"xmlns:foaf"
|
||||
};
|
||||
+ const WCHAR *attributes[] =
|
||||
+ {
|
||||
+ L"rdf:about",
|
||||
+ L"dcterms:created",
|
||||
+ L"xmlns:oslc_am",
|
||||
+ L"xmlns:rdf",
|
||||
+ L"xmlns:dcterms",
|
||||
+ L"xmlns:foaf"
|
||||
+ };
|
||||
const get_attributes_t *entry = get_attributes;
|
||||
IXMLDOMNamedNodeMap *map;
|
||||
IXMLDOMDocument *doc, *doc2;
|
||||
@@ -10505,6 +10514,50 @@ static void test_get_attributes(void)
|
||||
|
||||
IXMLDOMDocument_Release(doc);
|
||||
|
||||
+ str = SysAllocString(L"<?xml version=\"1.0\" encoding=\"UTF-8\"?>"
|
||||
+ L"<rdf:RDF rdf:about=\"foo\""
|
||||
+ L" dcterms:created=\"2025\""
|
||||
+ L" xmlns:oslc_am=\"http://open-services.net/ns/am#\""
|
||||
+ L" xmlns:rdf=\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\""
|
||||
+ L" xmlns:dcterms=\"http://purl.org/dc/terms/\""
|
||||
+ L" xmlns:foaf=\"http://xmlns.com/foaf/0.1/\" >"
|
||||
+ L"</rdf:RDF>");
|
||||
+
|
||||
+ doc = create_document(&IID_IXMLDOMDocument2);
|
||||
+
|
||||
+ hr = IXMLDOMDocument_loadXML(doc, str, &b);
|
||||
+ ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
|
||||
+ ok(b == VARIANT_TRUE, "got %d\n", b);
|
||||
+
|
||||
+ hr = IXMLDOMDocument_get_documentElement(doc, &elem);
|
||||
+ ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
|
||||
+
|
||||
+ hr = IXMLDOMElement_get_attributes(elem, &map);
|
||||
+ ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
|
||||
+
|
||||
+ length = -1;
|
||||
+ hr = IXMLDOMNamedNodeMap_get_length(map, &length);
|
||||
+ ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
|
||||
+ ok(length == 6, "length %#lx.\n", length);
|
||||
+
|
||||
+ for(i=0; i < length; i++)
|
||||
+ {
|
||||
+ hr = IXMLDOMNamedNodeMap_get_item(map, i, &node2);
|
||||
+ ok( hr == S_OK, "Unexpected hr %#lx (%ld).\n", hr, i);
|
||||
+
|
||||
+ hr = IXMLDOMNode_get_nodeName(node2, &str);
|
||||
+ ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
|
||||
+ ok(!lstrcmpW(str, attributes[i]), "got %s\n", wine_dbgstr_w(str));
|
||||
+ SysFreeString(str);
|
||||
+
|
||||
+ IXMLDOMNode_Release(node2);
|
||||
+ }
|
||||
+
|
||||
+ IXMLDOMNamedNodeMap_Release(map);
|
||||
+ IXMLDOMElement_Release(elem);
|
||||
+
|
||||
+ IXMLDOMDocument_Release(doc);
|
||||
+
|
||||
free_bstrs();
|
||||
}
|
||||
|
||||
--
|
||||
2.47.2
|
||||
|
||||
@@ -1,5 +0,0 @@
|
||||
Fixes: msxml3: Correct regression when looping element properties.
|
||||
|
||||
# PR https://gitlab.winehq.org/wine/wine/-/merge_requests/7529
|
||||
#
|
||||
|
||||
@@ -0,0 +1,51 @@
|
||||
From 2e2e981c7b2c2e109730a646cda6f12ca7428927 Mon Sep 17 00:00:00 2001
|
||||
From: Jactry Zeng <jzeng@codeweavers.com>
|
||||
Date: Fri, 22 Sep 2023 09:13:29 -0500
|
||||
Subject: [PATCH] msxml3: Add GB2312 support for builtin character converter.
|
||||
|
||||
---
|
||||
dlls/msxml3/main.c | 1 +
|
||||
dlls/msxml3/tests/domdoc.c | 8 ++++++++
|
||||
2 files changed, 9 insertions(+)
|
||||
|
||||
diff --git a/dlls/msxml3/main.c b/dlls/msxml3/main.c
|
||||
index 16e0b38b185..b0711c510f6 100644
|
||||
--- a/dlls/msxml3/main.c
|
||||
+++ b/dlls/msxml3/main.c
|
||||
@@ -321,6 +321,7 @@ static void init_char_encoders(void)
|
||||
xmlCharEncodingOutputFunc output;
|
||||
} encoder[] =
|
||||
{
|
||||
+ { "gb2312", gbk_to_utf8, utf8_to_gbk },
|
||||
{ "gbk", gbk_to_utf8, utf8_to_gbk },
|
||||
{ "iso8859-1", iso8859_1_to_utf8, utf8_to_iso8859_1 },
|
||||
{ "windows-1250", win1250_to_utf8, utf8_to_win1250 },
|
||||
diff --git a/dlls/msxml3/tests/domdoc.c b/dlls/msxml3/tests/domdoc.c
|
||||
index 84a1f330582..44ea0ac3b3a 100644
|
||||
--- a/dlls/msxml3/tests/domdoc.c
|
||||
+++ b/dlls/msxml3/tests/domdoc.c
|
||||
@@ -798,6 +798,13 @@ static const char win936xml[] =
|
||||
DECL_WIN_936
|
||||
"<open></open>";
|
||||
|
||||
+#define DECL_WIN_GB2312 \
|
||||
+"<?xml version=\"1.0\" encoding=\"GB2312\"?>"
|
||||
+
|
||||
+static const char gb2312xml[] =
|
||||
+DECL_WIN_GB2312
|
||||
+"<open></open>";
|
||||
+
|
||||
#define DECL_WIN_1252 \
|
||||
"<?xml version=\"1.0\" encoding=\"Windows-1252\"?>"
|
||||
|
||||
@@ -10981,6 +10988,7 @@ static void test_load(void)
|
||||
{ iso8859_1_xml, S_OK, VARIANT_TRUE },
|
||||
{ win1252xml, S_OK, VARIANT_TRUE },
|
||||
{ win936xml, S_FALSE, VARIANT_FALSE },
|
||||
+ { gb2312xml, S_OK, VARIANT_TRUE },
|
||||
};
|
||||
|
||||
|
||||
--
|
||||
2.51.0
|
||||
|
||||
6
patches/msxml3_encode_gb2312/definition
Normal file
6
patches/msxml3_encode_gb2312/definition
Normal file
@@ -0,0 +1,6 @@
|
||||
Fixes: [58673] msxml: Add GB2312 support for builtin character converter.
|
||||
|
||||
|
||||
# PR https://gitlab.winehq.org/wine/wine/-/merge_requests/3928
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
From 82663e728099ca8f0127dcdf8d62d551eda6902c Mon Sep 17 00:00:00 2001
|
||||
From 03ed95b629a5d5a9b1a8203e08d7db4ce1ed80d9 Mon Sep 17 00:00:00 2001
|
||||
From: Dmitry Timoshkov <dmitry@baikal.ru>
|
||||
Date: Thu, 28 Apr 2016 18:14:36 +0800
|
||||
Subject: [PATCH] ntdll: Implement NtSetLdtEntries.
|
||||
@@ -9,10 +9,10 @@ Subject: [PATCH] ntdll: Implement NtSetLdtEntries.
|
||||
2 files changed, 80 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/dlls/kernel32/tests/thread.c b/dlls/kernel32/tests/thread.c
|
||||
index 3cf58d928ae..78f9bbeb493 100644
|
||||
index c0303b471e8..9025d66fba6 100644
|
||||
--- a/dlls/kernel32/tests/thread.c
|
||||
+++ b/dlls/kernel32/tests/thread.c
|
||||
@@ -102,6 +102,7 @@ static HRESULT (WINAPI *pSetThreadDescription)(HANDLE,const WCHAR *);
|
||||
@@ -103,6 +103,7 @@ static HRESULT (WINAPI *pSetThreadDescription)(HANDLE,const WCHAR *);
|
||||
static HRESULT (WINAPI *pGetThreadDescription)(HANDLE,WCHAR **);
|
||||
static PVOID (WINAPI *pRtlAddVectoredExceptionHandler)(ULONG,PVECTORED_EXCEPTION_HANDLER);
|
||||
static ULONG (WINAPI *pRtlRemoveVectoredExceptionHandler)(PVOID);
|
||||
@@ -20,7 +20,7 @@ index 3cf58d928ae..78f9bbeb493 100644
|
||||
|
||||
static HANDLE create_target_process(const char *arg)
|
||||
{
|
||||
@@ -1299,6 +1300,82 @@ static void test_GetThreadSelectorEntry(void)
|
||||
@@ -1319,6 +1320,82 @@ static void test_GetThreadSelectorEntry(void)
|
||||
ok(entry.HighWord.Bits.Granularity == 1, "expected 1, got %u\n", entry.HighWord.Bits.Granularity);
|
||||
}
|
||||
|
||||
@@ -103,7 +103,7 @@ index 3cf58d928ae..78f9bbeb493 100644
|
||||
#endif /* __i386__ */
|
||||
|
||||
static HANDLE finish_event;
|
||||
@@ -2617,6 +2694,7 @@ static void init_funcs(void)
|
||||
@@ -2644,6 +2721,7 @@ static void init_funcs(void)
|
||||
X(NtSetInformationThread);
|
||||
X(RtlAddVectoredExceptionHandler);
|
||||
X(RtlRemoveVectoredExceptionHandler);
|
||||
@@ -111,7 +111,7 @@ index 3cf58d928ae..78f9bbeb493 100644
|
||||
}
|
||||
#undef X
|
||||
}
|
||||
@@ -2673,6 +2751,7 @@ START_TEST(thread)
|
||||
@@ -2700,6 +2778,7 @@ START_TEST(thread)
|
||||
test_SetThreadContext();
|
||||
test_GetThreadSelectorEntry();
|
||||
test_GetThreadContext();
|
||||
@@ -120,12 +120,12 @@ index 3cf58d928ae..78f9bbeb493 100644
|
||||
test_QueueUserWorkItem();
|
||||
test_RegisterWaitForSingleObject();
|
||||
diff --git a/dlls/ntdll/unix/signal_i386.c b/dlls/ntdll/unix/signal_i386.c
|
||||
index f8d8dd9bf28..194e9c3f3e6 100644
|
||||
index 670a3c25015..b4a2392630f 100644
|
||||
--- a/dlls/ntdll/unix/signal_i386.c
|
||||
+++ b/dlls/ntdll/unix/signal_i386.c
|
||||
@@ -2207,7 +2207,7 @@ NTSTATUS get_thread_ldt_entry( HANDLE handle, void *data, ULONG len, ULONG *ret_
|
||||
@@ -2271,7 +2271,7 @@ NTSTATUS get_thread_ldt_entry( HANDLE handle, void *data, ULONG len, ULONG *ret_
|
||||
if (reply->flags)
|
||||
info->Entry = ldt_make_entry( (void *)reply->base, reply->limit, reply->flags );
|
||||
info->Entry = ldt_make_entry( reply->base, reply->limit, reply->flags );
|
||||
else
|
||||
- status = STATUS_UNSUCCESSFUL;
|
||||
+ status = STATUS_ACCESS_VIOLATION;
|
||||
@@ -133,5 +133,5 @@ index f8d8dd9bf28..194e9c3f3e6 100644
|
||||
}
|
||||
SERVER_END_REQ;
|
||||
--
|
||||
2.34.1
|
||||
2.50.1
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
From e941585d942942f7b97b73ae24b9a0a486a855e4 Mon Sep 17 00:00:00 2001
|
||||
From fb6f79e3b34c0798cebe330a15a64363172fe898 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.
|
||||
@@ -9,19 +9,19 @@ Subject: [PATCH] ntdll: Support x86_64 syscall emulation.
|
||||
2 files changed, 204 insertions(+)
|
||||
|
||||
diff --git a/configure.ac b/configure.ac
|
||||
index 8192c067e4c..d4abbdb3f37 100644
|
||||
index 751e6acda99..67b432faca8 100644
|
||||
--- a/configure.ac
|
||||
+++ b/configure.ac
|
||||
@@ -391,6 +391,7 @@ AC_CHECK_HEADERS(\
|
||||
linux/ioctl.h \
|
||||
@@ -684,6 +684,7 @@ AC_CHECK_HEADERS(\
|
||||
linux/major.h \
|
||||
linux/ntsync.h \
|
||||
linux/param.h \
|
||||
+ linux/seccomp.h \
|
||||
linux/serial.h \
|
||||
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 fb5259d8714..93020158d0b 100644
|
||||
index f55726801c7..a6be9f9aab4 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 fb5259d8714..93020158d0b 100644
|
||||
#include "ntstatus.h"
|
||||
#define WIN32_NO_STATUS
|
||||
#include "windef.h"
|
||||
@@ -1857,6 +1868,194 @@ static inline DWORD is_privileged_instr( CONTEXT *context )
|
||||
@@ -1897,6 +1908,194 @@ static inline DWORD is_privileged_instr( CONTEXT *context )
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -251,7 +251,7 @@ index fb5259d8714..93020158d0b 100644
|
||||
|
||||
/***********************************************************************
|
||||
* handle_interrupt
|
||||
@@ -2567,10 +2766,14 @@ void signal_init_process(void)
|
||||
@@ -2686,10 +2885,14 @@ 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;
|
||||
@@ -267,5 +267,5 @@ index fb5259d8714..93020158d0b 100644
|
||||
|
||||
error:
|
||||
--
|
||||
2.47.2
|
||||
2.50.1
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
From cbca8076ac6f6efe8d6832775b56cdd40fe8108b Mon Sep 17 00:00:00 2001
|
||||
From 10cd3e92839fcc77d77fd1acb1fdbfe669e8ee85 Mon Sep 17 00:00:00 2001
|
||||
From: Alistair Leslie-Hughes <leslie_alistair@hotmail.com>
|
||||
Date: Fri, 12 Jul 2024 14:44:43 +1000
|
||||
Subject: [PATCH] odbc32: Load function pointer for SQLBindParam
|
||||
@@ -8,7 +8,7 @@ Subject: [PATCH] odbc32: Load function pointer for SQLBindParam
|
||||
1 file changed, 2 insertions(+)
|
||||
|
||||
diff --git a/dlls/odbc32/proxyodbc.c b/dlls/odbc32/proxyodbc.c
|
||||
index d11b4122776..9a079175d42 100644
|
||||
index d31a08af14f..1add621ca31 100644
|
||||
--- a/dlls/odbc32/proxyodbc.c
|
||||
+++ b/dlls/odbc32/proxyodbc.c
|
||||
@@ -50,6 +50,7 @@ struct win32_funcs
|
||||
@@ -28,5 +28,5 @@ index d11b4122776..9a079175d42 100644
|
||||
LOAD_FUNCPTR( SQLBrowseConnect )
|
||||
LOAD_FUNCPTR( SQLBrowseConnectW )
|
||||
--
|
||||
2.47.2
|
||||
2.50.1
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
From 1a1b88dd5a0a23c64bf4aee2e64f30c418181be0 Mon Sep 17 00:00:00 2001
|
||||
From 7f4fd1e72d8639c2fa0ee309ed6ffa9acb13eccf Mon Sep 17 00:00:00 2001
|
||||
From: Alistair Leslie-Hughes <leslie_alistair@hotmail.com>
|
||||
Date: Fri, 12 Jul 2024 14:40:32 +1000
|
||||
Subject: [PATCH] odbc32: SQLBindParameter handle fallback function
|
||||
@@ -8,10 +8,10 @@ Subject: [PATCH] odbc32: SQLBindParameter handle fallback function
|
||||
1 file changed, 28 insertions(+)
|
||||
|
||||
diff --git a/dlls/odbc32/proxyodbc.c b/dlls/odbc32/proxyodbc.c
|
||||
index 9a079175d42..aa886d01e33 100644
|
||||
index 1add621ca31..7723b9516ac 100644
|
||||
--- a/dlls/odbc32/proxyodbc.c
|
||||
+++ b/dlls/odbc32/proxyodbc.c
|
||||
@@ -5524,9 +5524,37 @@ static SQLRETURN bind_parameter_win32( struct statement *stmt, SQLUSMALLINT para
|
||||
@@ -5580,9 +5580,37 @@ static SQLRETURN bind_parameter_win32( struct statement *stmt, SQLUSMALLINT para
|
||||
SQLSMALLINT value_type, SQLSMALLINT param_type, SQLULEN size,
|
||||
SQLSMALLINT digits, SQLPOINTER value, SQLLEN buflen, SQLLEN *len )
|
||||
{
|
||||
@@ -50,5 +50,5 @@ index 9a079175d42..aa886d01e33 100644
|
||||
}
|
||||
|
||||
--
|
||||
2.47.2
|
||||
2.50.1
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
From 987b50c3a705029e222f444caa453729483eac67 Mon Sep 17 00:00:00 2001
|
||||
From 3f9566132c1969e359ed9589483bde7960f10833 Mon Sep 17 00:00:00 2001
|
||||
From: Alistair Leslie-Hughes <leslie_alistair@hotmail.com>
|
||||
Date: Fri, 12 Jul 2024 14:55:47 +1000
|
||||
Subject: [PATCH] odbc32: SQLSetConnectAttr/W handle fallback function
|
||||
@@ -8,10 +8,10 @@ Subject: [PATCH] odbc32: SQLSetConnectAttr/W handle fallback function
|
||||
1 file changed, 5 insertions(+)
|
||||
|
||||
diff --git a/dlls/odbc32/proxyodbc.c b/dlls/odbc32/proxyodbc.c
|
||||
index aa886d01e33..4fdd242f3b5 100644
|
||||
index 7723b9516ac..c2e21f16e3a 100644
|
||||
--- a/dlls/odbc32/proxyodbc.c
|
||||
+++ b/dlls/odbc32/proxyodbc.c
|
||||
@@ -6713,6 +6713,11 @@ static SQLRETURN set_connect_attr_win32_w( struct connection *con, SQLINTEGER at
|
||||
@@ -6770,6 +6770,11 @@ static SQLRETURN set_connect_attr_win32_w( struct connection *con, SQLINTEGER at
|
||||
if (con->hdr.win32_funcs->SQLSetConnectAttrW)
|
||||
return con->hdr.win32_funcs->SQLSetConnectAttrW( con->hdr.win32_handle, attr, value, len );
|
||||
if (con->hdr.win32_funcs->SQLSetConnectAttr) FIXME( "Unicode to ANSI conversion not handled\n" );
|
||||
@@ -24,5 +24,5 @@ index aa886d01e33..4fdd242f3b5 100644
|
||||
}
|
||||
|
||||
--
|
||||
2.47.2
|
||||
2.50.1
|
||||
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user