xserver: Branch 'master' - 4 commits

Jeremy Huddleston jeremyhu at kemper.freedesktop.org
Sat Jul 25 20:19:17 PDT 2009


 hw/xquartz/darwinEvents.c   |    4 +---
 hw/xquartz/quartzKeyboard.c |    5 ++++-
 mi/mieq.c                   |   12 ++++++------
 3 files changed, 11 insertions(+), 10 deletions(-)

New commits:
commit 7f28c555b80dda2ed4f518efdb79733647dfea80
Author: Jeremy Huddleston <jeremyhu at freedesktop.org>
Date:   Sat Jul 25 20:19:05 2009 -0700

    XQuartz: Use CopyKeyClass to copy the keymap to the virtual core keyboard.
    (cherry picked from commit 9a801d1716f005c30be076fcc9ac8dbb3e74d989)

diff --git a/hw/xquartz/quartzKeyboard.c b/hw/xquartz/quartzKeyboard.c
index 8dfea27..ca0a527 100644
--- a/hw/xquartz/quartzKeyboard.c
+++ b/hw/xquartz/quartzKeyboard.c
@@ -68,6 +68,9 @@
 #include "X11/keysym.h"
 #include "keysym2ucs.h"
 
+extern void
+CopyKeyClass(DeviceIntPtr device, DeviceIntPtr master);
+
 enum {
     MOD_COMMAND = 256,
     MOD_SHIFT = 512,
@@ -349,6 +352,8 @@ void DarwinKeyboardInit(DeviceIntPtr pDev) {
 
         XkbSetRepeatKeys(pDev, -1, AutoRepeatModeOn);
     }
+
+    CopyKeyClass(pDev, inputInfo.keyboard);
 }
 
 void DarwinKeyboardReloadHandler(int screenNum, xEventPtr xe, DeviceIntPtr pDev, int nevents) {
commit 1031ac3a7306e7a82169c79c64607696c826c47f
Author: Jeremy Huddleston <jeremyhu at freedesktop.org>
Date:   Sat Jul 25 20:18:38 2009 -0700

    Revert "XQuartz: Copy the keyboard map to the core keyboard"
    
    This reverts commit 795de791cf18c658421d701af645718493eac51e.

diff --git a/hw/xquartz/quartzKeyboard.c b/hw/xquartz/quartzKeyboard.c
index 6d5bad9..8dfea27 100644
--- a/hw/xquartz/quartzKeyboard.c
+++ b/hw/xquartz/quartzKeyboard.c
@@ -349,8 +349,6 @@ void DarwinKeyboardInit(DeviceIntPtr pDev) {
 
         XkbSetRepeatKeys(pDev, -1, AutoRepeatModeOn);
     }
-
-    SetKeySymsMap(&inputInfo.keyboard->key->curKeySyms, &pDev->key->curKeySyms);
 }
 
 void DarwinKeyboardReloadHandler(int screenNum, xEventPtr xe, DeviceIntPtr pDev, int nevents) {
commit 48703083a1cf308306f254691d7c2ecda09b3812
Author: Jeremy Huddleston <jeremyhu at freedesktop.org>
Date:   Sat Jul 25 19:34:17 2009 -0700

    XQuartz: Use pDev=NULL for DarwinSendDDXEvent
    
    These events aren't really related to physical input devices anyways, so it doesn't make sense to use the pointer.
    (cherry picked from commit bfe0b9cfa7af4a48dba849cab1eb152c409b4e08)

diff --git a/hw/xquartz/darwinEvents.c b/hw/xquartz/darwinEvents.c
index 1e285cd..42e12dc 100644
--- a/hw/xquartz/darwinEvents.c
+++ b/hw/xquartz/darwinEvents.c
@@ -571,7 +571,6 @@ void DarwinSendDDXEvent(int type, int argc, ...) {
     INT32 *argv;
     int i, max_args;
     va_list args;
-    DeviceIntPtr pDev;
 
     memset(&xe, 0, sizeof(xe));
     xe.u.u.type = type;
@@ -587,9 +586,8 @@ void DarwinSendDDXEvent(int type, int argc, ...) {
         va_end (args);
     }
 
-    pDev = (!darwinPointer->isMaster && darwinPointer->u.master) ? darwinPointer->u.master : darwinPointer;
     darwinEvents_lock(); {
-        mieqEnqueue(pDev, &xe);
+        mieqEnqueue(NULL, &xe);
         DarwinPokeEQ();
     } darwinEvents_unlock();
 }
commit b8e0f740829d0c81324aeb59222fc8e3d22493cc
Author: Jeremy Huddleston <jeremyhu at freedesktop.org>
Date:   Sat Jul 25 20:17:25 2009 -0700

    mieq: Protect from pDev=NULL in mieqEnqueue and mieqProcessInputEvents
    (cherry picked from commit bf60ffb49700da367f7f88983b042a88fef7219b)

diff --git a/mi/mieq.c b/mi/mieq.c
index f28a16d..976fac9 100644
--- a/mi/mieq.c
+++ b/mi/mieq.c
@@ -217,7 +217,7 @@ mieqEnqueue(DeviceIntPtr pDev, InternalEvent *e)
         e->any.time = miEventQueue.lastEventTime;
 
     miEventQueue.lastEventTime = ((InternalEvent*)evt->event)->any.time;
-    miEventQueue.events[oldtail].pScreen = EnqueueScreen(pDev);
+    miEventQueue.events[oldtail].pScreen = pDev ? EnqueueScreen(pDev) : NULL;
     miEventQueue.events[oldtail].pDev = pDev;
 
     miEventQueue.lastMotion = isMotion;
@@ -383,7 +383,7 @@ mieqProcessDeviceEvent(DeviceIntPtr dev,
     /* Custom event handler */
     handler = miEventQueue.handlers[event->any.type];
 
-    if (screen && screen != DequeueScreen(dev) && !handler) {
+    if (dev && screen && screen != DequeueScreen(dev) && !handler) {
         /* Assumption - screen switching can only occur on motion events. */
         DequeueScreen(dev) = screen;
         x = event->device.root_x;
@@ -400,12 +400,12 @@ mieqProcessDeviceEvent(DeviceIntPtr dev,
          * steal it. */
         if (handler)
         {
-            handler(DequeueScreen(dev)->myNum, event, dev);
+            int screenNum = dev && DequeueScreen(dev) ? DequeueScreen(dev)->myNum : (screen ? screen->myNum : 0);
+            handler(screenNum, event, dev);
             /* Check for the SD's master in case the device got detached
              * during event processing */
             if (master && dev->u.master)
-                handler(DequeueScreen(master)->myNum,
-                        (InternalEvent*)masterEvents->event, master);
+                handler(screenNum, (InternalEvent*)masterEvents->event, master);
         } else
         {
             /* process slave first, then master */
@@ -459,7 +459,7 @@ mieqProcessInputEvents(void)
         pthread_mutex_unlock(&miEventQueueMutex);
 #endif
 
-        master  = (!IsMaster(dev) && dev->u.master) ? dev->u.master : NULL;
+        master  = (dev && !IsMaster(dev) && dev->u.master) ? dev->u.master : NULL;
 
         if (screenIsSaved == SCREEN_SAVER_ON)
             dixSaveScreens (serverClient, SCREEN_SAVER_OFF, ScreenSaverReset);


More information about the xorg-commit mailing list