summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJonas Ådahl <jadahl@gmail.com>2018-01-29 14:40:57 +0800
committerJonas Ådahl <jadahl@gmail.com>2018-02-23 19:33:31 +0800
commitd27e6921d63d200cee22b87fe291745ed3cc3cbe (patch)
tree4ec1e9c5887df5ec60523c89a6423e48921199f1
parentc459ad79322c1ff7407b1bff36677324d1315fdb (diff)
downloadmutter-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.c27
-rw-r--r--src/org.gnome.Mutter.RemoteDesktop.xml10
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