diff options
author | Matthias Clasen <mclasen@redhat.com> | 2019-10-22 19:52:14 -0400 |
---|---|---|
committer | Matthias Clasen <mclasen@redhat.com> | 2019-10-22 20:28:28 -0400 |
commit | 0284d40e24586278d3997ab2ace145ba16cbd9cc (patch) | |
tree | 1a9b8669e4edbb5d1b5d75f7ef0e4e07d2b0f9dd | |
parent | ffaf26fdf5d8f2d6b88a50b175479cc45969ba0a (diff) | |
download | gtk+-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.c | 3 |
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; |