wayland: Use a GdkSeat as key for our internal hash table
authorOlivier Fourdan <ofourdan@redhat.com>
Fri, 27 Mar 2020 13:40:52 +0000 (14:40 +0100)
committerOlivier Fourdan <ofourdan@redhat.com>
Mon, 30 Mar 2020 16:25:36 +0000 (18:25 +0200)
With the current implementation, we use a `wl_seat` as the key for our
internal has table where we store the Wayland shortcuts inhibitors.

There is however no technical reason for this, and we could use a
GdkSeat instead, which will ease the implementation of the GdkToplevel
shortcut inhibition API.

gdk/wayland/gdksurface-wayland.c

index 12f88990c8823d9844c03983b16f58d0352e88fe..9cf218939627239a0d31d963954b9d2d6b98def6 100644 (file)
@@ -4112,9 +4112,9 @@ gdk_wayland_surface_set_transient_for_exported (GdkSurface *surface,
 
 static struct zwp_keyboard_shortcuts_inhibitor_v1 *
 gdk_wayland_surface_get_inhibitor (GdkWaylandSurface *impl,
-                                  struct wl_seat *seat)
+                                   GdkSeat           *gdk_seat)
 {
-  return g_hash_table_lookup (impl->shortcuts_inhibitors, seat);
+  return g_hash_table_lookup (impl->shortcuts_inhibitors, gdk_seat);
 }
 
 void
@@ -4131,13 +4131,13 @@ gdk_wayland_surface_inhibit_shortcuts (GdkSurface *surface,
     return;
 
   if (gdk_wayland_surface_get_inhibitor (impl, seat))
-    return; /* Already inhibitted */
+    return; /* Already inhibited */
 
   inhibitor =
       zwp_keyboard_shortcuts_inhibit_manager_v1_inhibit_shortcuts (
           display->keyboard_shortcuts_inhibit, wl_surface, seat);
 
-  g_hash_table_insert (impl->shortcuts_inhibitors, seat, inhibitor);
+  g_hash_table_insert (impl->shortcuts_inhibitors, gdk_seat, inhibitor);
 }
 
 void
@@ -4145,15 +4145,14 @@ gdk_wayland_surface_restore_shortcuts (GdkSurface *surface,
                                        GdkSeat    *gdk_seat)
 {
   GdkWaylandSurface *impl = GDK_WAYLAND_SURFACE (surface);
-  struct wl_seat *seat = gdk_wayland_seat_get_wl_seat (gdk_seat);
   struct zwp_keyboard_shortcuts_inhibitor_v1 *inhibitor;
 
-  inhibitor = gdk_wayland_surface_get_inhibitor (impl, seat);
+  inhibitor = gdk_wayland_surface_get_inhibitor (impl, gdk_seat);
   if (inhibitor == NULL)
     return; /* Not inhibitted */
 
   zwp_keyboard_shortcuts_inhibitor_v1_destroy (inhibitor);
-  g_hash_table_remove (impl->shortcuts_inhibitors, seat);
+  g_hash_table_remove (impl->shortcuts_inhibitors, gdk_seat);
 }
 
 GdkSurface *