Module: wine Branch: master Commit: 2689f3e68b624631e1762aa284d3968617ef3c2a URL: https://source.winehq.org/git/wine.git/?a=commit;h=2689f3e68b624631e1762aa28...
Author: Zebediah Figura zfigura@codeweavers.com Date: Tue Aug 21 15:01:40 2018 -0500
ddraw: Avoid leaking references to the wined3d device.
Signed-off-by: Zebediah Figura zfigura@codeweavers.com Signed-off-by: Henri Verbeet hverbeet@codeweavers.com Signed-off-by: Alexandre Julliard julliard@winehq.org
---
dlls/ddraw/surface.c | 9 +++++++++ 1 file changed, 9 insertions(+)
diff --git a/dlls/ddraw/surface.c b/dlls/ddraw/surface.c index cb837b1..cf09f9c 100644 --- a/dlls/ddraw/surface.c +++ b/dlls/ddraw/surface.c @@ -527,7 +527,16 @@ static void ddraw_surface_cleanup(struct ddraw_surface *surface) surf = surface->complex_array[i]; surface->complex_array[i] = NULL; if (!surf->is_complex_root) + { + struct ddraw_texture *texture = wined3d_texture_get_parent(surf->wined3d_texture); + struct wined3d_device *wined3d_device = texture->wined3d_device; + struct ddraw_surface *root = texture->root; + ddraw_surface_cleanup(surf); + + if (surf == root) + wined3d_device_decref(wined3d_device); + } }
if (surface->device1)