xserver: Branch 'xorg-server-1.6-apple' - 4 commits

Jeremy Huddleston jeremyhu at kemper.freedesktop.org
Sat Jul 25 20:07:27 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 9a801d1716f005c30be076fcc9ac8dbb3e74d989
Author: Jeremy Huddleston <jeremyhu at freedesktop.org>
Date:   Sat Jul 25 20:06:29 2009 -0700

    XQuartz: Use CopyKeyClass to copy the keymap to the virtual core keyboard.

diff --git a/hw/xquartz/quartzKeyboard.c b/hw/xquartz/quartzKeyboard.c
index a212eb5..261b5a5 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,
@@ -360,6 +363,7 @@ void DarwinKeyboardInit(DeviceIntPtr pDev) {
         XkbSetRepeatKeys(pDev, -1, AutoRepeatModeOn);
     }
 
+    CopyKeyClass(pDev, inputInfo.keyboard);
 }
 
 void DarwinKeyboardReloadHandler(int screenNum, xEventPtr xe, DeviceIntPtr pDev, int nevents) {
commit bcfa6cb2ee2f004daae03b19d3873d209082bb42
Author: Jeremy Huddleston <jeremyhu at freedesktop.org>
Date:   Sat Jul 25 19:43:29 2009 -0700

    Revert "XQuartz: Copy the keyboard map to the core keyboard"
    
    This reverts commit 427e1aab41dabb54354bfd30f2baae98ac8202c0.

diff --git a/hw/xquartz/quartzKeyboard.c b/hw/xquartz/quartzKeyboard.c
index 0e662a4..a212eb5 100644
--- a/hw/xquartz/quartzKeyboard.c
+++ b/hw/xquartz/quartzKeyboard.c
@@ -360,7 +360,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 bfe0b9cfa7af4a48dba849cab1eb152c409b4e08
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.

diff --git a/hw/xquartz/darwinEvents.c b/hw/xquartz/darwinEvents.c
index c6fe566..ecd0ed7 100644
--- a/hw/xquartz/darwinEvents.c
+++ b/hw/xquartz/darwinEvents.c
@@ -572,7 +572,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;
@@ -588,9 +587,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 bf60ffb49700da367f7f88983b042a88fef7219b
Author: Jeremy Huddleston <jeremyhu at freedesktop.org>
Date:   Sat Jul 25 19:33:06 2009 -0700

    mieq: Protect from pDev=NULL in mieqEnqueue and mieqProcessInputEvents

diff --git a/mi/mieq.c b/mi/mieq.c
index 213ad5b..e3850d0 100644
--- a/mi/mieq.c
+++ b/mi/mieq.c
@@ -263,7 +263,7 @@ mieqEnqueue(DeviceIntPtr pDev, xEvent *e)
         evt->event->u.keyButtonPointer.time = miEventQueue.lastEventTime;
 
     miEventQueue.lastEventTime = evt->event->u.keyButtonPointer.time;
-    miEventQueue.events[oldtail].pScreen = EnqueueScreen(pDev);
+    miEventQueue.events[oldtail].pScreen = pDev ? EnqueueScreen(pDev) : NULL;
     miEventQueue.events[oldtail].pDev = pDev;
 
     miEventQueue.lastMotion = isMotion;
@@ -423,7 +423,7 @@ mieqProcessInputEvents(void)
 #endif
         
         type    = event->u.u.type;
-        master  = (!dev->isMaster && dev->u.master) ? dev->u.master : NULL;
+        master  = (dev && !dev->isMaster && dev->u.master) ? dev->u.master : NULL;
 
         if (screenIsSaved == SCREEN_SAVER_ON)
             dixSaveScreens (serverClient, SCREEN_SAVER_OFF, ScreenSaverReset);
@@ -438,7 +438,7 @@ mieqProcessInputEvents(void)
         /* Custom event handler */
         handler = miEventQueue.handlers[type];
 
-        if (screen != DequeueScreen(dev) && !handler) {
+        if (dev && DequeueScreen(dev) && screen != DequeueScreen(dev) && !handler) {
             /* Assumption - screen switching can only occur on motion events. */
             DequeueScreen(dev) = screen;
             x = event->u.keyButtonPointer.rootX;
@@ -464,10 +464,10 @@ mieqProcessInputEvents(void)
              * steal it. */
             if (handler)
             {
-                handler(DequeueScreen(dev)->myNum, event, dev, nevents);
+                int screenNum = dev && DequeueScreen(dev) ? DequeueScreen(dev)->myNum : (screen ? screen->myNum : 0);
+                handler(screenNum, event, dev, nevents);
                 if (master)
-                    handler(DequeueScreen(master)->myNum,
-                            masterEvents->event, master, nevents);
+                    handler(screenNum, masterEvents->event, master, nevents);
             } else
             {
                 /* process slave first, then master */


More information about the xorg-commit mailing list