Blob Blame History Raw
From 3fcaddfefa2024e04217e302e72e15dd22014df0 Mon Sep 17 00:00:00 2001
From: Chris Wilson <chris@chris-wilson.co.uk>
Date: Fri, 15 Feb 2013 14:04:21 +0000
Subject: [PATCH 1/3] win32: Free the fallback upon finish
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

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>
---
 src/win32/cairo-win32-display-surface.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/src/win32/cairo-win32-display-surface.c b/src/win32/cairo-win32-display-surface.c
index ccd285d..0390625 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;
     }
-- 
1.8.1.1.439.g50a6b54