xserver: Branch 'master' - 5 commits

Keith Packard keithp at kemper.freedesktop.org
Thu Dec 19 14:31:41 PST 2013


 Xi/exevents.c |    6 ++++--
 configure.ac  |    6 +++---
 dix/events.c  |    2 +-
 3 files changed, 8 insertions(+), 6 deletions(-)

New commits:
commit a68df147421da21528b5be2d34678383922fa352
Author: Keith Packard <keithp at keithp.com>
Date:   Thu Dec 19 14:31:07 2013 -0800

    Bump version to 1.14.99.905 (1.15 RC5)
    
    Another week, another RC. This should be the last before 1.15 final
    
    Signed-off-by: Keith Packard <keithp at keithp.com>

diff --git a/configure.ac b/configure.ac
index 51ac30b..7ec1997 100644
--- a/configure.ac
+++ b/configure.ac
@@ -26,9 +26,9 @@ dnl
 dnl Process this file with autoconf to create configure.
 
 AC_PREREQ(2.60)
-AC_INIT([xorg-server], 1.14.99.904, [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg], xorg-server)
-RELEASE_DATE="2013-12-10"
-RELEASE_NAME="Chai"
+AC_INIT([xorg-server], 1.14.99.905, [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg], xorg-server)
+RELEASE_DATE="2013-12-19"
+RELEASE_NAME="Kraken"
 AC_CONFIG_SRCDIR([Makefile.am])
 AM_INIT_AUTOMAKE([foreign dist-bzip2])
 AC_USE_SYSTEM_EXTENSIONS
commit 4b1ead9d3400acc3402c2480d7cc0527750c32f0
Merge: 4d62646 929795d
Author: Keith Packard <keithp at keithp.com>
Date:   Thu Dec 19 14:14:59 2013 -0800

    Merge remote-tracking branch 'whot/for-keith'

commit 929795d50d788358d6269ce423f72c6cc40e334b
Author: Peter Hutterer <peter.hutterer at who-t.net>
Date:   Tue Dec 3 10:14:51 2013 +1000

    dix: fix check for grab type
    
    Signed-off-by: Peter Hutterer <peter.hutterer at who-t.net>

diff --git a/dix/events.c b/dix/events.c
index 4632bb7..4aaa54c 100644
--- a/dix/events.c
+++ b/dix/events.c
@@ -4696,7 +4696,7 @@ DeviceEnterLeaveEvent(DeviceIntPtr mouse,
 
     filter = GetEventFilter(mouse, (xEvent *) event);
 
-    if (grab && grab->type == XI2) {
+    if (grab && grab->grabtype == XI2) {
         Mask mask;
 
         mask = xi2mask_isset(grab->xi2mask, mouse, type);
commit 23394c7fea0f5c33333198c87ecfecc9f6c6a791
Author: Peter Hutterer <peter.hutterer at who-t.net>
Date:   Tue Dec 3 08:36:45 2013 +1000

    Xi: ungrab device when releasing a passive grab without ButtonReleaseMask (#71878)
    
    If an touch triggers an async button grab and that grab does not have the
    ButtonReleaseMask set, the TouchEnd is never delivered, deliveries is 0  and
    the grab is never deactivated.
    
    If the grab is pointer async and keyboard sync, the keyboard events are stuck
    in EnqueueEvent until some other pointer event terminates the grab.
    
    Change this to check for the number of listeners. If we're about to deliver a
    TouchEnd to a passive pointer grab, the number of listeners is already 1 -
    pointer grabs always accept so other listeners were removed.
    
    X.Org Bug 71878 <http://bugs.freedesktop.org/show_bug.cgi?id=71878>
    
    Signed-off-by: Peter Hutterer <peter.hutterer at who-t.net>

diff --git a/Xi/exevents.c b/Xi/exevents.c
index 5e1d3e0..dff0a92 100644
--- a/Xi/exevents.c
+++ b/Xi/exevents.c
@@ -1413,7 +1413,8 @@ DeliverTouchEmulatedEvent(DeviceIntPtr dev, TouchPointInfoPtr ti,
                 !(ev->device_event.flags & TOUCH_CLIENT_ID))
                 TouchListenerAcceptReject(dev, ti, 0, XIAcceptTouch);
 
-            if (deliveries && ev->any.type == ET_TouchEnd &&
+            if (ev->any.type == ET_TouchEnd &&
+                ti->num_listeners == 1 &&
                 !dev->button->buttonsDown &&
                 dev->deviceGrab.fromPassiveGrab && GrabIsPointerGrab(grab)) {
                 (*dev->deviceGrab.DeactivateGrab) (dev);
commit c1d30b5bd7f90e68bc38404fd0cc32578d6d3018
Author: Ben Gamari <bgamari.foss at gmail.com>
Date:   Thu Nov 21 21:24:20 2013 -0500

    Xi: Don't ActivateEarlyAccept POINTER_REGULAR listeners
    
    Bug #71878 describes a bug resulting in the server ceasing to respond to
    keyboard input after a touch event. The problem might be the following:
    
    DeliverTouchBeginEvent tries to deliver an event to a listener of type
    LISTENER_POINTER_REGULAR, taking the following if branch,
    
        if (listener->type == LISTENER_POINTER_REGULAR ||
            listener->type == LISTENER_POINTER_GRAB) {
            rc = DeliverTouchEmulatedEvent(dev, ti, ev, listener, client, win,
                                           grab, xi2mask);
            if (rc == Success) {
                listener->state = LISTENER_IS_OWNER;
                /* async grabs cannot replay, so automatically accept this touch */
                if (dev->deviceGrab.grab &&
                    dev->deviceGrab.fromPassiveGrab &&
                    dev->deviceGrab.grab->pointerMode == GrabModeAsync)
                    ActivateEarlyAccept(dev, ti);
            }
            goto out;
        }
    
    DeliverTouchEmulatedEvent succeeds.  The deviceGrab meets all
    three of the conditions of the inner if, enters
    ActivateEarlyAccept which then fails due to,
    
        BUG_RETURN(ti->listeners[0].type != LISTENER_GRAB &&
                   ti->listeners[0].type != LISTENER_POINTER_GRAB);
    
    That is, despite listener->type == LISTENER_POINTER_REGULAR. With my
    non-existent knowledge of XINPUT, it seems like the solution here
    might be to only ActivateEarlyAccept when listener->type ==
    LISTENER_POINTER_GRAB.
    
    Signed-off-by: Ben Gamari <bgamari.foss at gmail.com>
    Reviewed-by: Peter Hutterer <peter.hutterer at who-t.net>
    Signed-off-by: Peter Hutterer <peter.hutterer at who-t.net>

diff --git a/Xi/exevents.c b/Xi/exevents.c
index 5dc9020..5e1d3e0 100644
--- a/Xi/exevents.c
+++ b/Xi/exevents.c
@@ -1845,7 +1845,8 @@ DeliverTouchBeginEvent(DeviceIntPtr dev, TouchPointInfoPtr ti,
         if (rc == Success) {
             listener->state = LISTENER_IS_OWNER;
             /* async grabs cannot replay, so automatically accept this touch */
-            if (dev->deviceGrab.grab &&
+            if (listener->type == LISTENER_POINTER_GRAB &&
+                dev->deviceGrab.grab &&
                 dev->deviceGrab.fromPassiveGrab &&
                 dev->deviceGrab.grab->pointerMode == GrabModeAsync)
                 ActivateEarlyAccept(dev, ti);


More information about the xorg-commit mailing list