Nikolay Sivov : wincodecs: Add support for WICBitmapNoCache in CreateBitmapFromSource() for bitmap as a source.
Alexandre Julliard
julliard at winehq.org
Thu Nov 8 14:47:26 CST 2018
Module: wine
Branch: master
Commit: 70a3e86997ad1c1419cd02b9b49db7953cf5c4e4
URL: https://source.winehq.org/git/wine.git/?a=commit;h=70a3e86997ad1c1419cd02b9b49db7953cf5c4e4
Author: Nikolay Sivov <nsivov at codeweavers.com>
Date: Thu Nov 8 15:20:55 2018 +0300
wincodecs: Add support for WICBitmapNoCache in CreateBitmapFromSource() for bitmap as a source.
Signed-off-by: Nikolay Sivov <nsivov at codeweavers.com>
Signed-off-by: Vincent Povirk <vincent at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>
---
dlls/windowscodecs/imgfactory.c | 10 ++++++++++
dlls/windowscodecs/tests/bitmap.c | 1 -
2 files changed, 10 insertions(+), 1 deletion(-)
diff --git a/dlls/windowscodecs/imgfactory.c b/dlls/windowscodecs/imgfactory.c
index 78919a7..b564efc 100644
--- a/dlls/windowscodecs/imgfactory.c
+++ b/dlls/windowscodecs/imgfactory.c
@@ -19,6 +19,7 @@
#include "config.h"
+#include <assert.h>
#include <stdarg.h>
#define COBJMACROS
@@ -501,9 +502,18 @@ static HRESULT create_bitmap_from_source_rect(IWICBitmapSource *piBitmapSource,
IWICPixelFormatInfo2 *formatinfo;
WICPixelFormatNumericRepresentation format_type;
+ assert(!rect || (rect && option == WICBitmapCacheOnLoad));
+
if (!piBitmapSource || !ppIBitmap)
return E_INVALIDARG;
+ if (option == WICBitmapNoCache && SUCCEEDED(IWICBitmapSource_QueryInterface(piBitmapSource,
+ &IID_IWICBitmap, (void **)&result)))
+ {
+ *ppIBitmap = result;
+ return S_OK;
+ }
+
hr = IWICBitmapSource_GetSize(piBitmapSource, &width, &height);
if (SUCCEEDED(hr) && rect)
diff --git a/dlls/windowscodecs/tests/bitmap.c b/dlls/windowscodecs/tests/bitmap.c
index 61e985a..5c225d2 100644
--- a/dlls/windowscodecs/tests/bitmap.c
+++ b/dlls/windowscodecs/tests/bitmap.c
@@ -456,7 +456,6 @@ static void test_createbitmapfromsource(void)
hr = IWICImagingFactory_CreateBitmapFromSource(factory, (IWICBitmapSource *)bitmap,
WICBitmapNoCache, &bitmap2);
ok(hr == S_OK, "IWICImagingFactory_CreateBitmapFromSource failed hr=%x\n", hr);
-todo_wine
ok(bitmap2 == bitmap, "Unexpected bitmap instance.\n");
IWICBitmap_Release(bitmap2);
More information about the wine-cvs
mailing list