gdk: Unset the DrawingContext <-> cairo_t link on dispose

When disposing a GdkDrawingContext we should unset the association
between the instance and the Cairo context; this avoids stale pointers
in case a reference that has acquired on the Cairo context survives the
lifetime of the GdkDrawingContext.
This commit is contained in:
Emmanuele Bassi 2016-06-12 18:55:34 +01:00
parent 222bcf1a71
commit 0ca59bf85a

View File

@ -64,6 +64,12 @@ gdk_drawing_context_dispose (GObject *gobject)
{
GdkDrawingContext *self = GDK_DRAWING_CONTEXT (gobject);
/* Unset the drawing context, in case somebody is holding
* onto the Cairo context
*/
if (self->cr != NULL)
gdk_cairo_set_drawing_context (self->cr, NULL);
g_clear_object (&self->window);
g_clear_pointer (&self->clip, cairo_region_destroy);
g_clear_pointer (&self->cr, cairo_destroy);