From: Henri Verbeet Subject: [PATCH 1/5] d2d1: Implement d2d_bitmap_GetFactory(). Message-Id: <1438671209-27903-1-git-send-email-hverbeet@codeweavers.com> Date: Tue, 4 Aug 2015 08:53:25 +0200 --- 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