window: Clear the renderer un unrealize
authorBenjamin Otte <otte@redhat.com>
Wed, 1 Nov 2017 14:46:20 +0000 (15:46 +0100)
committerBenjamin Otte <otte@redhat.com>
Wed, 1 Nov 2017 14:48:00 +0000 (15:48 +0100)
We disconnect from the GDK window, so the renderer can't keep any useful
state.

Plus, we might be using an entirely different window next time we
realize (after a call to gtk_window_set_display() for example) that should
use a completely different renderer anyway.

gtk/gtkwindow.c

index c06b59df4d47a9cd34fa930be6bd00697e2c1af4..c9716a698b58951707455c69e80b5303b74dcb14 100644 (file)
@@ -6995,8 +6995,8 @@ gtk_window_unrealize (GtkWidget *widget)
                         (GtkCallback) gtk_widget_unrealize,
                         NULL);
 
-  if (priv->renderer != NULL)
-    gsk_renderer_unrealize (priv->renderer);
+  gsk_renderer_unrealize (priv->renderer);
+  g_clear_object (&priv->renderer);
 
   GTK_WIDGET_CLASS (gtk_window_parent_class)->unrealize (widget);