Dmitry Timoshkov : gdiplus: Avoid casting IWICBitmapFrameDecode to IWICBitmapSource.

Alexandre Julliard julliard at winehq.org
Tue Jun 26 13:34:16 CDT 2012


Module: wine
Branch: master
Commit: d079b66ba5cc5465f4745ff11342fdd285c94906
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=d079b66ba5cc5465f4745ff11342fdd285c94906

Author: Dmitry Timoshkov <dmitry at baikal.ru>
Date:   Mon Jun 25 20:31:03 2012 +0900

gdiplus: Avoid casting IWICBitmapFrameDecode to IWICBitmapSource.

---

 dlls/gdiplus/image.c |    9 ++++++---
 1 files changed, 6 insertions(+), 3 deletions(-)

diff --git a/dlls/gdiplus/image.c b/dlls/gdiplus/image.c
index db4518a..d6e2a8c 100644
--- a/dlls/gdiplus/image.c
+++ b/dlls/gdiplus/image.c
@@ -2676,12 +2676,14 @@ static GpStatus decode_image_wic(IStream* stream, REFCLSID clsid, UINT active_fr
 
         if (SUCCEEDED(hr))
         {
+            IWICBitmapSource *bmp_source;
+            IWICBitmapFrameDecode_QueryInterface(frame, &IID_IWICBitmapSource, (void **)&bmp_source);
+
             for (i=0; wic_pixel_formats[i]; i++)
             {
                 if (IsEqualGUID(&wic_format, wic_pixel_formats[i]))
                 {
-                    source = (IWICBitmapSource*)frame;
-                    IWICBitmapSource_AddRef(source);
+                    source = bmp_source;
                     gdip_format = wic_gdip_formats[i];
                     break;
                 }
@@ -2689,8 +2691,9 @@ static GpStatus decode_image_wic(IStream* stream, REFCLSID clsid, UINT active_fr
             if (!source)
             {
                 /* unknown format; fall back on 32bppARGB */
-                hr = WICConvertBitmapSource(&GUID_WICPixelFormat32bppBGRA, (IWICBitmapSource*)frame, &source);
+                hr = WICConvertBitmapSource(&GUID_WICPixelFormat32bppBGRA, bmp_source, &source);
                 gdip_format = PixelFormat32bppARGB;
+                IWICBitmapSource_Release(bmp_source);
             }
         }
 




More information about the wine-cvs mailing list