Module: wine Branch: master Commit: 4c6427d08044a2d2792dd77deb3c0bec692ff269 URL: http://source.winehq.org/git/wine.git/?a=commit;h=4c6427d08044a2d2792dd77deb...
Author: Piotr Caban piotr@codeweavers.com Date: Fri Mar 6 11:20:57 2015 +0100
gdiplus: Don't use CoCreateInstance in encode_image_wic.
---
dlls/gdiplus/image.c | 29 ++++++++++++----------------- 1 file changed, 12 insertions(+), 17 deletions(-)
diff --git a/dlls/gdiplus/image.c b/dlls/gdiplus/image.c index ca5f165..a7f4385 100644 --- a/dlls/gdiplus/image.c +++ b/dlls/gdiplus/image.c @@ -3875,11 +3875,12 @@ GpStatus WINGDIPAPI GdipSaveImageToFile(GpImage *image, GDIPCONST WCHAR* filenam * These functions encode an image in different image file formats. */
-static GpStatus encode_image_WIC(GpImage *image, IStream* stream, - GDIPCONST CLSID* clsid, GDIPCONST EncoderParameters* params) +static GpStatus encode_image_wic(GpImage *image, IStream* stream, + REFGUID container, GDIPCONST EncoderParameters* params) { GpStatus stat; GpBitmap *bitmap; + IWICImagingFactory *factory; IWICBitmapEncoder *encoder; IWICBitmapFrameEncode *frameencode; IPropertyBag2 *encoderoptions; @@ -3890,7 +3891,6 @@ static GpStatus encode_image_WIC(GpImage *image, IStream* stream, WICPixelFormatGUID wicformat; GpRect rc; BitmapData lockeddata; - HRESULT initresult; UINT i;
if (image->type != ImageTypeBitmap) @@ -3906,15 +3906,13 @@ static GpStatus encode_image_WIC(GpImage *image, IStream* stream, rc.Width = width; rc.Height = height;
- initresult = CoInitialize(NULL); - - hr = CoCreateInstance(clsid, NULL, CLSCTX_INPROC_SERVER, - &IID_IWICBitmapEncoder, (void**)&encoder); + hr = WICCreateImagingFactory_Proxy(WINCODEC_SDK_VERSION, &factory); + if (FAILED(hr)) + return hresult_to_status(hr); + hr = IWICImagingFactory_CreateEncoder(factory, container, NULL, &encoder); + IWICImagingFactory_Release(factory); if (FAILED(hr)) - { - if (SUCCEEDED(initresult)) CoUninitialize(); return hresult_to_status(hr); - }
hr = IWICBitmapEncoder_Initialize(encoder, stream, WICBitmapEncoderNoCache);
@@ -4009,34 +4007,31 @@ static GpStatus encode_image_WIC(GpImage *image, IStream* stream, hr = IWICBitmapEncoder_Commit(encoder);
IWICBitmapEncoder_Release(encoder); - - if (SUCCEEDED(initresult)) CoUninitialize(); - return hresult_to_status(hr); }
static GpStatus encode_image_BMP(GpImage *image, IStream* stream, GDIPCONST CLSID* clsid, GDIPCONST EncoderParameters* params) { - return encode_image_WIC(image, stream, &CLSID_WICBmpEncoder, params); + return encode_image_wic(image, stream, &GUID_ContainerFormatBmp, params); }
static GpStatus encode_image_tiff(GpImage *image, IStream* stream, GDIPCONST CLSID* clsid, GDIPCONST EncoderParameters* params) { - return encode_image_WIC(image, stream, &CLSID_WICTiffEncoder, params); + return encode_image_wic(image, stream, &GUID_ContainerFormatTiff, params); }
static GpStatus encode_image_png(GpImage *image, IStream* stream, GDIPCONST CLSID* clsid, GDIPCONST EncoderParameters* params) { - return encode_image_WIC(image, stream, &CLSID_WICPngEncoder, params); + return encode_image_wic(image, stream, &GUID_ContainerFormatPng, params); }
static GpStatus encode_image_jpeg(GpImage *image, IStream* stream, GDIPCONST CLSID* clsid, GDIPCONST EncoderParameters* params) { - return encode_image_WIC(image, stream, &CLSID_WICJpegEncoder, params); + return encode_image_wic(image, stream, &GUID_ContainerFormatJpeg, params); }
/*****************************************************************************