summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatthias Clasen <mclasen@redhat.com>2019-10-22 19:52:14 -0400
committerMatthias Clasen <mclasen@redhat.com>2019-10-22 20:28:28 -0400
commit0284d40e24586278d3997ab2ace145ba16cbd9cc (patch)
tree1a9b8669e4edbb5d1b5d75f7ef0e4e07d2b0f9dd
parentffaf26fdf5d8f2d6b88a50b175479cc45969ba0a (diff)
downloadgtk+-0284d40e24586278d3997ab2ace145ba16cbd9cc.tar.gz
window: Unrealize renderer before children
Unrealize the GSK renderer before destroying children. This makes the renderer drop any texture caches that it might have, so that we don't needlessly download them when releasing the widget-side holder objects. As a fortunate side effect, this fixes crashes on exit with GtkGLArea-containing windows under Wayland.
-rw-r--r--gtk/gtkwindow.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/gtk/gtkwindow.c b/gtk/gtkwindow.c
index c93b733f61..4891a36167 100644
--- a/gtk/gtkwindow.c
+++ b/gtk/gtkwindow.c
@@ -5687,6 +5687,8 @@ gtk_window_unrealize (GtkWidget *widget)
info->last.flags = 0;
}
+ gsk_renderer_unrealize (priv->renderer);
+
if (priv->popup_menu)
{
gtk_widget_destroy (priv->popup_menu);
@@ -5700,7 +5702,6 @@ gtk_window_unrealize (GtkWidget *widget)
(GtkCallback) gtk_widget_unrealize,
NULL);
- gsk_renderer_unrealize (priv->renderer);
g_clear_object (&priv->renderer);
surface = priv->surface;