From feb5aa437096c5aca1343556317dfa0eb1a327e8 Mon Sep 17 00:00:00 2001 From: =?utf8?q?J=C3=B3zef=20Kucia?= Date: Tue, 9 May 2017 12:51:43 +0200 Subject: [PATCH] d3d11: Implement d3d11_class_linkage_GetDevice(). MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Signed-off-by: Józef Kucia Signed-off-by: Henri Verbeet Signed-off-by: Alexandre Julliard --- dlls/d3d11/d3d11_private.h | 1 + dlls/d3d11/shader.c | 12 +++++++++++- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/dlls/d3d11/d3d11_private.h b/dlls/d3d11/d3d11_private.h index cbc8d7c66d0..b86486e4e9b 100644 --- a/dlls/d3d11/d3d11_private.h +++ b/dlls/d3d11/d3d11_private.h @@ -373,6 +373,7 @@ struct d3d11_class_linkage LONG refcount; struct wined3d_private_store private_store; + ID3D11Device *device; }; HRESULT d3d11_class_linkage_create(struct d3d_device *device, diff --git a/dlls/d3d11/shader.c b/dlls/d3d11/shader.c index b8c50d9e96c..3699851b89c 100644 --- a/dlls/d3d11/shader.c +++ b/dlls/d3d11/shader.c @@ -2127,8 +2127,12 @@ static ULONG STDMETHODCALLTYPE d3d11_class_linkage_Release(ID3D11ClassLinkage *i if (!refcount) { + ID3D11Device *device = class_linkage->device; + wined3d_private_store_cleanup(&class_linkage->private_store); HeapFree(GetProcessHeap(), 0, class_linkage); + + ID3D11Device_Release(device); } return refcount; @@ -2137,7 +2141,11 @@ static ULONG STDMETHODCALLTYPE d3d11_class_linkage_Release(ID3D11ClassLinkage *i static void STDMETHODCALLTYPE d3d11_class_linkage_GetDevice(ID3D11ClassLinkage *iface, ID3D11Device **device) { - FIXME("iface %p, device %p stub!\n", iface, device); + struct d3d11_class_linkage *class_linkage = impl_from_ID3D11ClassLinkage(iface); + + TRACE("iface %p, device %p.\n", iface, device); + + ID3D11Device_AddRef(*device = class_linkage->device); } static HRESULT STDMETHODCALLTYPE d3d11_class_linkage_GetPrivateData(ID3D11ClassLinkage *iface, @@ -2218,6 +2226,8 @@ HRESULT d3d11_class_linkage_create(struct d3d_device *device, struct d3d11_class object->refcount = 1; wined3d_private_store_init(&object->private_store); + ID3D11Device_AddRef(object->device = &device->ID3D11Device_iface); + TRACE("Created class linkage %p.\n", object); *class_linkage = object; -- 2.11.4.GIT