Signed-off-by: Nikolay Sivov nsivov@codeweavers.com --- dlls/d3dx9_24/Makefile.in | 1 + dlls/d3dx9_25/Makefile.in | 1 + dlls/d3dx9_26/Makefile.in | 1 + dlls/d3dx9_27/Makefile.in | 1 + dlls/d3dx9_28/Makefile.in | 1 + dlls/d3dx9_29/Makefile.in | 1 + dlls/d3dx9_30/Makefile.in | 1 + dlls/d3dx9_31/Makefile.in | 1 + dlls/d3dx9_32/Makefile.in | 1 + dlls/d3dx9_33/Makefile.in | 1 + dlls/d3dx9_34/Makefile.in | 1 + dlls/d3dx9_35/Makefile.in | 1 + dlls/d3dx9_36/Makefile.in | 1 + dlls/d3dx9_36/surface.c | 37 +++++++++++++------------------------ dlls/d3dx9_37/Makefile.in | 1 + dlls/d3dx9_38/Makefile.in | 1 + dlls/d3dx9_39/Makefile.in | 1 + dlls/d3dx9_40/Makefile.in | 1 + dlls/d3dx9_41/Makefile.in | 1 + dlls/d3dx9_42/Makefile.in | 1 + dlls/d3dx9_43/Makefile.in | 1 + 21 files changed, 33 insertions(+), 24 deletions(-)
diff --git a/dlls/d3dx9_24/Makefile.in b/dlls/d3dx9_24/Makefile.in index 482c92d64e..02e64d3a89 100644 --- a/dlls/d3dx9_24/Makefile.in +++ b/dlls/d3dx9_24/Makefile.in @@ -2,6 +2,7 @@ EXTRADEFS = -DD3DX_SDK_VERSION=24 MODULE = d3dx9_24.dll IMPORTS = d3d9 d3dcompiler dxguid d3dxof ole32 gdi32 user32 PARENTSRC = ../d3dx9_36 +DELAYIMPORTS = windowscodecs
C_SRCS = \ animation.c \ diff --git a/dlls/d3dx9_25/Makefile.in b/dlls/d3dx9_25/Makefile.in index be4c76980e..57ed1da74a 100644 --- a/dlls/d3dx9_25/Makefile.in +++ b/dlls/d3dx9_25/Makefile.in @@ -2,6 +2,7 @@ EXTRADEFS = -DD3DX_SDK_VERSION=25 MODULE = d3dx9_25.dll IMPORTS = d3d9 d3dcompiler dxguid d3dxof ole32 gdi32 user32 PARENTSRC = ../d3dx9_36 +DELAYIMPORTS = windowscodecs
C_SRCS = \ animation.c \ diff --git a/dlls/d3dx9_26/Makefile.in b/dlls/d3dx9_26/Makefile.in index c5e9e85bfb..04d9ba4df4 100644 --- a/dlls/d3dx9_26/Makefile.in +++ b/dlls/d3dx9_26/Makefile.in @@ -2,6 +2,7 @@ EXTRADEFS = -DD3DX_SDK_VERSION=26 MODULE = d3dx9_26.dll IMPORTS = d3d9 d3dcompiler dxguid d3dxof ole32 gdi32 user32 PARENTSRC = ../d3dx9_36 +DELAYIMPORTS = windowscodecs
C_SRCS = \ animation.c \ diff --git a/dlls/d3dx9_27/Makefile.in b/dlls/d3dx9_27/Makefile.in index ee7f0e2449..faec9b20dd 100644 --- a/dlls/d3dx9_27/Makefile.in +++ b/dlls/d3dx9_27/Makefile.in @@ -2,6 +2,7 @@ EXTRADEFS = -DD3DX_SDK_VERSION=27 MODULE = d3dx9_27.dll IMPORTS = d3d9 d3dcompiler dxguid d3dxof ole32 gdi32 user32 PARENTSRC = ../d3dx9_36 +DELAYIMPORTS = windowscodecs
C_SRCS = \ animation.c \ diff --git a/dlls/d3dx9_28/Makefile.in b/dlls/d3dx9_28/Makefile.in index 094420013d..b8aad93aa7 100644 --- a/dlls/d3dx9_28/Makefile.in +++ b/dlls/d3dx9_28/Makefile.in @@ -2,6 +2,7 @@ EXTRADEFS = -DD3DX_SDK_VERSION=28 MODULE = d3dx9_28.dll IMPORTS = d3d9 d3dcompiler dxguid d3dxof ole32 gdi32 user32 PARENTSRC = ../d3dx9_36 +DELAYIMPORTS = windowscodecs
C_SRCS = \ animation.c \ diff --git a/dlls/d3dx9_29/Makefile.in b/dlls/d3dx9_29/Makefile.in index 88cb110ff5..29c76c4a74 100644 --- a/dlls/d3dx9_29/Makefile.in +++ b/dlls/d3dx9_29/Makefile.in @@ -2,6 +2,7 @@ EXTRADEFS = -DD3DX_SDK_VERSION=29 MODULE = d3dx9_29.dll IMPORTS = d3d9 d3dcompiler dxguid d3dxof ole32 gdi32 user32 PARENTSRC = ../d3dx9_36 +DELAYIMPORTS = windowscodecs
C_SRCS = \ animation.c \ diff --git a/dlls/d3dx9_30/Makefile.in b/dlls/d3dx9_30/Makefile.in index 6ab2ff2451..810edc9a20 100644 --- a/dlls/d3dx9_30/Makefile.in +++ b/dlls/d3dx9_30/Makefile.in @@ -2,6 +2,7 @@ EXTRADEFS = -DD3DX_SDK_VERSION=30 MODULE = d3dx9_30.dll IMPORTS = d3d9 d3dcompiler dxguid d3dxof ole32 gdi32 user32 PARENTSRC = ../d3dx9_36 +DELAYIMPORTS = windowscodecs
C_SRCS = \ animation.c \ diff --git a/dlls/d3dx9_31/Makefile.in b/dlls/d3dx9_31/Makefile.in index 3d44da147d..fce2b53e1e 100644 --- a/dlls/d3dx9_31/Makefile.in +++ b/dlls/d3dx9_31/Makefile.in @@ -2,6 +2,7 @@ EXTRADEFS = -DD3DX_SDK_VERSION=31 MODULE = d3dx9_31.dll IMPORTS = d3d9 d3dcompiler dxguid d3dxof ole32 gdi32 user32 PARENTSRC = ../d3dx9_36 +DELAYIMPORTS = windowscodecs
C_SRCS = \ animation.c \ diff --git a/dlls/d3dx9_32/Makefile.in b/dlls/d3dx9_32/Makefile.in index 37cc2797af..ad53b260d0 100644 --- a/dlls/d3dx9_32/Makefile.in +++ b/dlls/d3dx9_32/Makefile.in @@ -2,6 +2,7 @@ EXTRADEFS = -DD3DX_SDK_VERSION=32 MODULE = d3dx9_32.dll IMPORTS = d3d9 d3dcompiler dxguid d3dxof ole32 gdi32 user32 PARENTSRC = ../d3dx9_36 +DELAYIMPORTS = windowscodecs
C_SRCS = \ animation.c \ diff --git a/dlls/d3dx9_33/Makefile.in b/dlls/d3dx9_33/Makefile.in index 5b03ec134d..318ddce1ac 100644 --- a/dlls/d3dx9_33/Makefile.in +++ b/dlls/d3dx9_33/Makefile.in @@ -2,6 +2,7 @@ EXTRADEFS = -DD3DX_SDK_VERSION=33 MODULE = d3dx9_33.dll IMPORTS = d3d9 d3dcompiler dxguid d3dxof ole32 gdi32 user32 PARENTSRC = ../d3dx9_36 +DELAYIMPORTS = windowscodecs
C_SRCS = \ animation.c \ diff --git a/dlls/d3dx9_34/Makefile.in b/dlls/d3dx9_34/Makefile.in index b7f9c46d5e..451a371bad 100644 --- a/dlls/d3dx9_34/Makefile.in +++ b/dlls/d3dx9_34/Makefile.in @@ -2,6 +2,7 @@ EXTRADEFS = -DD3DX_SDK_VERSION=34 MODULE = d3dx9_34.dll IMPORTS = d3d9 d3dcompiler dxguid d3dxof ole32 gdi32 user32 PARENTSRC = ../d3dx9_36 +DELAYIMPORTS = windowscodecs
C_SRCS = \ animation.c \ diff --git a/dlls/d3dx9_35/Makefile.in b/dlls/d3dx9_35/Makefile.in index 9c196ea038..978d0b0bfa 100644 --- a/dlls/d3dx9_35/Makefile.in +++ b/dlls/d3dx9_35/Makefile.in @@ -2,6 +2,7 @@ EXTRADEFS = -DD3DX_SDK_VERSION=35 MODULE = d3dx9_35.dll IMPORTS = d3d9 d3dcompiler dxguid d3dxof ole32 gdi32 user32 PARENTSRC = ../d3dx9_36 +DELAYIMPORTS = windowscodecs
C_SRCS = \ animation.c \ diff --git a/dlls/d3dx9_36/Makefile.in b/dlls/d3dx9_36/Makefile.in index da8098dd8d..847edece53 100644 --- a/dlls/d3dx9_36/Makefile.in +++ b/dlls/d3dx9_36/Makefile.in @@ -2,6 +2,7 @@ EXTRADEFS = -DD3DX_SDK_VERSION=36 MODULE = d3dx9_36.dll IMPORTLIB = d3dx9 IMPORTS = d3d9 d3dcompiler dxguid d3dxof ole32 gdi32 user32 +DELAYIMPORTS = windowscodecs
C_SRCS = \ animation.c \ diff --git a/dlls/d3dx9_36/surface.c b/dlls/d3dx9_36/surface.c index cae80a8689..cf8286ec75 100644 --- a/dlls/d3dx9_36/surface.c +++ b/dlls/d3dx9_36/surface.c @@ -29,6 +29,7 @@
WINE_DEFAULT_DEBUG_CHANNEL(d3dx);
+HRESULT WINAPI WICCreateImagingFactory_Proxy(UINT, IWICImagingFactory**);
/* Wine-specific WIC GUIDs */ DEFINE_GUID(GUID_WineContainerFormatTga, 0x0c44fda1,0xa5c5,0x4298,0x96,0x85,0x47,0x3f,0xc1,0x7c,0xd3,0x22); @@ -861,7 +862,6 @@ HRESULT WINAPI D3DXGetImageInfoFromFileInMemory(const void *data, UINT datasize, IWICBitmapDecoder *decoder = NULL; IWICStream *stream; HRESULT hr; - HRESULT initresult; BOOL dib;
TRACE("(%p, %d, %p)\n", data, datasize, info); @@ -880,9 +880,7 @@ HRESULT WINAPI D3DXGetImageInfoFromFileInMemory(const void *data, UINT datasize, /* In case of DIB file, convert it to BMP */ dib = convert_dib_to_bmp((void**)&data, &datasize);
- initresult = CoInitializeEx(NULL, COINIT_APARTMENTTHREADED); - - hr = CoCreateInstance(&CLSID_WICImagingFactory, NULL, CLSCTX_INPROC_SERVER, &IID_IWICImagingFactory, (void**)&factory); + hr = WICCreateImagingFactory_Proxy(WINCODEC_SDK_VERSION, &factory);
if (SUCCEEDED(hr)) { IWICImagingFactory_CreateStream(factory, &stream); @@ -968,9 +966,6 @@ HRESULT WINAPI D3DXGetImageInfoFromFileInMemory(const void *data, UINT datasize, if (decoder) IWICBitmapDecoder_Release(decoder);
- if (SUCCEEDED(initresult)) - CoUninitialize(); - if (dib) HeapFree(GetProcessHeap(), 0, (void*)data);
@@ -1108,7 +1103,7 @@ HRESULT WINAPI D3DXLoadSurfaceFromFileInMemory(IDirect3DSurface9 *pDestSurface, const RECT *pSrcRect, DWORD dwFilter, D3DCOLOR Colorkey, D3DXIMAGE_INFO *pSrcInfo) { D3DXIMAGE_INFO imginfo; - HRESULT hr, com_init; + HRESULT hr;
IWICImagingFactory *factory = NULL; IWICBitmapDecoder *decoder; @@ -1161,9 +1156,7 @@ HRESULT WINAPI D3DXLoadSurfaceFromFileInMemory(IDirect3DSurface9 *pDestSurface, if (imginfo.ImageFileFormat == D3DXIFF_DIB) convert_dib_to_bmp((void**)&pSrcData, &SrcDataSize);
- com_init = CoInitializeEx(NULL, COINIT_APARTMENTTHREADED); - - if (FAILED(CoCreateInstance(&CLSID_WICImagingFactory, NULL, CLSCTX_INPROC_SERVER, &IID_IWICImagingFactory, (void**)&factory))) + if (FAILED(WICCreateImagingFactory_Proxy(WINCODEC_SDK_VERSION, &factory))) goto cleanup_err;
if (FAILED(IWICImagingFactory_CreateStream(factory, &stream))) @@ -1264,9 +1257,6 @@ cleanup_err: if (factory) IWICImagingFactory_Release(factory);
- if (SUCCEEDED(com_init)) - CoUninitialize(); - if (imginfo.ImageFileFormat == D3DXIFF_DIB) HeapFree(GetProcessHeap(), 0, (void*)pSrcData);
@@ -2087,10 +2077,10 @@ HRESULT WINAPI D3DXSaveSurfaceToFileInMemory(ID3DXBuffer **dst_buffer, D3DXIMAGE IPropertyBag2 *encoder_options = NULL; IStream *stream = NULL; HRESULT hr; - HRESULT initresult; - const CLSID *encoder_clsid; + const GUID *container_format; const GUID *pixel_format_guid; WICPixelFormatGUID wic_pixel_format; + IWICImagingFactory *factory; D3DFORMAT d3d_pixel_format; D3DSURFACE_DESC src_surface_desc; IDirect3DSurface9 *temp_surface; @@ -2116,13 +2106,13 @@ HRESULT WINAPI D3DXSaveSurfaceToFileInMemory(ID3DXBuffer **dst_buffer, D3DXIMAGE { case D3DXIFF_BMP: case D3DXIFF_DIB: - encoder_clsid = &CLSID_WICBmpEncoder; + container_format = &GUID_ContainerFormatBmp; break; case D3DXIFF_PNG: - encoder_clsid = &CLSID_WICPngEncoder; + container_format = &GUID_ContainerFormatPng; break; case D3DXIFF_JPG: - encoder_clsid = &CLSID_WICJpegEncoder; + container_format = &GUID_ContainerFormatJpeg; break; case D3DXIFF_DDS: return save_dds_surface_to_memory(dst_buffer, src_surface, src_rect); @@ -2160,10 +2150,11 @@ HRESULT WINAPI D3DXSaveSurfaceToFileInMemory(ID3DXBuffer **dst_buffer, D3DXIMAGE height = src_surface_desc.Height; }
- initresult = CoInitializeEx(NULL, COINIT_APARTMENTTHREADED); + hr = WICCreateImagingFactory_Proxy(WINCODEC_SDK_VERSION, &factory); + if (FAILED(hr)) goto cleanup_err;
- hr = CoCreateInstance(encoder_clsid, NULL, CLSCTX_INPROC_SERVER, - &IID_IWICBitmapEncoder, (void **)&encoder); + hr = IWICImagingFactory_CreateEncoder(factory, container_format, NULL, &encoder); + IWICImagingFactory_Release(factory); if (FAILED(hr)) goto cleanup_err;
hr = CreateStreamOnHGlobal(NULL, TRUE, &stream); @@ -2294,7 +2285,5 @@ cleanup:
if (encoder) IWICBitmapEncoder_Release(encoder);
- if (SUCCEEDED(initresult)) CoUninitialize(); - return hr; } diff --git a/dlls/d3dx9_37/Makefile.in b/dlls/d3dx9_37/Makefile.in index ab790a4d5c..a05068c2bf 100644 --- a/dlls/d3dx9_37/Makefile.in +++ b/dlls/d3dx9_37/Makefile.in @@ -2,6 +2,7 @@ EXTRADEFS = -DD3DX_SDK_VERSION=37 MODULE = d3dx9_37.dll IMPORTS = d3d9 d3dcompiler dxguid d3dxof ole32 gdi32 user32 PARENTSRC = ../d3dx9_36 +DELAYIMPORTS = windowscodecs
C_SRCS = \ animation.c \ diff --git a/dlls/d3dx9_38/Makefile.in b/dlls/d3dx9_38/Makefile.in index 6125c2da67..b092e6267f 100644 --- a/dlls/d3dx9_38/Makefile.in +++ b/dlls/d3dx9_38/Makefile.in @@ -2,6 +2,7 @@ EXTRADEFS = -DD3DX_SDK_VERSION=38 MODULE = d3dx9_38.dll IMPORTS = d3d9 d3dcompiler dxguid d3dxof ole32 gdi32 user32 PARENTSRC = ../d3dx9_36 +DELAYIMPORTS = windowscodecs
C_SRCS = \ animation.c \ diff --git a/dlls/d3dx9_39/Makefile.in b/dlls/d3dx9_39/Makefile.in index d97a787c67..4d17120e0b 100644 --- a/dlls/d3dx9_39/Makefile.in +++ b/dlls/d3dx9_39/Makefile.in @@ -2,6 +2,7 @@ EXTRADEFS = -DD3DX_SDK_VERSION=39 MODULE = d3dx9_39.dll IMPORTS = d3d9 d3dcompiler dxguid d3dxof ole32 gdi32 user32 PARENTSRC = ../d3dx9_36 +DELAYIMPORTS = windowscodecs
C_SRCS = \ animation.c \ diff --git a/dlls/d3dx9_40/Makefile.in b/dlls/d3dx9_40/Makefile.in index 36c5a210cd..59f6f3d592 100644 --- a/dlls/d3dx9_40/Makefile.in +++ b/dlls/d3dx9_40/Makefile.in @@ -2,6 +2,7 @@ EXTRADEFS = -DD3DX_SDK_VERSION=40 MODULE = d3dx9_40.dll IMPORTS = d3d9 d3dcompiler dxguid d3dxof ole32 gdi32 user32 PARENTSRC = ../d3dx9_36 +DELAYIMPORTS = windowscodecs
C_SRCS = \ animation.c \ diff --git a/dlls/d3dx9_41/Makefile.in b/dlls/d3dx9_41/Makefile.in index d4552cf608..f18443a51e 100644 --- a/dlls/d3dx9_41/Makefile.in +++ b/dlls/d3dx9_41/Makefile.in @@ -2,6 +2,7 @@ EXTRADEFS = -DD3DX_SDK_VERSION=41 MODULE = d3dx9_41.dll IMPORTS = d3d9 d3dcompiler dxguid d3dxof ole32 gdi32 user32 PARENTSRC = ../d3dx9_36 +DELAYIMPORTS = windowscodecs
C_SRCS = \ animation.c \ diff --git a/dlls/d3dx9_42/Makefile.in b/dlls/d3dx9_42/Makefile.in index 5806fce66c..cb142b7ac2 100644 --- a/dlls/d3dx9_42/Makefile.in +++ b/dlls/d3dx9_42/Makefile.in @@ -2,6 +2,7 @@ EXTRADEFS = -DD3DX_SDK_VERSION=42 MODULE = d3dx9_42.dll IMPORTS = d3d9 d3dcompiler dxguid d3dxof ole32 gdi32 user32 PARENTSRC = ../d3dx9_36 +DELAYIMPORTS = windowscodecs
C_SRCS = \ animation.c \ diff --git a/dlls/d3dx9_43/Makefile.in b/dlls/d3dx9_43/Makefile.in index 72ba8b4c1e..3e6111a13d 100644 --- a/dlls/d3dx9_43/Makefile.in +++ b/dlls/d3dx9_43/Makefile.in @@ -2,6 +2,7 @@ EXTRADEFS = -DD3DX_SDK_VERSION=43 MODULE = d3dx9_43.dll IMPORTS = d3d9 d3dcompiler dxguid d3dxof ole32 gdi32 user32 PARENTSRC = ../d3dx9_36 +DELAYIMPORTS = windowscodecs
C_SRCS = \ animation.c \
Signed-off-by: Matteo Bruni mbruni@codeweavers.com --- Let's keep an eye open for possible regressions related to using DELAYIMPORT instead of the previous dynamic load (unlikely, but you know...)