Henri Verbeet : d3d10core: Store the resource in the d3d10core rendertarget view.
Alexandre Julliard
julliard at winehq.org
Mon Sep 10 15:22:10 CDT 2012
Module: wine
Branch: master
Commit: 739e302e6f0934b77c40f1cf439806167178feb7
URL: http://source.winehq.org/git/wine.git/?a=commit;h=739e302e6f0934b77c40f1cf439806167178feb7
Author: Henri Verbeet <hverbeet at codeweavers.com>
Date: Sat Sep 8 11:26:23 2012 +0200
d3d10core: Store the resource in the d3d10core rendertarget view.
---
dlls/d3d10core/d3d10core_private.h | 1 +
dlls/d3d10core/view.c | 27 +++++++--------------------
2 files changed, 8 insertions(+), 20 deletions(-)
diff --git a/dlls/d3d10core/d3d10core_private.h b/dlls/d3d10core/d3d10core_private.h
index 885a2ef..153c5cc 100644
--- a/dlls/d3d10core/d3d10core_private.h
+++ b/dlls/d3d10core/d3d10core_private.h
@@ -140,6 +140,7 @@ struct d3d10_rendertarget_view
struct wined3d_rendertarget_view *wined3d_view;
D3D10_RENDER_TARGET_VIEW_DESC desc;
+ ID3D10Resource *resource;
};
HRESULT d3d10_rendertarget_view_init(struct d3d10_rendertarget_view *view,
diff --git a/dlls/d3d10core/view.c b/dlls/d3d10core/view.c
index d038faa..a542e63 100644
--- a/dlls/d3d10core/view.c
+++ b/dlls/d3d10core/view.c
@@ -339,6 +339,7 @@ static ULONG STDMETHODCALLTYPE d3d10_rendertarget_view_Release(ID3D10RenderTarge
if (!refcount)
{
wined3d_rendertarget_view_decref(This->wined3d_view);
+ ID3D10Resource_Release(This->resource);
HeapFree(GetProcessHeap(), 0, This);
}
@@ -383,29 +384,12 @@ static HRESULT STDMETHODCALLTYPE d3d10_rendertarget_view_SetPrivateDataInterface
static void STDMETHODCALLTYPE d3d10_rendertarget_view_GetResource(ID3D10RenderTargetView *iface,
ID3D10Resource **resource)
{
- struct d3d10_rendertarget_view *This = impl_from_ID3D10RenderTargetView(iface);
- struct wined3d_resource *wined3d_resource;
- IUnknown *parent;
- HRESULT hr;
+ struct d3d10_rendertarget_view *view = impl_from_ID3D10RenderTargetView(iface);
TRACE("iface %p, resource %p\n", iface, resource);
- wined3d_resource = wined3d_rendertarget_view_get_resource(This->wined3d_view);
- if (!wined3d_resource)
- {
- ERR("Failed to get wined3d resource.\n");
- *resource = NULL;
- return;
- }
-
- parent = wined3d_resource_get_parent(wined3d_resource);
- hr = IUnknown_QueryInterface(parent, &IID_ID3D10Resource, (void **)&resource);
- if (FAILED(hr))
- {
- ERR("Resource parent isn't a d3d10 resource, hr %#x\n", hr);
- *resource = NULL;
- return;
- }
+ *resource = view->resource;
+ ID3D10Resource_AddRef(*resource);
}
/* ID3D10RenderTargetView methods */
@@ -470,6 +454,9 @@ HRESULT d3d10_rendertarget_view_init(struct d3d10_rendertarget_view *view,
return hr;
}
+ view->resource = resource;
+ ID3D10Resource_AddRef(resource);
+
return S_OK;
}
More information about the wine-cvs
mailing list