backends: Drop GDK device querying code from MetaCursorTracker

Clutter behavior is now equivalent to GDK's on X11, avoid poking to
GDK here.

Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1403>
This commit is contained in:
Carlos Garnacho 2020-06-06 13:04:32 +02:00 committed by Marge Bot
parent dea909aea7
commit efd065259d

View File

@ -31,8 +31,6 @@
#include "backends/meta-cursor-tracker-private.h"
#include <gdk/gdk.h>
#include <gdk/gdkx.h>
#include <string.h>
#include "backends/meta-backend-private.h"
@ -464,36 +462,10 @@ meta_cursor_tracker_update_position (MetaCursorTracker *tracker,
g_signal_emit (tracker, signals[CURSOR_MOVED], 0, new_x, new_y);
}
static void
get_pointer_position_gdk (graphene_point_t *point,
int *mods)
{
GdkSeat *gseat;
GdkDevice *gdevice;
GdkScreen *gscreen;
double x, y;
gseat = gdk_display_get_default_seat (gdk_display_get_default ());
gdevice = gdk_seat_get_pointer (gseat);
/* Even if point is NULL we need this to get gscreen */
gdk_device_get_position_double (gdevice, &gscreen, &x, &y);
if (point)
{
point->x = x;
point->y = y;
}
if (mods)
gdk_device_get_state (gdevice,
gdk_screen_get_root_window (gscreen),
NULL, (GdkModifierType*)mods);
}
static void
get_pointer_position_clutter (graphene_point_t *point,
int *mods)
void
meta_cursor_tracker_get_pointer (MetaCursorTracker *tracker,
graphene_point_t *coords,
ClutterModifierType *mods)
{
ClutterSeat *seat;
ClutterInputDevice *cdevice;
@ -501,27 +473,7 @@ get_pointer_position_clutter (graphene_point_t *point,
seat = clutter_backend_get_default_seat (clutter_get_default_backend ());
cdevice = clutter_seat_get_pointer (seat);
if (point)
clutter_input_device_get_coords (cdevice, NULL, point);
if (mods)
*mods = clutter_input_device_get_modifier_state (cdevice);
}
void
meta_cursor_tracker_get_pointer (MetaCursorTracker *tracker,
graphene_point_t *coords,
ClutterModifierType *mods)
{
/* We can't use the clutter interface when not running as a wayland compositor,
because we need to query the server, rather than using the last cached value.
OTOH, on wayland we can't use GDK, because that only sees the events
we forward to xwayland.
*/
if (meta_is_wayland_compositor ())
get_pointer_position_clutter (coords, (int *) mods);
else
get_pointer_position_gdk (coords, (int *) mods);
clutter_seat_query_state (seat, cdevice, NULL, coords, mods);
}
void