From: Sebastian Keller Date: Tue, 22 Mar 2022 07:11:18 +0000 (+0100) Subject: surface: Use correct display when destroying a surface for depth switch X-Git-Tag: archive/raspbian/4.6.5+ds-1+rpi1~1^2~19^2~1^2~36 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=018bbd67742d3b9b75eaa22b10f63ed11e0cab2d;p=gtk4.git surface: Use correct display when destroying a surface for depth switch When surface depth switches from non-high-depth to high-depth (or vice versa) the current surface has to be destroyed before a new one can be created for this window. eglDestroySurface however was getting passed a GdkDisplay, rather than the EGLDisplay it expects. As a result the old surface did not get destroyed and the new surface could not be created causing rendering to freeze. Fixes: https://gitlab.gnome.org/GNOME/gtk/-/issues/4773 --- diff --git a/gdk/gdksurface.c b/gdk/gdksurface.c index ddfa767a99..16d668a931 100644 --- a/gdk/gdksurface.c +++ b/gdk/gdksurface.c @@ -1125,7 +1125,7 @@ gdk_surface_ensure_egl_surface (GdkSurface *self, gdk_display_get_egl_config_high_depth (display) != gdk_display_get_egl_config (display)) { gdk_gl_context_clear_current_if_surface (self); - eglDestroySurface (gdk_surface_get_display (self), priv->egl_surface); + eglDestroySurface (gdk_display_get_egl_display (display), priv->egl_surface); priv->egl_surface = NULL; }