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:
parent
222bcf1a71
commit
0ca59bf85a
@ -64,6 +64,12 @@ gdk_drawing_context_dispose (GObject *gobject)
|
|||||||
{
|
{
|
||||||
GdkDrawingContext *self = GDK_DRAWING_CONTEXT (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_object (&self->window);
|
||||||
g_clear_pointer (&self->clip, cairo_region_destroy);
|
g_clear_pointer (&self->clip, cairo_region_destroy);
|
||||||
g_clear_pointer (&self->cr, cairo_destroy);
|
g_clear_pointer (&self->cr, cairo_destroy);
|
||||||
|
Loading…
Reference in New Issue
Block a user