xserver: Branch 'master' - 8 commits

Keith Packard keithp at kemper.freedesktop.org
Mon Nov 14 09:11:18 PST 2011


 Xext/xselinux_ext.c            |    7 +------
 Xi/exevents.c                  |    8 ++++----
 Xi/xiquerypointer.c            |    2 +-
 dix/enterleave.c               |   10 +++++-----
 dix/events.c                   |   23 ++++++++---------------
 dix/getevents.c                |    2 +-
 hw/xfree86/common/xf86DGA.c    |    2 +-
 hw/xfree86/common/xf86Init.c   |    2 ++
 hw/xfree86/common/xf86Xinput.c |    2 +-
 include/input.h                |    4 ++--
 xkb/xkbActions.c               |    2 +-
 11 files changed, 27 insertions(+), 37 deletions(-)

New commits:
commit bfa2a1857a1efda7f171f10e855d200ca0dbcc1a
Merge: f0d50cc... e7cb8f8...
Author: Keith Packard <keithp at keithp.com>
Date:   Mon Nov 14 09:07:06 2011 -0800

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

commit e7cb8f802adf6fc22e7a930c0dfc5c1076781c96
Author: Peter Hutterer <peter.hutterer at who-t.net>
Date:   Wed Nov 9 15:31:57 2011 +1000

    Xext: remove unused variable 'n'
    
    xselinux_ext.c: In function 'SELinuxSendItemsToClient':
    xselinux_ext.c:340:16: warning: unused variable 'n' [-Wunused-variable]
    
    Signed-off-by: Peter Hutterer <peter.hutterer at who-t.net>
    Reviewed-by: Julien Cristau <jcristau at debian.org>

diff --git a/Xext/xselinux_ext.c b/Xext/xselinux_ext.c
index 641368a..a18a367 100644
--- a/Xext/xselinux_ext.c
+++ b/Xext/xselinux_ext.c
@@ -337,7 +337,7 @@ static int
 SELinuxSendItemsToClient(ClientPtr client, SELinuxListItemRec *items,
 			 int size, int count)
 {
-    int rc, k, n, pos = 0;
+    int rc, k, pos = 0;
     SELinuxListItemsReply rep;
     CARD32 *buf;
 
commit bb4aa1f263ad38c175bfda3b7e6c325260ce3f28
Author: Peter Hutterer <peter.hutterer at who-t.net>
Date:   Wed Nov 9 15:31:10 2011 +1000

    Xext: don't swap CARD8 in SProcSELinuxQueryVersion
    
    xselinux_ext.c: In function 'SELinuxSendItemsToClient':
    xselinux_ext.c:340:16: warning: unused variable 'n' [-Wunused-variable]
    xselinux_ext.c: In function 'SProcSELinuxQueryVersion':
    xselinux_ext.c:532:62: error: call to 'wrong_size' declared with attribute
    error: wrong sized variable passed to swap
    xselinux_ext.c:533:62: error: call to 'wrong_size' declared with attribute
    error: wrong sized variable passed to swap
    
    Signed-off-by: Peter Hutterer <peter.hutterer at who-t.net>
    Reviewed-by: Julien Cristau <jcristau at debian.org>

diff --git a/Xext/xselinux_ext.c b/Xext/xselinux_ext.c
index 56f2d1f..641368a 100644
--- a/Xext/xselinux_ext.c
+++ b/Xext/xselinux_ext.c
@@ -526,11 +526,6 @@ ProcSELinuxDispatch(ClientPtr client)
 static int
 SProcSELinuxQueryVersion(ClientPtr client)
 {
-    REQUEST(SELinuxQueryVersionReq);
-
-    REQUEST_SIZE_MATCH(SELinuxQueryVersionReq);
-    swaps(&stuff->client_major);
-    swaps(&stuff->client_minor);
     return ProcSELinuxQueryVersion(client);
 }
 
commit 35ec24cf245e5ef676e98a0bf7c77296a3f1ff63
Author: Peter Hutterer <peter.hutterer at who-t.net>
Date:   Mon Aug 1 14:14:02 2011 +1000

    input: replace remaining GetPairedDevice() with GetMaster()
    
    Wherever it's obvious which device we need (keyboard or pointer), use
    GetMaster() instead of GetPairedDevice(). It is more reliable in actually
    getting the device type we want.
    
    Signed-off-by: Peter Hutterer <peter.hutterer at who-t.net>
    Reviewed-by: Daniel Stone <daniel at fooishbar.org>

diff --git a/Xi/exevents.c b/Xi/exevents.c
index edf2c39..53db036 100644
--- a/Xi/exevents.c
+++ b/Xi/exevents.c
@@ -104,7 +104,7 @@ int
 XIShouldNotify(ClientPtr client, DeviceIntPtr dev)
 {
     DeviceIntPtr current_ptr = PickPointer(client);
-    DeviceIntPtr current_kbd = GetPairedDevice(current_ptr);
+    DeviceIntPtr current_kbd = GetMaster(current_ptr, KEYBOARD_OR_FLOAT);
 
     if (dev == current_kbd || dev == current_ptr)
         return 1;
@@ -903,13 +903,13 @@ ProcessOtherEvent(InternalEvent *ev, DeviceIntPtr device)
 
     if (IsPointerDevice(device))
     {
-        kbd = GetPairedDevice(device);
+        kbd = GetMaster(device, KEYBOARD_OR_FLOAT);
         mouse = device;
         if (!kbd->key) /* can happen with floating SDs */
             kbd = NULL;
     } else
     {
-        mouse = GetPairedDevice(device);
+        mouse = GetMaster(device, POINTER_OR_FLOAT);
         kbd = device;
         if (!mouse->valuator || !mouse->button) /* may be float. SDs */
             mouse = NULL;
diff --git a/Xi/xiquerypointer.c b/Xi/xiquerypointer.c
index 9e05eff..d01a813 100644
--- a/Xi/xiquerypointer.c
+++ b/Xi/xiquerypointer.c
@@ -109,7 +109,7 @@ ProcXIQueryPointer(ClientPtr client)
         MaybeStopHint(pDev, client);
 
     if (IsMaster(pDev))
-        kbd = GetPairedDevice(pDev);
+        kbd = GetMaster(pDev, MASTER_KEYBOARD);
     else
         kbd = (pDev->key) ? pDev : NULL;
 
diff --git a/dix/enterleave.c b/dix/enterleave.c
index b1ee3fb..a39e640 100644
--- a/dix/enterleave.c
+++ b/dix/enterleave.c
@@ -766,7 +766,7 @@ CoreFocusOutNotifyPointerEvents(DeviceIntPtr dev,
 {
     WindowPtr P, stopAt;
 
-    P = PointerWin(GetPairedDevice(dev));
+    P = PointerWin(GetMaster(dev, POINTER_OR_FLOAT));
 
     if (!P)
         return;
@@ -821,7 +821,7 @@ CoreFocusInNotifyPointerEvents(DeviceIntPtr dev,
 {
     WindowPtr P;
 
-    P = PointerWin(GetPairedDevice(dev));
+    P = PointerWin(GetMaster(dev, POINTER_OR_FLOAT));
 
     if (!P || P == exclude || (pwin_parent != P && !IsParent(pwin_parent, P)))
         return;
@@ -1087,7 +1087,7 @@ CoreFocusPointerRootNoneSwitch(DeviceIntPtr dev,
     for (i = 0; i < nscreens; i++)
     {
         root = screenInfo.screens[i]->root;
-        if (!HasOtherPointer(root, GetPairedDevice(dev)) && !FirstFocusChild(root))
+        if (!HasOtherPointer(root, GetMaster(dev, POINTER_OR_FLOAT)) && !FirstFocusChild(root))
         {
             /* If pointer was on PointerRootWin and changes to NoneWin, and
              * the pointer paired with dev is below the current root window,
@@ -1095,7 +1095,7 @@ CoreFocusPointerRootNoneSwitch(DeviceIntPtr dev,
             if (dev->focus && dev->focus->win == PointerRootWin &&
                 B != PointerRootWin)
             {
-                WindowPtr ptrwin = PointerWin(GetPairedDevice(dev));
+                WindowPtr ptrwin = PointerWin(GetMaster(dev, POINTER_OR_FLOAT));
                 if (ptrwin && IsParent(root, ptrwin))
                     CoreFocusOutNotifyPointerEvents(dev, root, None, mode, TRUE);
             }
@@ -1187,7 +1187,7 @@ CoreFocusFromPointerRootOrNone(DeviceIntPtr dev,
             if (dev->focus && dev->focus->win == PointerRootWin &&
                 B != PointerRootWin)
             {
-                WindowPtr ptrwin = PointerWin(GetPairedDevice(dev));
+                WindowPtr ptrwin = PointerWin(GetMaster(dev, POINTER_OR_FLOAT));
                 if (ptrwin)
                     CoreFocusOutNotifyPointerEvents(dev, root, None, mode, TRUE);
             }
diff --git a/dix/events.c b/dix/events.c
index f87d2bb..5e0dc5f 100644
--- a/dix/events.c
+++ b/dix/events.c
@@ -3698,10 +3698,7 @@ CheckPassiveGrabsOnWindow(
 	gdev= grab->modifierDevice;
         if (grab->grabtype == GRABTYPE_CORE)
         {
-            if (IsPointerDevice(device))
-                gdev = GetPairedDevice(device);
-            else
-                gdev = device;
+            gdev = GetMaster(device, KEYBOARD_OR_FLOAT);
         } else if (grab->grabtype == GRABTYPE_XI2)
         {
             /* if the device is an attached slave device, gdev must be the
@@ -4000,8 +3997,7 @@ DeliverFocusedEvent(DeviceIntPtr keybd, InternalEvent *event, WindowPtr window)
     }
 
     /* just deliver it to the focus window */
-    ptr = GetPairedDevice(keybd);
-
+    ptr = GetMaster(keybd, POINTER_OR_FLOAT);
 
     rc = EventToXI2(event, &xi2);
     if (rc == Success)
@@ -4501,7 +4497,7 @@ CoreEnterLeaveEvent(
     GrabPtr	        grab = mouse->deviceGrab.grab;
     Mask		mask;
 
-    keybd = GetPairedDevice(mouse);
+    keybd = GetMaster(mouse, KEYBOARD_OR_FLOAT);
 
     if ((pWin == mouse->valuator->motionHintWindow) &&
 	(detail != NotifyInferior))
@@ -4719,10 +4715,7 @@ SetInputFocus(
     }
     time = ClientTimeToServerTime(ctime);
 
-    if (IsKeyboardDevice(dev))
-        keybd = dev;
-    else
-        keybd = GetPairedDevice(dev);
+    keybd = GetMaster(dev, KEYBOARD_OR_FLOAT);
 
     if ((focusID == None) || (focusID == PointerRoot))
 	focusWin = (WindowPtr)(long)focusID;
@@ -5197,7 +5190,7 @@ ProcQueryPointer(ClientPtr client)
     if (rc != Success && rc != BadAccess)
 	return rc;
 
-    keyboard = GetPairedDevice(mouse);
+    keyboard = GetMaster(mouse, MASTER_KEYBOARD);
 
     pSprite = mouse->spriteInfo->sprite;
     if (mouse->valuator->motionHintWindow)
@@ -5321,7 +5314,7 @@ ProcSendEvent(ClientPtr client)
     WindowPtr pWin;
     WindowPtr effectiveFocus = NullWindow; /* only set if dest==InputFocus */
     DeviceIntPtr dev = PickPointer(client);
-    DeviceIntPtr keybd = GetPairedDevice(dev);
+    DeviceIntPtr keybd = GetMaster(dev, MASTER_KEYBOARD);
     SpritePtr pSprite = dev->spriteInfo->sprite;
     REQUEST(xSendEventReq);
 
@@ -5594,7 +5587,7 @@ ProcGrabButton(ClientPtr client)
     }
 
     ptr = PickPointer(client);
-    modifierDevice = GetPairedDevice(ptr);
+    modifierDevice = GetMaster(ptr, MASTER_KEYBOARD);
     if (stuff->pointerMode == GrabModeSync ||
 	stuff->keyboardMode == GrabModeSync)
 	access_mode |= DixFreezeAccess;
@@ -5651,7 +5644,7 @@ ProcUngrabButton(ClientPtr client)
     tempGrab.window = pWin;
     tempGrab.modifiersDetail.exact = stuff->modifiers;
     tempGrab.modifiersDetail.pMask = NULL;
-    tempGrab.modifierDevice = GetPairedDevice(ptr);
+    tempGrab.modifierDevice = GetMaster(ptr, MASTER_KEYBOARD);
     tempGrab.type = ButtonPress;
     tempGrab.detail.exact = stuff->button;
     tempGrab.grabtype = GRABTYPE_CORE;
diff --git a/hw/xfree86/common/xf86DGA.c b/hw/xfree86/common/xf86DGA.c
index 74eb739..46e3005 100644
--- a/hw/xfree86/common/xf86DGA.c
+++ b/hw/xfree86/common/xf86DGA.c
@@ -1016,7 +1016,7 @@ DGAProcessKeyboardEvent (ScreenPtr pScreen, DGAEvent *event, DeviceIntPtr keybd)
 {
     KeyClassPtr	    keyc = keybd->key;
     DGAScreenPtr    pScreenPriv = DGA_GET_SCREEN_PRIV(pScreen);
-    DeviceIntPtr    pointer = GetPairedDevice(keybd);
+    DeviceIntPtr    pointer = GetMaster(keybd, POINTER_OR_FLOAT);
     DeviceEvent     ev;
 
     memset(&ev, 0, sizeof(ev));
diff --git a/hw/xfree86/common/xf86Xinput.c b/hw/xfree86/common/xf86Xinput.c
index c3ffc27..7feb48c 100644
--- a/hw/xfree86/common/xf86Xinput.c
+++ b/hw/xfree86/common/xf86Xinput.c
@@ -1275,7 +1275,7 @@ xf86PostKeyEventM(DeviceIntPtr	device,
     DeviceIntPtr pointer;
 
     /* Some pointers send key events, paired device is wrong then. */
-    pointer = IsPointerDevice(device) ? device : GetPairedDevice(device);
+    pointer = GetMaster(device, POINTER_OR_FLOAT);
     if (miPointerGetScreen(pointer)) {
         int index = miPointerGetScreen(pointer)->myNum;
 
diff --git a/xkb/xkbActions.c b/xkb/xkbActions.c
index 000002a..1e94d26 100644
--- a/xkb/xkbActions.c
+++ b/xkb/xkbActions.c
@@ -1203,7 +1203,7 @@ xkbDeviceInfoPtr xkbPrivPtr = XKBDEVICEINFO(dev);
 	if (keyEvent)
             tmpdev = dev;
         else
-            tmpdev = GetPairedDevice(dev);
+            tmpdev = GetMaster(dev, POINTER_OR_FLOAT);
 
         UNWRAP_PROCESS_INPUT_PROC(tmpdev,xkbPrivPtr, backupproc);
         dev->public.processInputProc((InternalEvent*)event, tmpdev);
commit fc16917ad6f0d2722bfb5c5eeca955dd3bc4125a
Author: Peter Hutterer <peter.hutterer at who-t.net>
Date:   Fri Apr 15 13:32:10 2011 +1000

    include: export GetProximityEvents and QueueProximityEvents
    
    This is mainly needed for consistency with GetPointerEvents and friend.
    No-one seems to actually need this function from outside the usual DDXs.
    
    Signed-off-by: Peter Hutterer <peter.hutterer at who-t.net>
    Reviewed-by: Jeremy Huddleston <jeremyhu at apple.com>

diff --git a/include/input.h b/include/input.h
index 5dd5c1b..9ef726f 100644
--- a/include/input.h
+++ b/include/input.h
@@ -463,13 +463,13 @@ extern _X_EXPORT void QueueKeyboardEvents(
     int key_code,
     const ValuatorMask *mask);
 
-extern int GetProximityEvents(
+extern _X_EXPORT int GetProximityEvents(
     InternalEvent *events,
     DeviceIntPtr pDev,
     int type,
     const ValuatorMask *mask);
 
-extern void QueueProximityEvents(
+extern _X_EXPORT void QueueProximityEvents(
     DeviceIntPtr pDev,
     int type,
     const ValuatorMask *mask);
commit 11840595a1be9f2df7390bcc708cc176e60d3ef2
Author: Peter Hutterer <peter.hutterer at who-t.net>
Date:   Thu Nov 3 08:58:58 2011 +1000

    dix: Don't let a driver without a ProximityClassRec post events
    
    Signed-off-by: Peter Hutterer <peter.hutterer at who-t.net>
    Reviewed-by: Jeremy Huddleston <jeremyhu at apple.com>

diff --git a/dix/getevents.c b/dix/getevents.c
index df47b2b..8798f64 100644
--- a/dix/getevents.c
+++ b/dix/getevents.c
@@ -1546,7 +1546,7 @@ GetProximityEvents(InternalEvent *events, DeviceIntPtr pDev, int type, const Val
     /* Sanity checks. */
     if ((type != ProximityIn && type != ProximityOut) || !mask_in)
         return 0;
-    if (!pDev->valuator)
+    if (!pDev->valuator || !pDev->proximity)
         return 0;
 
     valuator_mask_copy(&mask, mask_in);
commit 22715e465b415b3351b83b8279a4f44157f63199
Author: Peter Hutterer <peter.hutterer at who-t.net>
Date:   Thu Oct 27 11:03:39 2011 +1000

    Xi: allow passive keygrabs on the XIAll(Master)Devices fake devices
    
    They don't have a KeyClassRec, but we must still allow passive grabs on
    them.
    
    Signed-off-by: Peter Hutterer <peter.hutterer at who-t.net>
    Tested-by: Bastien Nocera <hadess at hadess.net>
    Reviewed-by: Daniel Stone <daniel at fooishbar.org>

diff --git a/Xi/exevents.c b/Xi/exevents.c
index 053c76f..edf2c39 100644
--- a/Xi/exevents.c
+++ b/Xi/exevents.c
@@ -1495,7 +1495,7 @@ GrabKey(ClientPtr client, DeviceIntPtr dev, DeviceIntPtr modifier_device,
     rc = CheckGrabValues(client, param);
     if (rc != Success)
         return rc;
-    if (k == NULL)
+    if ((dev->id != XIAllDevices && dev->id != XIAllMasterDevices) && k == NULL)
 	return BadMatch;
     if (grabtype == GRABTYPE_XI)
     {
commit c643c2b7bf480f5c27ff8606bda087f8bff3b154
Author: Peter Hutterer <peter.hutterer at who-t.net>
Date:   Tue Nov 1 12:17:50 2011 +1000

    xfree86: duplicate name and driver from pInfo for NewInputDeviceRequest
    
    xorg.conf devices had the name and driver set in the DDX's InputInfoPtr list
    but not in the option list for those devices. That information was lost when
    passing the options into NewInputDeviceRequest. NIDR then refused to start
    the devices.
    
    Introduced in xorg-server-1.11.0-250-ge4cd24e
    
    Signed-off-by: Peter Hutterer <peter.hutterer at who-t.net>
    Tested-by: James Cloos <cloos at jhcloos.com>

diff --git a/hw/xfree86/common/xf86Init.c b/hw/xfree86/common/xf86Init.c
index a0fdf29..c1e48ee 100644
--- a/hw/xfree86/common/xf86Init.c
+++ b/hw/xfree86/common/xf86Init.c
@@ -827,6 +827,8 @@ InitInput(int argc, char **argv)
 
     /* Initialize all configured input devices */
     for (pInfo = xf86ConfigLayout.inputs; pInfo && *pInfo; pInfo++) {
+        (*pInfo)->options = xf86AddNewOption((*pInfo)->options, "driver", (*pInfo)->driver);
+        (*pInfo)->options = xf86AddNewOption((*pInfo)->options, "identifier", (*pInfo)->name);
         /* If one fails, the others will too */
         if (NewInputDeviceRequest((*pInfo)->options, NULL, &dev) == BadAlloc)
             break;


More information about the xorg-commit mailing list