[gtk+/gtk-3-22] wayland: Push NULL buffer when hiding a GdkWindow



commit 0f2e19c01059d151d606e7006d95dc7f60c222fc
Author: Carlos Garnacho <carlosg gnome org>
Date:   Thu Jan 19 16:07:13 2017 +0100

    wayland: Push NULL buffer when hiding a GdkWindow
    
    This is how windows are meant to be hidden as per the wayland
    protocol, there's no need to destroy the xdg_surface and other
    interfaces.
    
    Also, rename gdk_wayland_window_hide_surface() to clear_surface(),
    as that's what it does.
    
    https://bugzilla.gnome.org/show_bug.cgi?id=773686

 gdk/wayland/gdkwindow-wayland.c |   11 +++++++----
 1 files changed, 7 insertions(+), 4 deletions(-)
---
diff --git a/gdk/wayland/gdkwindow-wayland.c b/gdk/wayland/gdkwindow-wayland.c
index d629288..508930b 100644
--- a/gdk/wayland/gdkwindow-wayland.c
+++ b/gdk/wayland/gdkwindow-wayland.c
@@ -2454,7 +2454,7 @@ unmap_popups_for_window (GdkWindow *window)
 }
 
 static void
-gdk_wayland_window_hide_surface (GdkWindow *window)
+gdk_wayland_window_clear_surface (GdkWindow *window)
 {
   GdkWaylandDisplay *display_wayland = GDK_WAYLAND_DISPLAY (gdk_window_get_display (window));
   GdkWindowImplWayland *impl = GDK_WINDOW_IMPL_WAYLAND (window->impl);
@@ -2549,7 +2549,10 @@ gdk_wayland_window_hide_surface (GdkWindow *window)
 static void
 gdk_wayland_window_hide (GdkWindow *window)
 {
-  gdk_wayland_window_hide_surface (window);
+  GdkWindowImplWayland *impl = GDK_WINDOW_IMPL_WAYLAND (window->impl);
+
+  wl_surface_attach (impl->display_server.wl_surface, NULL, 0, 0);
+  wl_surface_commit (impl->display_server.wl_surface);
   _gdk_window_clear_update_area (window);
 }
 
@@ -2563,7 +2566,7 @@ gdk_window_wayland_withdraw (GdkWindow *window)
 
       g_assert (!GDK_WINDOW_IS_MAPPED (window));
 
-      gdk_wayland_window_hide_surface (window);
+      gdk_wayland_window_clear_surface (window);
     }
 }
 
@@ -2871,7 +2874,7 @@ gdk_wayland_window_destroy (GdkWindow *window,
    */
   g_return_if_fail (!foreign_destroy);
 
-  gdk_wayland_window_hide_surface (window);
+  gdk_wayland_window_clear_surface (window);
   drop_cairo_surfaces (window);
 }
 


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