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

xorg-server: Changes to 'debian-unstable'



 debian/patches/17-dix-if-owner-events-is-true-for-passive-grabs-add-th.patch |   83 ++++++++++
 1 file changed, 83 insertions(+)

New commits:
commit d46ea2afffe61597c7f1b61606a107ca002e370b
Author: Drew Parsons <dparsons@debian.org>
Date:   Thu Mar 4 00:03:04 2010 +1100

    Oops add the patch for the previous commit
    
    damn git status didn't show up the new file like it usually does

diff --git a/debian/patches/17-dix-if-owner-events-is-true-for-passive-grabs-add-th.patch b/debian/patches/17-dix-if-owner-events-is-true-for-passive-grabs-add-th.patch
new file mode 100644
index 0000000..82f4f50
--- /dev/null
+++ b/debian/patches/17-dix-if-owner-events-is-true-for-passive-grabs-add-th.patch
@@ -0,0 +1,83 @@
+From 873ef3430e92b0756c0dbe5033f6aec38a20d6ad Mon Sep 17 00:00:00 2001
+From: Peter Hutterer <peter.hutterer@who-t.net>
+Date: Wed, 16 Dec 2009 13:43:22 +1000
+Subject: [PATCH] dix: if owner-events is true for passive grabs, add the window mask (#25400)
+
+A client requesting a GrabModeSync button grab, owner-events true, with only
+the ButtonRelease mask set would never receive the press event even if the
+grab window had the ButtonPress mask set.
+
+The protocol requires that if owner-events is true, then the delivery mask
+is the combination of the grab mask + the window event mask.
+
+X.Org Bug 25400 <http://bugs.freedesktop.org/show_bug.cgi?id=25400>
+
+Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
+---
+ dix/events.c |   36 ++++++++++++++++++++++++++++++++++++
+ 1 files changed, 36 insertions(+), 0 deletions(-)
+
+diff --git a/dix/events.c b/dix/events.c
+index 7e0867c..12b12a8 100644
+--- a/dix/events.c
++++ b/dix/events.c
+@@ -3590,6 +3590,8 @@ CheckPassiveGrabsOnWindow(
+                 xE = &core;
+                 count = 1;
+                 mask = grab->eventMask;
++                if (grab->ownerEvents)
++                    mask |= pWin->eventMask;
+             } else if (match & XI2_MATCH)
+             {
+                 rc = EventToXI2((InternalEvent*)event, &xE);
+@@ -3611,6 +3613,24 @@ CheckPassiveGrabsOnWindow(
+                     mask = grab->xi2mask[device->id][((xGenericEvent*)xE)->evtype/8];
+                 else if (event->type == XI_Enter || event->type == XI_FocusIn)
+                     mask = grab->xi2mask[device->id][event->type/8];
++
++                if (grab->ownerEvents && wOtherInputMasks(grab->window))
++                {
++                    InputClientsPtr icp =
++                        wOtherInputMasks(grab->window)->inputClients;
++
++                    while(icp)
++                    {
++                        if (rClient(icp) == rClient(grab))
++                        {
++                            int evtype = (xE) ? ((xGenericEvent*)xE)->evtype : event->type;
++                            mask |= icp->xi2mask[device->id][evtype/8];
++                            break;
++                        }
++
++                        icp = icp->next;
++                    }
++                }
+             } else
+             {
+                 rc = EventToXI((InternalEvent*)event, &xE, &count);
+@@ -3622,6 +3642,22 @@ CheckPassiveGrabsOnWindow(
+                     continue;
+                 }
+                 mask = grab->eventMask;
++                if (grab->ownerEvents && wOtherInputMasks(grab->window))
++                {
++                    InputClientsPtr icp =
++                        wOtherInputMasks(grab->window)->inputClients;
++
++                    while(icp)
++                    {
++                        if (rClient(icp) == rClient(grab))
++                        {
++                            mask |= icp->mask[device->id];
++                            break;
++                        }
++
++                        icp = icp->next;
++                    }
++                }
+             }
+ 
+ 	    (*grabinfo->ActivateGrab)(device, grab, currentTime, TRUE);
+-- 
+1.6.5.2
+


Reply to: