diff options
author | Jonas Ådahl <jadahl@gmail.com> | 2018-01-29 14:40:57 +0800 |
---|---|---|
committer | Jonas Ådahl <jadahl@gmail.com> | 2018-02-23 19:33:31 +0800 |
commit | d27e6921d63d200cee22b87fe291745ed3cc3cbe (patch) | |
tree | 4ec1e9c5887df5ec60523c89a6423e48921199f1 | |
parent | c459ad79322c1ff7407b1bff36677324d1315fdb (diff) | |
download | mutter-d27e6921d63d200cee22b87fe291745ed3cc3cbe.tar.gz |
remote-desktop: Add relative pointer motion event support
Relative pointer motions are assumed to be pre-accelerated.
-rw-r--r-- | src/backends/meta-remote-desktop-session.c | 27 | ||||
-rw-r--r-- | src/org.gnome.Mutter.RemoteDesktop.xml | 10 |
2 files changed, 37 insertions, 0 deletions
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 @@ -487,6 +487,32 @@ handle_notify_pointer_axis_discrete (MetaDBusRemoteDesktopSession *skeleton, } 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, const char *stream_path, @@ -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 @@ -111,6 +111,16 @@ </method> <!-- + NotifyPointerMotionRelative: + + A absolute pointer motion event notification + --> + <method name="NotifyPointerMotionRelative"> + <arg name="dx" type="d" direction="in" /> + <arg name="dy" type="d" direction="in" /> + </method> + + <!-- NotifyPointerMotionAbsolute: A absolute pointer motion event notification |