xserver: Branch 'server-1.7-nominations' - 7 commits

Peter Hutterer whot at kemper.freedesktop.org
Thu Apr 8 18:18:41 PDT 2010


 Xext/saver.c                   |    2 +-
 configure.ac                   |    1 +
 dix/events.c                   |   36 ++++++++++++++++++++++++++++++++++++
 dix/extension.c                |    5 ++++-
 hw/kdrive/linux/evdev.c        |    2 +-
 hw/xfree86/ramdac/xf86Cursor.c |    1 +
 xkb/xkbUtils.c                 |    2 +-
 7 files changed, 45 insertions(+), 4 deletions(-)

New commits:
commit e7154e9375e6b624db01a787d9ec6c8cedc2eb81
Author: Peter Hutterer <peter.hutterer at who-t.net>
Date:   Wed Mar 17 14:32:38 2010 +1000

    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 at who-t.net>
    Tested-by: Jim Ramsay <i.am at jimramsay.com>
    Signed-off-by: Keith Packard <keithp at keithp.com>
    (cherry picked from commit 1c612acca8568fcdf9761d23f112adaf4d496f1b)
    
    Signed-off-by: Peter Hutterer <peter.hutterer at who-t.net>

diff --git a/dix/events.c b/dix/events.c
index 3c625db..732740e 100644
--- a/dix/events.c
+++ b/dix/events.c
@@ -3552,6 +3552,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);
@@ -3573,6 +3575,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);
@@ -3584,6 +3604,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);
commit d33b3bf41b92e088e7aacbbcb01df18bae50baa8
Author: Michel Dänzer <daenzer at vmware.com>
Date:   Mon Mar 22 18:01:17 2010 +0100

    Xext: Fix cursor reference counting hazard.
    
    Make sure the reference count of the new cursor is increased before the old
    one is decreased, otherwise bad things will happen if they're one and the
    same and the reference count is 1 initially. Not sure this can actually happen
    here, but better safe than sorry.
    
    Signed-off-by: Michel Dänzer <daenzer at vmware.com>
    Reviewed-by: Roland Scheidegger <sroland at vmware.com>
    Signed-off-by: Keith Packard <keithp at keithp.com>
    (cherry picked from commit 3083c5d0c4386cdd7083b7a83ac72fdad2f1e61e)
    
    Signed-off-by: Peter Hutterer <peter.hutterer at who-t.net>

diff --git a/Xext/saver.c b/Xext/saver.c
index 04e6497..1f54a2c 100644
--- a/Xext/saver.c
+++ b/Xext/saver.c
@@ -618,10 +618,10 @@ CreateSaverWindow (ScreenPtr pScreen)
     	    	FreeResource (pWin->drawable.id, RT_NONE);
     	    	return FALSE;
 	    }
+	pAttr->pCursor->refcnt++;
 	if (pWin->optional->cursor)
 	    FreeCursor (pWin->optional->cursor, (Cursor)0);
 	pWin->optional->cursor = pAttr->pCursor;
-	pAttr->pCursor->refcnt++;
 	pWin->cursorIsNone = FALSE;
 	CheckWindowOptionalNeed (pWin);
 	mask |= CWCursor;
commit 4520d5cc5faccc5a3b623d4c7e61068431a927cc
Author: Mikhail Gusarov <dottedmag at dottedmag.net>
Date:   Tue Mar 23 01:03:53 2010 +0600

    kdrive: Bump evdev maxKeycode
    
    There are keycodes > 193 in evdev, e.g. KEY_WIMAX which is 246 .
    
    Signed-off-by: Mikhail Gusarov <dottedmag at dottedmag.net>
    Reviewed-by: Peter Hutterer <peter.hutterer at who-t.net>
    Acked-by: Adam Jackson <ajax at nwnk.net>
    Signed-off-by: Keith Packard <keithp at keithp.com>
    (cherry picked from commit e086b99c1f5ce351b578de7cd9f616bc79d6cf64)
    
    Signed-off-by: Peter Hutterer <peter.hutterer at who-t.net>

diff --git a/hw/kdrive/linux/evdev.c b/hw/kdrive/linux/evdev.c
index 096a2dd..7953a75 100644
--- a/hw/kdrive/linux/evdev.c
+++ b/hw/kdrive/linux/evdev.c
@@ -362,7 +362,7 @@ readMapping (KdKeyboardInfo *ki)
         return;
 
     ki->minScanCode = 0;
-    ki->maxScanCode = 193;
+    ki->maxScanCode = 247;
 }
 
 static void
commit 48f8a7d1259a559b3cc774598b5d0d6edbc984bc
Author: Peter Hutterer <peter.hutterer at who-t.net>
Date:   Mon Mar 22 09:20:49 2010 +1000

    configure: Always define XINPUT.
    
    This define was removed in e251c9e75afdc "Remove all traces of #ifdef XINPUT
    and the matching bits from the configure.ac". Drivers that support multiple
    server versions and still check for ifdef XINPUT now always build without
    XINPUT support if they're calling XORG_DRIVER_CHECK_EXT(XINPUT, inputproto).
    
    Signed-off-by: Peter Hutterer <peter.hutterer at who-t.net>
    Reviewed-by: Dan Nicholson <dbn.lists at gmail.com>
    (cherry picked from commit 6389405b56d2221d8a7b80c4bb3bd3b4e1a29bab)
    
    Signed-off-by: Peter Hutterer <peter.hutterer at who-t.net>

diff --git a/configure.ac b/configure.ac
index 4a19ae4..45de198 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1078,6 +1078,7 @@ MIEXT_DAMAGE_LIB='$(top_builddir)/miext/damage/libdamage.la'
 MIEXT_DAMAGE_INC='-I$(top_srcdir)/miext/damage'
 
 # XINPUT extension is integral part of the server
+AC_DEFINE(XINPUT, 1, [Support X Input extension])
 XI_LIB='$(top_builddir)/Xi/libXi.la'
 XI_INC='-I$(top_srcdir)/Xi'
 
commit 1130a0def920fdeb064cd5958d59ee2882a79d28
Author: Jeremy Huddleston <jeremyhu at freedesktop.org>
Date:   Tue Mar 23 10:37:36 2010 -0700

    XKB: Fix garbage initialization
    
    XkbEnableDisableControls set extra garbage bits on the xkbControlsNotify
    changedControls mask because it was uninitialized on the stack.
    
    Found by clang
    
    Signed-off-by: Jeremy Huddleston <jeremyhu at apple.com>
    Signed-off-by: Peter Hutterer <peter.hutterer at who-t.net>
    (cherry picked from commit 8311cd5f89ca6781842bb24671b8122cdf8be148)
    
    Signed-off-by: Peter Hutterer <peter.hutterer at who-t.net>

diff --git a/xkb/xkbUtils.c b/xkb/xkbUtils.c
index 75e243c..30ec438 100644
--- a/xkb/xkbUtils.c
+++ b/xkb/xkbUtils.c
@@ -753,7 +753,7 @@ XkbSrvLedInfoPtr	sli;
     if (cause!=NULL) {
 	xkbControlsNotify cn;
 	cn.numGroups= ctrls->num_groups;
-	cn.changedControls|= XkbControlsEnabledMask;
+	cn.changedControls= XkbControlsEnabledMask;
 	cn.enabledControls= ctrls->enabled_ctrls;
 	cn.enabledControlChanges= (ctrls->enabled_ctrls^old);
 	cn.keycode= cause->kc;
commit ff5af4dc2d14c1bf2676f69e7dcee62eb9a08f78
Author: Paulo Ricardo Zanoni <pzanoni at mandriva.com>
Date:   Thu Mar 11 14:28:18 2010 -0300

    dix: be more verbose when we run out of opcodes
    
    If we run out of opcodes, nothing is print on the log, making the
    problem hard to debug. In the current Xserver, if you enable some
    extensions like multibuffer (+2 events) and use nvidia binary driver (+5
    events) you can run out of opcode numbers.
    
    Signed-off-by: Paulo Ricardo Zanoni <pzanoni at mandriva.com>
    Reviewed-by: Peter Hutterer <peter.hutterer at who-t.net>
    Reviewed-by: Julien Cristau <jcristau at debian.org>
    Signed-off-by: Keith Packard <keithp at keithp.com>
    (cherry picked from commit a9fe7cfa77ccee64d68732dc3f37d35cbfc27a65)
    
    Signed-off-by: Peter Hutterer <peter.hutterer at who-t.net>

diff --git a/dix/extension.c b/dix/extension.c
index fb83af1..f348665 100644
--- a/dix/extension.c
+++ b/dix/extension.c
@@ -83,8 +83,11 @@ AddExtension(char *name, int NumEvents, int NumErrors,
     if (!MainProc || !SwappedMainProc || !MinorOpcodeProc)
         return((ExtensionEntry *) NULL);
     if ((lastEvent + NumEvents > LAST_EVENT) || 
-	        (unsigned)(lastError + NumErrors > LAST_ERROR))
+	        (unsigned)(lastError + NumErrors > LAST_ERROR)) {
+        LogMessage(X_ERROR, "Not enabling extension %s: maximum number of "
+                   "events or errors exceeded.\n", name);
         return((ExtensionEntry *) NULL);
+    }
 
     ext = xalloc(sizeof(ExtensionEntry));
     if (!ext)
commit 2350035463bcfb6d80249b55ce392a154a8d91da
Author: Pierre-Loup A. Griffais <pgriffais at nvidia.com>
Date:   Fri Apr 2 12:48:21 2010 -0700

    Don't keep a pointer to a possibly freed cursor when changing screens, preventing a crash in xf86CursorEnableDisableFBAccess() trying to restore it.
    
    Signed-off-by: Pierre-Loup A. Griffais <pgriffais at nvidia.com>
    Signed-off-by: Peter Hutterer <peter.hutterer at who-t.net>
    (cherry picked from commit 6b09f66d8c6ebcee70382b5cca1ba82b68f20afa)
    
    Signed-off-by: Peter Hutterer <peter.hutterer at who-t.net>

diff --git a/hw/xfree86/ramdac/xf86Cursor.c b/hw/xfree86/ramdac/xf86Cursor.c
index 7f23d9e..f5f0873 100644
--- a/hw/xfree86/ramdac/xf86Cursor.c
+++ b/hw/xfree86/ramdac/xf86Cursor.c
@@ -312,6 +312,7 @@ xf86CursorSetCursor(DeviceIntPtr pDev, ScreenPtr pScreen, CursorPtr pCurs,
             xf86SetCursor(pScreen, NullCursor, x, y);
             ScreenPriv->isUp = FALSE;
         }
+        ScreenPriv->CurrentCursor = NullCursor;
         return;
     }
 


More information about the xorg-commit mailing list