summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorChris Wilson <chris@chris-wilson.co.uk>2013-02-15 14:04:21 +0000
committerChris Wilson <chris@chris-wilson.co.uk>2013-02-15 14:08:11 +0000
commitfb1abbc4bc25c541cfb1084012a6a185c541c340 (patch)
treed23d8000b7632a3c879c7990e7282e00dd802371 /src
parent41e646e019911f8e566e4f9963036117750f862f (diff)
win32: Free the fallback upon finish
Zozó Teki pointed out that we leak the fallback surface upon finish in case it was active at the time as the preceding flush would only clear the damage and not decouple the fallback surface. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Diffstat (limited to 'src')
-rw-r--r--src/win32/cairo-win32-display-surface.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/src/win32/cairo-win32-display-surface.c b/src/win32/cairo-win32-display-surface.c
index ccd285d7d..039062520 100644
--- a/src/win32/cairo-win32-display-surface.c
+++ b/src/win32/cairo-win32-display-surface.c
@@ -429,6 +429,8 @@ _cairo_win32_display_surface_finish (void *abstract_surface)
DeleteDC (surface->win32.dc);
}
+ _cairo_win32_display_surface_discard_fallback (surface);
+
if (surface->initial_clip_rgn)
DeleteObject (surface->initial_clip_rgn);
@@ -758,6 +760,7 @@ _cairo_win32_display_surface_discard_fallback (cairo_win32_display_surface_t *su
TRACE ((stderr, "%s (surface=%d)\n",
__FUNCTION__, surface->win32.base.unique_id));
+ cairo_surface_finish (surface->fallback);
cairo_surface_destroy (surface->fallback);
surface->fallback = NULL;
}