Module: wine Branch: master Commit: 7fe9858988eabf377ab5e2c64d92f973574b1ae8 URL: http://source.winehq.org/git/wine.git/?a=commit;h=7fe9858988eabf377ab5e2c64d...
Author: Henri Verbeet hverbeet@codeweavers.com Date: Tue Jun 21 10:32:47 2016 +0200
wined3d: Send rendertarget view destruction through the command stream.
Signed-off-by: Henri Verbeet hverbeet@codeweavers.com Signed-off-by: Alexandre Julliard julliard@winehq.org
---
dlls/wined3d/view.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-)
diff --git a/dlls/wined3d/view.c b/dlls/wined3d/view.c index 329a0bb..e9e62d1 100644 --- a/dlls/wined3d/view.c +++ b/dlls/wined3d/view.c @@ -33,6 +33,11 @@ ULONG CDECL wined3d_rendertarget_view_incref(struct wined3d_rendertarget_view *v return refcount; }
+static void wined3d_rendertarget_view_destroy_object(void *object) +{ + HeapFree(GetProcessHeap(), 0, object); +} + ULONG CDECL wined3d_rendertarget_view_decref(struct wined3d_rendertarget_view *view) { ULONG refcount = InterlockedDecrement(&view->refcount); @@ -41,11 +46,13 @@ ULONG CDECL wined3d_rendertarget_view_decref(struct wined3d_rendertarget_view *v
if (!refcount) { + struct wined3d_device *device = view->resource->device; + /* Call wined3d_object_destroyed() before releasing the resource, * since releasing the resource may end up destroying the parent. */ view->parent_ops->wined3d_object_destroyed(view->parent); wined3d_resource_decref(view->resource); - HeapFree(GetProcessHeap(), 0, view); + wined3d_cs_emit_destroy_object(device->cs, wined3d_rendertarget_view_destroy_object, view); }
return refcount;