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.
This commit is contained in:
Matthias Clasen
2019-10-22 19:52:14 -04:00
parent ffaf26fdf5
commit 0284d40e24

View File

@@ -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;