Henri Verbeet : wined3d: Send shader destruction through the command stream.
Module: wine Branch: master Commit: 87f667b46843589c4656b7373f28536343e06f7b URL: http://source.winehq.org/git/wine.git/?a=commit;h=87f667b46843589c4656b7373f... Author: Henri Verbeet <hverbeet(a)codeweavers.com> Date: Wed Jun 22 10:39:01 2016 +0200 wined3d: Send shader 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/shader.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/dlls/wined3d/shader.c b/dlls/wined3d/shader.c index 8f3e145..7682850 100644 --- a/dlls/wined3d/shader.c +++ b/dlls/wined3d/shader.c @@ -2650,6 +2650,12 @@ ULONG CDECL wined3d_shader_incref(struct wined3d_shader *shader) return refcount; } +static void wined3d_shader_destroy_object(void *object) +{ + shader_cleanup(object); + HeapFree(GetProcessHeap(), 0, object); +} + ULONG CDECL wined3d_shader_decref(struct wined3d_shader *shader) { ULONG refcount = InterlockedDecrement(&shader->ref); @@ -2658,9 +2664,8 @@ ULONG CDECL wined3d_shader_decref(struct wined3d_shader *shader) if (!refcount) { - shader_cleanup(shader); shader->parent_ops->wined3d_object_destroyed(shader->parent); - HeapFree(GetProcessHeap(), 0, shader); + wined3d_cs_emit_destroy_object(shader->device->cs, wined3d_shader_destroy_object, shader); } return refcount;
participants (1)
-
Alexandre Julliard