summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatthias Clasen <mclasen@redhat.com>2019-04-20 00:08:14 +0000
committerMatthias Clasen <mclasen@redhat.com>2019-04-28 12:36:05 +0000
commit0e9e2eb65054cba708de2643e7f2c83275327f1a (patch)
tree964797504a95b3328a619cc453d203ca0f835228
parent7a8164c79fb988d30ec4d0a9fe7e5b87b2b8c332 (diff)
downloadgtk+-0e9e2eb65054cba708de2643e7f2c83275327f1a.tar.gz
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.
-rw-r--r--gdk/wayland/gdkdevice-wayland.c16
-rw-r--r--gdk/wayland/gdkprivate-wayland.h3
-rw-r--r--gdk/wayland/gdksurface-wayland.c47
3 files changed, 28 insertions, 38 deletions
diff --git a/gdk/wayland/gdkdevice-wayland.c b/gdk/wayland/gdkdevice-wayland.c
index 5b4e17d552..46ca742c3b 100644
--- a/gdk/wayland/gdkdevice-wayland.c
+++ b/gdk/wayland/gdkdevice-wayland.c
@@ -5020,31 +5020,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)
{