[mutter] remote-desktop: Add relative pointer motion event support



commit d27e6921d63d200cee22b87fe291745ed3cc3cbe
Author: Jonas Ådahl <jadahl gmail com>
Date:   Mon Jan 29 14:40:57 2018 +0800

    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 @@
       <arg name="steps" type="i" direction="in" />
     </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:
 


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]