[mutter] virtual-input-device/x11: Get X11 display and screen from X11 backend
- From: Marge Bot <marge-bot src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [mutter] virtual-input-device/x11: Get X11 display and screen from X11 backend
- Date: Mon, 17 Jan 2022 09:32:25 +0000 (UTC)
commit 7851e69bbf5e638f73e0a9846168ce287e055351
Author: Jonas Ã…dahl <jadahl gmail com>
Date: Fri Sep 17 21:30:18 2021 +0200
virtual-input-device/x11: Get X11 display and screen from X11 backend
Instead of from ClutterX11.
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/2014>
src/backends/x11/meta-virtual-input-device-x11.c | 48 +++++++++++++++++-------
1 file changed, 35 insertions(+), 13 deletions(-)
---
diff --git a/src/backends/x11/meta-virtual-input-device-x11.c
b/src/backends/x11/meta-virtual-input-device-x11.c
index 9fc9360951..94aac98ede 100644
--- a/src/backends/x11/meta-virtual-input-device-x11.c
+++ b/src/backends/x11/meta-virtual-input-device-x11.c
@@ -25,8 +25,10 @@
#include <X11/extensions/XTest.h>
+#include "backends/x11/meta-backend-x11.h"
#include "backends/x11/meta-clutter-backend-x11.h"
#include "backends/x11/meta-keymap-x11.h"
+#include "backends/x11/meta-seat-x11.h"
#include "clutter/clutter.h"
#define DISCRETE_SCROLL_STEP 10.0
@@ -43,16 +45,25 @@ G_DEFINE_TYPE (MetaVirtualInputDeviceX11,
meta_virtual_input_device_x11,
CLUTTER_TYPE_VIRTUAL_INPUT_DEVICE)
+static Display *
+xdisplay_from_virtual_input_device (ClutterVirtualInputDevice *virtual_device)
+{
+ ClutterSeat *seat = clutter_virtual_input_device_get_seat (virtual_device);
+ MetaSeatX11 *seat_x11 = META_SEAT_X11 (seat);
+ MetaBackend *backend = meta_seat_x11_get_backend (seat_x11);
+
+ return meta_backend_x11_get_xdisplay (META_BACKEND_X11 (backend));
+}
+
static void
meta_virtual_input_device_x11_notify_relative_motion (ClutterVirtualInputDevice *virtual_device,
uint64_t time_us,
double dx,
double dy)
{
- XTestFakeRelativeMotionEvent (meta_clutter_x11_get_default_display (),
- (int) dx,
- (int) dy,
- 0);
+ Display *xdisplay = xdisplay_from_virtual_input_device (virtual_device);
+
+ XTestFakeRelativeMotionEvent (xdisplay, (int) dx, (int) dy, 0);
}
static void
@@ -61,11 +72,17 @@ meta_virtual_input_device_x11_notify_absolute_motion (ClutterVirtualInputDevice
double x,
double y)
{
- XTestFakeMotionEvent (meta_clutter_x11_get_default_display (),
- meta_clutter_x11_get_default_screen (),
- (int) x,
- (int) y,
- 0);
+ ClutterSeat *seat = clutter_virtual_input_device_get_seat (virtual_device);
+ MetaSeatX11 *seat_x11 = META_SEAT_X11 (seat);
+ MetaBackend *backend = meta_seat_x11_get_backend (seat_x11);
+ Display *xdisplay;
+ Screen *xscreen;
+
+ xdisplay = meta_backend_x11_get_xdisplay (META_BACKEND_X11 (backend));
+ xscreen = meta_backend_x11_get_xscreen (META_BACKEND_X11 (backend));
+
+ XTestFakeMotionEvent (xdisplay, XScreenNumberOfScreen (xscreen),
+ (int) x, (int) y, 0);
}
static void
@@ -74,7 +91,9 @@ meta_virtual_input_device_x11_notify_button (ClutterVirtualInputDevice *virtual_
uint32_t button,
ClutterButtonState button_state)
{
- XTestFakeButtonEvent (meta_clutter_x11_get_default_display (),
+ Display *xdisplay = xdisplay_from_virtual_input_device (virtual_device);
+
+ XTestFakeButtonEvent (xdisplay,
button, button_state == CLUTTER_BUTTON_STATE_PRESSED, 0);
}
@@ -84,7 +103,7 @@ meta_virtual_input_device_x11_notify_discrete_scroll (ClutterVirtualInputDevice
ClutterScrollDirection direction,
ClutterScrollSource scroll_source)
{
- Display *xdisplay = meta_clutter_x11_get_default_display ();
+ Display *xdisplay = xdisplay_from_virtual_input_device (virtual_device);
int button;
switch (direction)
@@ -159,7 +178,9 @@ meta_virtual_input_device_x11_notify_key (ClutterVirtualInputDevice *virtual_dev
uint32_t key,
ClutterKeyState key_state)
{
- XTestFakeKeyEvent (meta_clutter_x11_get_default_display (),
+ Display *xdisplay = xdisplay_from_virtual_input_device (virtual_device);
+
+ XTestFakeKeyEvent (xdisplay,
key + 8, key_state == CLUTTER_KEY_STATE_PRESSED, 0);
}
@@ -172,6 +193,7 @@ meta_virtual_input_device_x11_notify_keyval (ClutterVirtualInputDevice *virtual_
ClutterBackend *backend = clutter_get_default_backend ();
ClutterSeat *seat = clutter_backend_get_default_seat (backend);
MetaKeymapX11 *keymap = META_KEYMAP_X11 (clutter_seat_get_keymap (seat));
+ Display *xdisplay = xdisplay_from_virtual_input_device (virtual_device);
uint32_t keycode, level;
if (!meta_keymap_x11_keycode_for_keyval (keymap, keyval, &keycode, &level))
@@ -189,7 +211,7 @@ meta_virtual_input_device_x11_notify_keyval (ClutterVirtualInputDevice *virtual_
key_state == CLUTTER_KEY_STATE_PRESSED)
meta_keymap_x11_lock_modifiers (keymap, level, TRUE);
- XTestFakeKeyEvent (meta_clutter_x11_get_default_display (),
+ XTestFakeKeyEvent (xdisplay,
(KeyCode) keycode,
key_state == CLUTTER_KEY_STATE_PRESSED, 0);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]