From d27e6921d63d200cee22b87fe291745ed3cc3cbe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jonas=20=C3=85dahl?= Date: Mon, 29 Jan 2018 14:40:57 +0800 Subject: remote-desktop: Add relative pointer motion event support Relative pointer motions are assumed to be pre-accelerated. --- src/backends/meta-remote-desktop-session.c | 27 +++++++++++++++++++++++++++ src/org.gnome.Mutter.RemoteDesktop.xml | 10 ++++++++++ 2 files changed, 37 insertions(+) diff --git a/src/backends/meta-remote-desktop-session.c b/src/backends/meta-remote-desktop-session.c index 17786ea57..6895b5c5a 100644 --- a/src/backends/meta-remote-desktop-session.c +++ b/src/backends/meta-remote-desktop-session.c @@ -486,6 +486,32 @@ handle_notify_pointer_axis_discrete (MetaDBusRemoteDesktopSession *skeleton, return TRUE; } +static gboolean +handle_notify_pointer_motion_relative (MetaDBusRemoteDesktopSession *skeleton, + GDBusMethodInvocation *invocation, + double dx, + double dy) +{ + MetaRemoteDesktopSession *session = META_REMOTE_DESKTOP_SESSION (skeleton); + + if (!check_permission (session, invocation)) + { + g_dbus_method_invocation_return_error (invocation, G_DBUS_ERROR, + G_DBUS_ERROR_ACCESS_DENIED, + "Permission denied"); + return TRUE; + } + + clutter_virtual_input_device_notify_relative_motion (session->virtual_pointer, + CLUTTER_CURRENT_TIME, + dx, dy); + + meta_dbus_remote_desktop_session_complete_notify_pointer_motion_relative (skeleton, + invocation); + + return TRUE; +} + static gboolean handle_notify_pointer_motion_absolute (MetaDBusRemoteDesktopSession *skeleton, GDBusMethodInvocation *invocation, @@ -523,6 +549,7 @@ meta_remote_desktop_session_init_iface (MetaDBusRemoteDesktopSessionIface *iface iface->handle_notify_pointer_button = handle_notify_pointer_button; iface->handle_notify_pointer_axis = handle_notify_pointer_axis; iface->handle_notify_pointer_axis_discrete = handle_notify_pointer_axis_discrete; + iface->handle_notify_pointer_motion_relative = handle_notify_pointer_motion_relative; iface->handle_notify_pointer_motion_absolute = handle_notify_pointer_motion_absolute; } diff --git a/src/org.gnome.Mutter.RemoteDesktop.xml b/src/org.gnome.Mutter.RemoteDesktop.xml index 47f06a414..4646d2948 100644 --- a/src/org.gnome.Mutter.RemoteDesktop.xml +++ b/src/org.gnome.Mutter.RemoteDesktop.xml @@ -110,6 +110,16 @@ + + + + + +