[gtk+/gtk-3-22] gdk: Clear GL context when window is withdrawn



commit 1c3aff5101449fec8d11a2b17eb7f01cb1913cf7
Author: Andrea Azzarone <andrea azzarone canonical com>
Date:   Wed Oct 25 09:34:47 2017 -0400

    gdk: Clear GL context when window is withdrawn
    
    Some clients (e.g. gnome-online-accounts) quickly unmap and map
    a window. With some backends the backend surface will be replaced
    causing the application to crash because the GL context is still
    using the old surface. Clearing the GL context when a window is
    withdrawn fixes this.
    
    https://bugzilla.gnome.org/show_bug.cgi?id=789141

 gdk/gdkwindow.c |    5 +++++
 1 files changed, 5 insertions(+), 0 deletions(-)
---
diff --git a/gdk/gdkwindow.c b/gdk/gdkwindow.c
index c0e0a7d..79804cd 100644
--- a/gdk/gdkwindow.c
+++ b/gdk/gdkwindow.c
@@ -5744,6 +5744,7 @@ gdk_window_withdraw (GdkWindow *window)
 {
   GdkWindowImplClass *impl_class;
   gboolean was_mapped;
+  GdkGLContext *current_context;
 
   g_return_if_fail (GDK_IS_WINDOW (window));
 
@@ -5768,6 +5769,10 @@ gdk_window_withdraw (GdkWindow *window)
          _gdk_synthesize_crossing_events_for_geometry_change (window->parent);
        }
 
+      current_context = gdk_gl_context_get_current ();
+      if (current_context != NULL && gdk_gl_context_get_window (current_context) == window)
+        gdk_gl_context_clear_current ();
+
       recompute_visible_regions (window, FALSE);
       gdk_window_clear_old_updated_area (window);
     }


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]