mirror of
https://github.com/brl/mutter.git
synced 2025-02-02 23:03:00 +00:00
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:
parent
dea909aea7
commit
efd065259d
@ -31,8 +31,6 @@
|
|||||||
|
|
||||||
#include "backends/meta-cursor-tracker-private.h"
|
#include "backends/meta-cursor-tracker-private.h"
|
||||||
|
|
||||||
#include <gdk/gdk.h>
|
|
||||||
#include <gdk/gdkx.h>
|
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
|
||||||
#include "backends/meta-backend-private.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);
|
g_signal_emit (tracker, signals[CURSOR_MOVED], 0, new_x, new_y);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
void
|
||||||
get_pointer_position_gdk (graphene_point_t *point,
|
meta_cursor_tracker_get_pointer (MetaCursorTracker *tracker,
|
||||||
int *mods)
|
graphene_point_t *coords,
|
||||||
{
|
ClutterModifierType *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)
|
|
||||||
{
|
{
|
||||||
ClutterSeat *seat;
|
ClutterSeat *seat;
|
||||||
ClutterInputDevice *cdevice;
|
ClutterInputDevice *cdevice;
|
||||||
@ -501,27 +473,7 @@ get_pointer_position_clutter (graphene_point_t *point,
|
|||||||
seat = clutter_backend_get_default_seat (clutter_get_default_backend ());
|
seat = clutter_backend_get_default_seat (clutter_get_default_backend ());
|
||||||
cdevice = clutter_seat_get_pointer (seat);
|
cdevice = clutter_seat_get_pointer (seat);
|
||||||
|
|
||||||
if (point)
|
clutter_seat_query_state (seat, cdevice, NULL, coords, mods);
|
||||||
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);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
Loading…
x
Reference in New Issue
Block a user