xserver: Branch 'mpx' - 3 commits

Peter Hutterer whot at kemper.freedesktop.org
Tue Apr 22 01:24:20 PDT 2008


 Xext/xtest.c |   22 +++++++++++++++++-----
 mi/mieq.c    |    4 ++--
 2 files changed, 19 insertions(+), 7 deletions(-)

New commits:
commit 179a082c26f9e562492ee2e59e7f44f949f39f9c
Author: Peter Hutterer <peter at cs.unisa.edu.au>
Date:   Fri Apr 18 21:13:10 2008 +0930

    Xext: route event through master if required (XTestFakeInput)

diff --git a/Xext/xtest.c b/Xext/xtest.c
index 721dacc..e11f358 100644
--- a/Xext/xtest.c
+++ b/Xext/xtest.c
@@ -471,7 +471,15 @@ ProcXTestFakeInput(client)
     if (screenIsSaved == SCREEN_SAVER_ON)
         dixSaveScreens(serverClient, SCREEN_SAVER_OFF, ScreenSaverReset);
     ev->u.keyButtonPointer.time = currentTime.milliseconds;
-    (*dev->public.processInputProc)(ev, dev, nev);
+    if (!dev->isMaster && dev->u.master)
+    {   /* duplicate and route through master */
+        xEvent *master_event = NULL;
+        CopyGetMasterEvent(dev->u.master, ev, &master_event, nev);
+        (*dev->public.processInputProc)(ev, dev, nev);
+        (*dev->public.processInputProc)(master_event, dev->u.master, nev);
+        xfree(master_event);
+    } else
+        (*dev->public.processInputProc)(ev, dev, nev);
     return client->noClientException;
 }
 
diff --git a/mi/mieq.c b/mi/mieq.c
index cae5516..1c85030 100644
--- a/mi/mieq.c
+++ b/mi/mieq.c
@@ -263,7 +263,7 @@ ChangeDeviceID(DeviceIntPtr dev, xEvent* event)
  * @param master The event after being copied
  * @param count Number of events in original.
  */
-static void
+void
 CopyGetMasterEvent(DeviceIntPtr mdev, xEvent* original,
                    xEvent** master, int count)
 {
commit fb784d99c521823339bf00b70b9824f735d88875
Author: Peter Hutterer <peter at cs.unisa.edu.au>
Date:   Fri Apr 18 20:57:42 2008 +0930

    mi: fix typo in comment.

diff --git a/mi/mieq.c b/mi/mieq.c
index 2759d16..cae5516 100644
--- a/mi/mieq.c
+++ b/mi/mieq.c
@@ -333,7 +333,7 @@ mieqProcessInputEvents(void)
 
             /* FIXME: Bad hack. The only event where we actually get multiple
              * events at once is a DeviceMotionNotify followed by
-             * DeviceValuators. For now it's save enough to just take the
+             * DeviceValuators. For now it's safe enough to just take the
              * event directly or copy the bunch of events and pass in the
              * copy. Eventually the interface for the processInputProc needs
              * to be changed. (whot)
commit 8209fdbc7c7f2dd068b30ff184b5fbf00db78686
Author: Peter Hutterer <peter at cs.unisa.edu.au>
Date:   Fri Apr 18 20:53:57 2008 +0930

    Xext: Update sprite on fake input only for MDs and floating SDs.

diff --git a/Xext/xtest.c b/Xext/xtest.c
index 5f0b25e..721dacc 100644
--- a/Xext/xtest.c
+++ b/Xext/xtest.c
@@ -440,10 +440,14 @@ ProcXTestFakeInput(client)
                             ev->u.keyButtonPointer.rootY);
                     return client->noClientException;
                 }
-            (*root->drawable.pScreen->SetCursorPosition)
-                (dev, root->drawable.pScreen,
-                 ev->u.keyButtonPointer.rootX,
-                 ev->u.keyButtonPointer.rootY, FALSE);
+            /* Only update sprite for MDs and floating SDs */
+            if (dev->isMaster || (!dev->isMaster && !dev->u.master))
+            {
+                (*root->drawable.pScreen->SetCursorPosition)
+                    (dev, root->drawable.pScreen,
+                     ev->u.keyButtonPointer.rootX,
+                     ev->u.keyButtonPointer.rootY, FALSE);
+            }
             dev->lastx = ev->u.keyButtonPointer.rootX;
             dev->lasty = ev->u.keyButtonPointer.rootY;
             break;


More information about the xorg-commit mailing list