[gtk+] gdkwindow-wayland: Destroy the wl_surface too when hiding a window
- From: Jasper St. Pierre <jstpierre src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk+] gdkwindow-wayland: Destroy the wl_surface too when hiding a window
- Date: Thu, 19 Jun 2014 19:11:09 +0000 (UTC)
commit 87e2a7d4b23e633d0f2263d6ebd205c113eede0f
Author: Jasper St. Pierre <jstpierre mecheye net>
Date: Thu Jun 19 15:04:09 2014 -0400
gdkwindow-wayland: Destroy the wl_surface too when hiding a window
wl_surfaces can't switch roles, so destroying the xdg_surface but not
the wl_surface means that we could get an error when trying to re-map
the surface.
We could fix this by not destroying the xdg resource and only do it at
finalization time, but it's just as easy to just create a new wl_surface.
gdk/wayland/gdkwindow-wayland.c | 25 ++++++++-----------------
1 files changed, 8 insertions(+), 17 deletions(-)
---
diff --git a/gdk/wayland/gdkwindow-wayland.c b/gdk/wayland/gdkwindow-wayland.c
index 0367009..745deb9 100644
--- a/gdk/wayland/gdkwindow-wayland.c
+++ b/gdk/wayland/gdkwindow-wayland.c
@@ -1068,8 +1068,7 @@ gdk_wayland_window_show (GdkWindow *window,
}
static void
-gdk_wayland_window_hide_surface (GdkWindow *window,
- gboolean is_destroy)
+gdk_wayland_window_hide_surface (GdkWindow *window)
{
GdkWindowImplWayland *impl = GDK_WINDOW_IMPL_WAYLAND (window->impl);
@@ -1086,19 +1085,11 @@ gdk_wayland_window_hide_surface (GdkWindow *window,
impl->xdg_popup = NULL;
}
- if (!is_destroy)
- {
- wl_surface_attach (impl->surface, NULL, 0, 0);
- wl_surface_commit (impl->surface);
- }
- else
- {
- wl_surface_destroy (impl->surface);
- impl->surface = NULL;
+ wl_surface_destroy (impl->surface);
+ impl->surface = NULL;
- g_slist_free (impl->outputs);
- impl->outputs = NULL;
- }
+ g_slist_free (impl->outputs);
+ impl->outputs = NULL;
}
impl->mapped = FALSE;
@@ -1107,7 +1098,7 @@ gdk_wayland_window_hide_surface (GdkWindow *window,
static void
gdk_wayland_window_hide (GdkWindow *window)
{
- gdk_wayland_window_hide_surface (window, FALSE);
+ gdk_wayland_window_hide_surface (window);
_gdk_window_clear_update_area (window);
}
@@ -1121,7 +1112,7 @@ gdk_window_wayland_withdraw (GdkWindow *window)
g_assert (!GDK_WINDOW_IS_MAPPED (window));
- gdk_wayland_window_hide_surface (window, FALSE);
+ gdk_wayland_window_hide_surface (window);
}
}
@@ -1332,7 +1323,7 @@ gdk_wayland_window_destroy (GdkWindow *window,
*/
g_return_if_fail (!foreign_destroy);
- gdk_wayland_window_hide_surface (window, TRUE);
+ gdk_wayland_window_hide_surface (window);
if (impl->cairo_surface)
cairo_surface_finish (impl->cairo_surface);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]