[gtk/gtk-3-24: 1/2] wayland: Signal gtk-shell surface destruction to the server
- From: Jonas Ådahl <jadahl src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk/gtk-3-24: 1/2] wayland: Signal gtk-shell surface destruction to the server
- Date: Fri, 29 Jan 2021 16:21:10 +0000 (UTC)
commit 9459be11a9a0dc271cb43420b9e21c8740d525fd
Author: Sebastian Keller <skeller gnome org>
Date: Tue Jun 9 19:34:43 2020 +0200
wayland: Signal gtk-shell surface destruction to the server
This adds a "release" destructor for the gtk_surface1 interface which
signals to the server that a surface has been destroyed on the client
side, which the current "destroy" does not do.
Ideally the protocol would have specified a destroy request marked as
destructor to handle this automatically, however this is no longer
possible due to the destroy method being implicitly generated in the
absence of an explicit request in the protocol. Adding a destroy request
marked as destructor now would generate a new destroy method that
unconditionally would send the request to the server, which would break
clients running on servers not supporting that request.
gdk/wayland/gdkdisplay-wayland.c | 2 +-
gdk/wayland/gdkwindow-wayland.c | 6 +++++-
gdk/wayland/protocol/gtk-shell.xml | 7 +++++--
3 files changed, 11 insertions(+), 4 deletions(-)
---
diff --git a/gdk/wayland/gdkdisplay-wayland.c b/gdk/wayland/gdkdisplay-wayland.c
index 16e3054293..147bb56b49 100644
--- a/gdk/wayland/gdkdisplay-wayland.c
+++ b/gdk/wayland/gdkdisplay-wayland.c
@@ -84,7 +84,7 @@
#define MIN_SYSTEM_BELL_DELAY_MS 20
-#define GTK_SHELL1_VERSION 3
+#define GTK_SHELL1_VERSION 4
static void _gdk_wayland_display_load_cursor_theme (GdkWaylandDisplay *display_wayland);
diff --git a/gdk/wayland/gdkwindow-wayland.c b/gdk/wayland/gdkwindow-wayland.c
index cc5e98e5f3..57770029cd 100644
--- a/gdk/wayland/gdkwindow-wayland.c
+++ b/gdk/wayland/gdkwindow-wayland.c
@@ -3306,7 +3306,11 @@ gdk_wayland_window_hide_surface (GdkWindow *window)
if (impl->display_server.gtk_surface)
{
- gtk_surface1_destroy (impl->display_server.gtk_surface);
+ if (display_wayland->gtk_shell_version >=
+ GTK_SURFACE1_RELEASE_SINCE_VERSION)
+ gtk_surface1_release (impl->display_server.gtk_surface);
+ else
+ gtk_surface1_destroy (impl->display_server.gtk_surface);
impl->display_server.gtk_surface = NULL;
impl->application.was_set = FALSE;
}
diff --git a/gdk/wayland/protocol/gtk-shell.xml b/gdk/wayland/protocol/gtk-shell.xml
index fb91940b30..1aab593c42 100644
--- a/gdk/wayland/protocol/gtk-shell.xml
+++ b/gdk/wayland/protocol/gtk-shell.xml
@@ -1,6 +1,6 @@
<protocol name="gtk">
- <interface name="gtk_shell1" version="3">
+ <interface name="gtk_shell1" version="4">
<description summary="gtk specific extensions">
gtk_shell is a protocol extension providing additional features for
clients implementing it.
@@ -35,7 +35,7 @@
</request>
</interface>
- <interface name="gtk_surface1" version="3">
+ <interface name="gtk_surface1" version="4">
<request name="set_dbus_properties">
<arg name="application_id" type="string" allow-null="true"/>
<arg name="app_menu_path" type="string" allow-null="true"/>
@@ -82,6 +82,9 @@
<request name="request_focus" since="3">
<arg name="startup_id" type="string" allow-null="true"/>
</request>
+
+ <!-- Version 4 additions -->
+ <request name="release" type="destructor" since="4"/>
</interface>
</protocol>
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]