[gtk/wip/matthiasc/popup4: 68/79] wayland: Reshuffle some internals



commit 8bf9ceafa14890dccf4879bf55567c62c12c3e39
Author: Matthias Clasen <mclasen redhat com>
Date:   Sat Apr 20 00:08:14 2019 +0000

    wayland: Reshuffle some internals
    
    Make find_grab_input_seat return a GdkWaylandSeat
    instead of a struct wl_seat, so we can use it and
    avoid calling gdk_display_get_default_seat when
    we need to get a serial later.

 gdk/wayland/gdkdevice-wayland.c  | 16 ++++++--------
 gdk/wayland/gdkprivate-wayland.h |  3 ++-
 gdk/wayland/gdksurface-wayland.c | 47 ++++++++++++++++------------------------
 3 files changed, 28 insertions(+), 38 deletions(-)
---
diff --git a/gdk/wayland/gdkdevice-wayland.c b/gdk/wayland/gdkdevice-wayland.c
index 380f061aa4..4933587f35 100644
--- a/gdk/wayland/gdkdevice-wayland.c
+++ b/gdk/wayland/gdkdevice-wayland.c
@@ -5010,31 +5010,29 @@ _gdk_wayland_device_get_implicit_grab_serial (GdkWaylandDevice *device,
         }
     }
 
-    return GDK_WAYLAND_SEAT (seat)->pointer_info.press_serial;
+  return GDK_WAYLAND_SEAT (seat)->pointer_info.press_serial;
 }
 
 uint32_t
-_gdk_wayland_seat_get_last_implicit_grab_serial (GdkSeat           *seat,
+_gdk_wayland_seat_get_last_implicit_grab_serial (GdkWaylandSeat    *seat,
                                                  GdkEventSequence **sequence)
 {
-  GdkWaylandSeat *wayland_seat;
   GdkWaylandTouchData *touch;
   GHashTableIter iter;
   GList *l;
   uint32_t serial;
 
-  wayland_seat = GDK_WAYLAND_SEAT (seat);
-  g_hash_table_iter_init (&iter, wayland_seat->touches);
+  g_hash_table_iter_init (&iter, seat->touches);
 
   if (sequence)
     *sequence = NULL;
 
-  serial = wayland_seat->keyboard_key_serial;
+  serial = seat->keyboard_key_serial;
 
-  if (wayland_seat->pointer_info.press_serial > serial)
-    serial = wayland_seat->pointer_info.press_serial;
+  if (seat->pointer_info.press_serial > serial)
+    serial = seat->pointer_info.press_serial;
 
-  for (l = wayland_seat->tablets; l; l = l->next)
+  for (l = seat->tablets; l; l = l->next)
     {
       GdkWaylandTabletData *tablet = l->data;
 
diff --git a/gdk/wayland/gdkprivate-wayland.h b/gdk/wayland/gdkprivate-wayland.h
index 206386b663..3cbe203ab0 100644
--- a/gdk/wayland/gdkprivate-wayland.h
+++ b/gdk/wayland/gdkprivate-wayland.h
@@ -34,6 +34,7 @@
 #include <gdk/gdkcursor.h>
 #include <gdk/wayland/gdkwayland.h>
 #include <gdk/wayland/gdkdisplay-wayland.h>
+#include <gdk/wayland/gdkseat-wayland.h>
 
 #include <xkbcommon/xkbcommon.h>
 
@@ -138,7 +139,7 @@ void        _gdk_wayland_display_remove_seat    (GdkWaylandDisplay       *displa
 GdkKeymap *_gdk_wayland_device_get_keymap (GdkDevice *device);
 uint32_t _gdk_wayland_device_get_implicit_grab_serial(GdkWaylandDevice *device,
                                                       const GdkEvent   *event);
-uint32_t _gdk_wayland_seat_get_last_implicit_grab_serial (GdkSeat           *seat,
+uint32_t _gdk_wayland_seat_get_last_implicit_grab_serial (GdkWaylandSeat     *seat,
                                                           GdkEventSequence **seqence);
 struct wl_data_device * gdk_wayland_device_get_data_device (GdkDevice *gdk_device);
 void gdk_wayland_device_set_selection (GdkDevice             *gdk_device,
diff --git a/gdk/wayland/gdksurface-wayland.c b/gdk/wayland/gdksurface-wayland.c
index 6cfa7a8876..33cd452650 100644
--- a/gdk/wayland/gdksurface-wayland.c
+++ b/gdk/wayland/gdksurface-wayland.c
@@ -33,6 +33,7 @@
 #include "gdkdeviceprivate.h"
 #include "gdkprivate-wayland.h"
 #include "gdkmonitor-wayland.h"
+#include "gdkseat-wayland.h"
 #include <wayland/xdg-shell-unstable-v6-client-protocol.h>
 
 #include <stdlib.h>
@@ -571,18 +572,7 @@ _gdk_wayland_display_create_surface_impl (GdkDisplay     *display,
       gdk_display_get_n_monitors (display) > 0)
     impl->scale = gdk_monitor_get_scale_factor (gdk_display_get_monitor (display, 0));
 
-  impl->title = NULL;
-
-  switch (GDK_SURFACE_TYPE (surface))
-    {
-    case GDK_SURFACE_TOPLEVEL:
-    case GDK_SURFACE_TEMP:
-      gdk_surface_set_title (surface, get_default_title ());
-      break;
-
-    default:
-      break;
-    }
+  gdk_surface_set_title (surface, get_default_title ());
 
   if (real_parent == NULL)
     display_wayland->toplevels = g_list_prepend (display_wayland->toplevels, surface);
@@ -850,7 +840,7 @@ gdk_wayland_surface_update_dialogs (GdkSurface *surface)
       GdkSurface *w = l->data;
       GdkSurfaceImplWayland *impl;
 
-      if (!GDK_IS_SURFACE_IMPL_WAYLAND(w->impl))
+      if (!GDK_IS_SURFACE_IMPL_WAYLAND (w->impl))
         continue;
 
       impl = GDK_SURFACE_IMPL_WAYLAND (w->impl);
@@ -2161,14 +2151,12 @@ create_simple_positioner (GdkSurface *surface,
 static void
 gdk_wayland_surface_create_xdg_popup (GdkSurface     *surface,
                                       GdkSurface     *parent,
-                                      struct wl_seat *seat)
+                                      GdkWaylandSeat *grab_input_seat)
 {
   GdkWaylandDisplay *display = GDK_WAYLAND_DISPLAY (gdk_surface_get_display (surface));
   GdkSurfaceImplWayland *impl = GDK_SURFACE_IMPL_WAYLAND (surface->impl);
   GdkSurfaceImplWayland *parent_impl = GDK_SURFACE_IMPL_WAYLAND (parent->impl);
   gpointer positioner;
-  GdkSeat *gdk_seat;
-  guint32 serial;
 
   if (!impl->display_server.wl_surface)
     return;
@@ -2240,10 +2228,13 @@ gdk_wayland_surface_create_xdg_popup (GdkSurface     *surface,
       g_assert_not_reached ();
     }
 
-  if (seat)
+  if (grab_input_seat)
     {
-      gdk_seat = gdk_display_get_default_seat (GDK_DISPLAY (display));
-      serial = _gdk_wayland_seat_get_last_implicit_grab_serial (gdk_seat, NULL);
+      struct wl_seat *seat;
+      guint32 serial;
+
+      seat = gdk_wayland_seat_get_wl_seat (GDK_SEAT (grab_input_seat));
+      serial = _gdk_wayland_seat_get_last_implicit_grab_serial (grab_input_seat, NULL);
 
       switch (display->shell_variant)
         {
@@ -2264,7 +2255,7 @@ gdk_wayland_surface_create_xdg_popup (GdkSurface     *surface,
   display->current_popups = g_list_append (display->current_popups, surface);
 }
 
-static struct wl_seat *
+static GdkWaylandSeat *
 find_grab_input_seat (GdkSurface *surface,
                       GdkSurface *transient_for)
 {
@@ -2277,7 +2268,7 @@ find_grab_input_seat (GdkSurface *surface,
    * grab before showing the popup surface.
    */
   if (impl->grab_input_seat)
-    return gdk_wayland_seat_get_wl_seat (impl->grab_input_seat);
+    return GDK_WAYLAND_SEAT (impl->grab_input_seat);
 
   /* HACK: GtkMenu grabs a special surface known as the "grab transfer surface"
    * and then transfers the grab over to the correct surface later. Look for
@@ -2290,7 +2281,7 @@ find_grab_input_seat (GdkSurface *surface,
     {
       tmp_impl = GDK_SURFACE_IMPL_WAYLAND (attached_grab_surface->impl);
       if (tmp_impl->grab_input_seat)
-        return gdk_wayland_seat_get_wl_seat (tmp_impl->grab_input_seat);
+        return GDK_WAYLAND_SEAT (tmp_impl->grab_input_seat);
     }
 
   while (transient_for)
@@ -2298,7 +2289,7 @@ find_grab_input_seat (GdkSurface *surface,
       tmp_impl = GDK_SURFACE_IMPL_WAYLAND (transient_for->impl);
 
       if (tmp_impl->grab_input_seat)
-        return gdk_wayland_seat_get_wl_seat (tmp_impl->grab_input_seat);
+        return GDK_WAYLAND_SEAT (tmp_impl->grab_input_seat);
 
       transient_for = tmp_impl->transient_for;
     }
@@ -2394,7 +2385,7 @@ gdk_wayland_surface_map (GdkSurface *surface)
   if (should_map_as_popup (surface))
     {
       gboolean create_fallback = FALSE;
-      struct wl_seat *grab_input_seat;
+      GdkWaylandSeat *grab_input_seat;
 
       /* Popup menus can appear without a transient parent, which means they
        * cannot be positioned properly on Wayland. This attempts to guess the
@@ -2468,8 +2459,8 @@ gdk_wayland_surface_map (GdkSurface *surface)
       if (!create_fallback)
         {
           gdk_wayland_surface_create_xdg_popup (surface,
-                                               transient_for,
-                                               grab_input_seat);
+                                                transient_for,
+                                                grab_input_seat);
         }
       else
         {
@@ -3555,7 +3546,7 @@ gdk_wayland_surface_begin_resize_drag (GdkSurface     *surface,
   if (!is_realized_toplevel (surface))
     return;
 
-  serial = _gdk_wayland_seat_get_last_implicit_grab_serial (gdk_device_get_seat (device),
+  serial = _gdk_wayland_seat_get_last_implicit_grab_serial (GDK_WAYLAND_SEAT (gdk_device_get_seat (device)),
                                                             &sequence);
 
   switch (display_wayland->shell_variant)
@@ -3606,7 +3597,7 @@ gdk_wayland_surface_begin_move_drag (GdkSurface *surface,
   if (!is_realized_toplevel (surface))
     return;
 
-  serial = _gdk_wayland_seat_get_last_implicit_grab_serial (gdk_device_get_seat (device),
+  serial = _gdk_wayland_seat_get_last_implicit_grab_serial (GDK_WAYLAND_SEAT (gdk_device_get_seat (device)),
                                                             &sequence);
   switch (display_wayland->shell_variant)
     {


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