Signed-off-by: Zebediah Figura zfigura@codeweavers.com --- The ddraw surfaces associated with backbuffers take a reference to the wined3d device, but this was never released.
This patch was all but written by Henri Verbeet.
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)