wayland: Give toplevels a destroy hook
authorMatthias Clasen <mclasen@redhat.com>
Sun, 14 May 2023 21:37:41 +0000 (17:37 -0400)
committerMatthias Clasen <mclasen@redhat.com>
Mon, 15 May 2023 03:49:44 +0000 (23:49 -0400)
We will need to do some cleanup before the
wl_surface is destroyed, so add a hook for that.

gdk/wayland/gdksurface-wayland.c
gdk/wayland/gdktoplevel-wayland-private.h
gdk/wayland/gdktoplevel-wayland.c

index 5663a42d3804e6b625ca3edfc00724c3623a1e62..9d92737f83c080fffbabbb85c8a55537297e0ddb 100644 (file)
@@ -1148,7 +1148,10 @@ gdk_wayland_surface_destroy (GdkSurface *surface,
 
   gdk_wayland_surface_hide_surface (surface);
 
-  gdk_wayland_surface_destroy_wl_surface (GDK_WAYLAND_SURFACE(surface));
+  if (GDK_IS_TOPLEVEL (surface))
+    gdk_wayland_toplevel_destroy (GDK_TOPLEVEL (surface));
+
+  gdk_wayland_surface_destroy_wl_surface (GDK_WAYLAND_SURFACE (surface));
 
   frame_clock = gdk_surface_get_frame_clock (surface);
   g_signal_handlers_disconnect_by_func (frame_clock, on_frame_clock_before_paint, surface);
index 9b061013716d2dea702d4d0ceee27c38c7f6e550..bd0836c0a067538e35a40757402d768a03f2372e 100644 (file)
@@ -39,3 +39,4 @@ void     gdk_wayland_toplevel_announce_ssd        (GdkToplevel *toplevel);
 gboolean gdk_wayland_toplevel_inhibit_idle        (GdkToplevel *toplevel);
 void     gdk_wayland_toplevel_uninhibit_idle      (GdkToplevel *toplevel);
 
+void     gdk_wayland_toplevel_destroy             (GdkToplevel *toplevel);
index 7b968e5c1695952342b86c8dbec468eaaa5a6f4d..459462485aabedcb7f15cda62a02572772ef2377 100644 (file)
@@ -2250,6 +2250,11 @@ gdk_wayland_toplevel_set_dbus_properties (GdkToplevel *toplevel,
   maybe_set_gtk_surface_dbus_properties (wayland_toplevel);
 }
 
+void
+gdk_wayland_toplevel_destroy (GdkToplevel *toplevel)
+{
+}
+
 /* }}} */
 /* {{{ Toplevel API */