cairo/src/win32
Chris Wilson 337ab1f8d9 font: Push the last reference dec into the backend->destroy() callback
In order to close a race between locking the backend and resurrecting a
font via the cache, we need to keep the font face alive until after we
take the backend lock. Once we have that lock, we can drop our reference
and test if that was the last. Otherwise we must abort the destroy().

This fixes the double-free exposed by multithreaded applications trying
to create and destroy the same font concurrently.

Reported-by: Weeble <clockworksaint@gmail.com>
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=69470
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2013-09-17 16:37:47 +01:00
..
cairo-win32-debug.c win32: Rebase on the new compositor infrastructure 2012-02-15 14:37:11 +00:00
cairo-win32-device.c win32: Fix is_win98() 2013-02-07 10:02:31 +00:00
cairo-win32-display-surface.c win32: Prevent double-free of similar images 2013-08-23 12:53:27 +01:00
cairo-win32-font.c font: Push the last reference dec into the backend->destroy() callback 2013-09-17 16:37:47 +01:00
cairo-win32-gdi-compositor.c win32: fix corrupted drawing 2013-04-02 08:39:05 +01:00
cairo-win32-printing-surface.c Split cairo-recording-surface-private into struct+inlines 2012-04-19 12:46:34 +01:00
cairo-win32-private.h win32: Rebase on the new compositor infrastructure 2012-02-15 14:37:11 +00:00
cairo-win32-surface.c doc: Add "since" tag to documentation 2012-03-29 11:03:18 +02:00
cairo-win32-system.c win32: Rebase on the new compositor infrastructure 2012-02-15 14:37:11 +00:00