[PATCH 1/5] d2d1: Implement d2d_bitmap_GetFactory().

Henri Verbeet hverbeet at codeweavers.com
Tue Aug 4 01:53:25 CDT 2015


---
 dlls/d2d1/bitmap.c       | 8 ++++++--
 dlls/d2d1/d2d1_private.h | 1 +
 2 files changed, 7 insertions(+), 2 deletions(-)

diff --git a/dlls/d2d1/bitmap.c b/dlls/d2d1/bitmap.c
index 00359cb..2627501 100644
--- a/dlls/d2d1/bitmap.c
+++ b/dlls/d2d1/bitmap.c
@@ -67,6 +67,7 @@ static ULONG STDMETHODCALLTYPE d2d_bitmap_Release(ID2D1Bitmap *iface)
     if (!refcount)
     {
         ID3D10ShaderResourceView_Release(bitmap->view);
+        ID2D1Factory_Release(bitmap->factory);
         HeapFree(GetProcessHeap(), 0, bitmap);
     }
 
@@ -75,9 +76,11 @@ static ULONG STDMETHODCALLTYPE d2d_bitmap_Release(ID2D1Bitmap *iface)
 
 static void STDMETHODCALLTYPE d2d_bitmap_GetFactory(ID2D1Bitmap *iface, ID2D1Factory **factory)
 {
-    FIXME("iface %p, factory %p stub!\n", iface, factory);
+    struct d2d_bitmap *bitmap = impl_from_ID2D1Bitmap(iface);
+
+    TRACE("iface %p, factory %p.\n", iface, factory);
 
-    *factory = NULL;
+    ID2D1Factory_AddRef(*factory = bitmap->factory);
 }
 
 static D2D1_SIZE_F * STDMETHODCALLTYPE d2d_bitmap_GetSize(ID2D1Bitmap *iface, D2D1_SIZE_F *size)
@@ -212,6 +215,7 @@ HRESULT d2d_bitmap_init(struct d2d_bitmap *bitmap, struct d2d_d3d_render_target
 
     bitmap->ID2D1Bitmap_iface.lpVtbl = &d2d_bitmap_vtbl;
     bitmap->refcount = 1;
+    ID2D1Factory_AddRef(bitmap->factory = render_target->factory);
 
     texture_desc.Width = size.width;
     texture_desc.Height = size.height;
diff --git a/dlls/d2d1/d2d1_private.h b/dlls/d2d1/d2d1_private.h
index 3f2ac3e..d3c0117 100644
--- a/dlls/d2d1/d2d1_private.h
+++ b/dlls/d2d1/d2d1_private.h
@@ -188,6 +188,7 @@ struct d2d_bitmap
     ID2D1Bitmap ID2D1Bitmap_iface;
     LONG refcount;
 
+    ID2D1Factory *factory;
     ID3D10ShaderResourceView *view;
     D2D1_SIZE_U pixel_size;
     D2D1_PIXEL_FORMAT format;
-- 
2.1.4




More information about the wine-patches mailing list