Module: wine Branch: master Commit: 7fe9858988eabf377ab5e2c64d92f973574b1ae8 URL: http://source.winehq.org/git/wine.git/?a=commit;h=7fe9858988eabf377ab5e2c64d... Author: Henri Verbeet <hverbeet(a)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(a)codeweavers.com> Signed-off-by: Alexandre Julliard <julliard(a)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;