xserver: Branch 'master' - 12 commits

Peter Hutterer whot at kemper.freedesktop.org
Wed Jun 4 23:52:05 PDT 2008


 hw/dmx/dmxcursor.c          |   13 ++++++++++++-
 hw/dmx/dmxgc.c              |    2 ++
 hw/dmx/dmxinit.c            |    5 +++--
 hw/dmx/input/dmxevents.c    |    2 --
 hw/dmx/input/dmxinputinit.c |   33 ++++++++++-----------------------
 hw/dmx/input/dmxxinput.c    |    3 ---
 mi/misprite.c               |   10 +++++-----
 7 files changed, 32 insertions(+), 36 deletions(-)

New commits:
commit d25ffcfbfcfe8e059f2889873c9dbe76a28ad00c
Author: Peter Hutterer <peter at cs.unisa.edu.au>
Date:   Thu Jun 5 15:29:35 2008 +0930

    mi: protect against possible NULL-pointer dereference.

diff --git a/mi/misprite.c b/mi/misprite.c
index 25f6b6f..b8df5eb 100644
--- a/mi/misprite.c
+++ b/mi/misprite.c
@@ -460,7 +460,7 @@ miSpriteBlockHandler (int i, pointer blockData, pointer pTimeout,
     pPriv = (miSpriteScreenPtr)dixLookupPrivate(&pScreen->devPrivates,
 						miSpriteScreenKey);
     SCREEN_PROLOGUE(pScreen, BlockHandler);
-    
+
     (*pScreen->BlockHandler) (i, blockData, pTimeout, pReadmask);
 
     SCREEN_EPILOGUE(pScreen, BlockHandler);
@@ -470,8 +470,8 @@ miSpriteBlockHandler (int i, pointer blockData, pointer pTimeout,
         if (DevHasCursor(pDev))
         {
             pCursorInfo = MISPRITE(pDev);
-            if (!pCursorInfo->isUp 
-                    && pCursorInfo->pScreen == pScreen 
+            if (pCursorInfo && !pCursorInfo->isUp
+                    && pCursorInfo->pScreen == pScreen
                     && pCursorInfo->shouldBeUp)
             {
                 SPRITE_DEBUG (("BlockHandler restore\n"));
@@ -484,8 +484,8 @@ miSpriteBlockHandler (int i, pointer blockData, pointer pTimeout,
         if (DevHasCursor(pDev))
         {
             pCursorInfo = MISPRITE(pDev);
-            if (!pCursorInfo->isUp && 
-                    pCursorInfo->pScreen == pScreen && 
+            if (pCursorInfo && !pCursorInfo->isUp &&
+                    pCursorInfo->pScreen == pScreen &&
                     pCursorInfo->shouldBeUp)
             {
                 SPRITE_DEBUG (("BlockHandler restore\n"));
commit 874dcdb3bdb9320aae252d3c7927d412685059d5
Author: Peter Hutterer <peter at cs.unisa.edu.au>
Date:   Thu Jun 5 15:38:48 2008 +0930

    dmx: remove a ifndef XINPUT, XINPUT is always defined now.

diff --git a/hw/dmx/input/dmxinputinit.c b/hw/dmx/input/dmxinputinit.c
index 0b9335b..a0eb80f 100644
--- a/hw/dmx/input/dmxinputinit.c
+++ b/hw/dmx/input/dmxinputinit.c
@@ -1079,13 +1079,6 @@ void dmxInputInit(DMXInputInfo *dmxInput)
     
     for (i = 0; i < dmxInput->numDevs; i++) {
         DMXLocalInputInfoPtr dmxLocal = dmxInput->devs[i];
-#ifndef XINPUT
-        if (!dmxLocal->isCore)
-            dmxLog(dmxFatal,
-                   "This server was not compiled to support the XInput"
-                   " extension, but %s is not a core device.\n",
-                   dmxLocal->name);
-#endif
         dmxLocal->pDevice = dmxAddDevice(dmxLocal);
         if (dmxLocal->isCore) {
             if (dmxLocal->type == DMX_LOCAL_MOUSE)
commit 52752911ea8470dd8805f5e6c3febb9e1e1cc4b3
Author: Peter Hutterer <peter at cs.unisa.edu.au>
Date:   Wed Jun 4 17:04:16 2008 +0930

    dmx: don't free event list after use.

diff --git a/hw/dmx/input/dmxevents.c b/hw/dmx/input/dmxevents.c
index 1d0e872..4b51ffd 100644
--- a/hw/dmx/input/dmxevents.c
+++ b/hw/dmx/input/dmxevents.c
@@ -237,7 +237,6 @@ static void enqueueMotion(DevicePtr pDev, int x, int y)
                                POINTER_ABSOLUTE, 0, 2, valuators);
     for (i = 0; i < nevents; i++)
        mieqEnqueue(p, (events + i)->event);
-    xfree(events);
     return;
 }
 
@@ -709,7 +708,6 @@ void dmxEnqueue(DevicePtr pDev, int type, int detail, KeySym keySym,
                                    valuators);
         for (i = 0; i < nevents; i++)
             mieqEnqueue(p, (events + i)->event);
-        xfree(events);
         return;
 
     case MotionNotify:
commit 5c5e58124581b845a6bfa7a2991a4e0ee7f7ebdb
Author: Peter Hutterer <peter at cs.unisa.edu.au>
Date:   Wed Jun 4 16:58:31 2008 +0930

    dmx: add an XFlush.
    
    Beats me why we need it, but without it we get segfaults lateron.

diff --git a/hw/dmx/dmxinit.c b/hw/dmx/dmxinit.c
index 6d466c4..760fccf 100644
--- a/hw/dmx/dmxinit.c
+++ b/hw/dmx/dmxinit.c
@@ -778,6 +778,8 @@ void InitOutput(ScreenInfo *pScreenInfo, int argc, char *argv[])
 
 		/* Hand out the glx configs to glx extension */
 		GlxSetVisualConfigs(nconfigs, configs, (void**)configprivs);
+
+                XFlush(dmxScreen->beDisplay);
 	    }
 	}
 #endif  /* GLXEXT */
commit 246c10441bbf62646b77993b55233d5ceb93a81f
Author: Peter Hutterer <peter at cs.unisa.edu.au>
Date:   Wed Jun 4 16:37:25 2008 +0930

    dmx: fix false memory allocation.
    
    beNumVisuals and the number of GLX Visuals can be significantly different.

diff --git a/hw/dmx/dmxinit.c b/hw/dmx/dmxinit.c
index 366bd14..6d466c4 100644
--- a/hw/dmx/dmxinit.c
+++ b/hw/dmx/dmxinit.c
@@ -746,8 +746,7 @@ void InitOutput(ScreenInfo *pScreenInfo, int argc, char *argv[])
 		nconfigs = dmxScreen->numGlxVisuals;
 	    }
 
-	    configprivs = xalloc(dmxScreen->beNumVisuals *
-				 sizeof(dmxGlxVisualPrivate*));
+	    configprivs = xalloc(nconfigs * sizeof(dmxGlxVisualPrivate*));
 
 	    if (configs != NULL && configprivs != NULL) {
 
commit 17cd26225749a1daf7460b44e52f43082399b265
Author: Peter Hutterer <peter at cs.unisa.edu.au>
Date:   Wed Jun 4 16:05:36 2008 +0930

    dmx: don't dereference a nullpointer.

diff --git a/hw/dmx/dmxcursor.c b/hw/dmx/dmxcursor.c
index 2a596a1..6218dc3 100644
--- a/hw/dmx/dmxcursor.c
+++ b/hw/dmx/dmxcursor.c
@@ -733,7 +733,7 @@ static void _dmxSetCursor(ScreenPtr pScreen, CursorPtr pCursor, int x, int y)
 
     if (pCursor) {
 	dmxCursorPrivPtr  pCursorPriv = DMX_GET_CURSOR_PRIV(pCursor, pScreen);
-	if (dmxScreen->curCursor != pCursorPriv->cursor) {
+	if (pCursorPriv && dmxScreen->curCursor != pCursorPriv->cursor) {
 	    if (dmxScreen->beDisplay)
 		XDefineCursor(dmxScreen->beDisplay, dmxScreen->scrnWin,
 			      pCursorPriv->cursor);
commit 75eb635e3543fcb731331d01f50e62b696967667
Author: Peter Hutterer <peter at cs.unisa.edu.au>
Date:   Tue Jun 3 22:25:33 2008 +0930

    dmx: add stubs for DeviceCursorInitialize, DeviceCursorCleanup

diff --git a/hw/dmx/dmxcursor.c b/hw/dmx/dmxcursor.c
index 3dcbc33..2a596a1 100644
--- a/hw/dmx/dmxcursor.c
+++ b/hw/dmx/dmxcursor.c
@@ -969,10 +969,21 @@ void dmxCheckCursor(void)
     DMXDBG2("   leave dmxCheckCursor %d %d\n", x, y);
 }
 
+static Bool dmxDeviceCursorInitialize(DeviceIntPtr pDev, ScreenPtr pScr)
+{
+    return TRUE;
+}
+
+static void dmxDeviceCursorCleanup(DeviceIntPtr pDev, ScreenPtr pScr)
+{
+}
+
 miPointerSpriteFuncRec dmxPointerSpriteFuncs =
 {
     dmxRealizeCursor,
     dmxUnrealizeCursor,
     dmxSetCursor,
     dmxMoveCursor,
+    dmxDeviceCursorInitialize,
+    dmxDeviceCursorCleanup
 };
commit 3ff2f3a00ef3c484d1d53569b6cbc1f25dc6bd35
Author: Peter Hutterer <peter at cs.unisa.edu.au>
Date:   Tue Jun 3 22:17:14 2008 +0930

    dmx: for now, don't acknowledge SDs.

diff --git a/hw/dmx/input/dmxinputinit.c b/hw/dmx/input/dmxinputinit.c
index 4713c1b..0b9335b 100644
--- a/hw/dmx/input/dmxinputinit.c
+++ b/hw/dmx/input/dmxinputinit.c
@@ -921,6 +921,7 @@ static void dmxInputScanForExtensions(DMXInputInfo *dmxInput, int doXI)
                     }
                 }
                 break;
+#if 0
             case IsXExtensionDevice:
             case IsXExtensionKeyboard:
             case IsXExtensionPointer:
@@ -942,6 +943,7 @@ static void dmxInputScanForExtensions(DMXInputInfo *dmxInput, int doXI)
                     }
                 }
                 break;
+#endif
             }
         }
         XFreeDeviceList(devices);
commit 5bcd9e8953dfb5f13e90baeebea1f6eac797644b
Author: Peter Hutterer <peter at cs.unisa.edu.au>
Date:   Tue Jun 3 22:01:43 2008 +0930

    dmx: learn about the existence of IsXExtensionPointer and IsXExtensionKeyboard

diff --git a/hw/dmx/input/dmxinputinit.c b/hw/dmx/input/dmxinputinit.c
index da1e731..4713c1b 100644
--- a/hw/dmx/input/dmxinputinit.c
+++ b/hw/dmx/input/dmxinputinit.c
@@ -883,9 +883,11 @@ static void dmxInputScanForExtensions(DMXInputInfo *dmxInput, int doXI)
         for (i = 0; i < num; i++) {
             const char *use = "Unknown";
             switch (devices[i].use) {
-            case IsXPointer:         use = "XPointer";         break;
-            case IsXKeyboard:        use = "XKeyboard";        break;
-            case IsXExtensionDevice: use = "XExtensionDevice"; break;
+            case IsXPointer:           use = "XPointer";         break;
+            case IsXKeyboard:          use = "XKeyboard";        break;
+            case IsXExtensionDevice:   use = "XExtensionDevice"; break;
+            case IsXExtensionPointer:  use = "XExtensionPointer"; break;
+            case IsXExtensionKeyboard: use = "XExtensionKeyboard"; break;
             }
             dmxLogInput(dmxInput, "  %2d %-10.10s %-16.16s\n",
                         devices[i].id,
@@ -920,6 +922,8 @@ static void dmxInputScanForExtensions(DMXInputInfo *dmxInput, int doXI)
                 }
                 break;
             case IsXExtensionDevice:
+            case IsXExtensionKeyboard:
+            case IsXExtensionPointer:
                 if (doXI) {
                     if (!dmxInput->numDevs) {
                         dmxLog(dmxWarning,
commit 8da8a0fec4b1b9d9208635dedb2f449dc99e0004
Author: Peter Hutterer <peter at cs.unisa.edu.au>
Date:   Tue Jun 3 21:59:33 2008 +0930

    dmx: claim we support XI 2.
    
    We don't really, yet, but at least we get the full device list this way.

diff --git a/hw/dmx/input/dmxinputinit.c b/hw/dmx/input/dmxinputinit.c
index 1adfb41..da1e731 100644
--- a/hw/dmx/input/dmxinputinit.c
+++ b/hw/dmx/input/dmxinputinit.c
@@ -865,7 +865,7 @@ static void dmxInputScanForExtensions(DMXInputInfo *dmxInput, int doXI)
     
     /* Print out information about the XInput Extension. */
     handler = XSetExtensionErrorHandler(dmxInputExtensionErrorHandler);
-    ext     = XGetExtensionVersion(display, INAME);
+    ext     = XQueryInputVersion(display, XI_2_Major, XI_2_Minor);
     XSetExtensionErrorHandler(handler);
     
     if (!ext || ext == (XExtensionVersion *)NoSuchExtension) {
commit 6f1d5147cb394b7c83c4c1447c78890fa2b40a45
Author: Peter Hutterer <peter at cs.unisa.edu.au>
Date:   Tue Jun 3 21:36:03 2008 +0930

    dmx: fix a segfault caused by GC devPrivates never being initalised.

diff --git a/hw/dmx/dmxgc.c b/hw/dmx/dmxgc.c
index ce1730c..eb21d3c 100644
--- a/hw/dmx/dmxgc.c
+++ b/hw/dmx/dmxgc.c
@@ -85,6 +85,8 @@ static GCOps dmxGCOps = {
 /** Initialize the GC on \a pScreen */
 Bool dmxInitGC(ScreenPtr pScreen)
 {
+    if (!dixRequestPrivate(dmxGCPrivateKey, sizeof(dmxGCPrivRec)))
+            return FALSE;
     return TRUE;
 }
 
commit d10ba4591a599a317093ffcbdd7cece11ab6de26
Author: Peter Hutterer <peter at cs.unisa.edu.au>
Date:   Tue Jun 3 21:28:26 2008 +0930

    dmx: some more build fixes.

diff --git a/hw/dmx/input/dmxinputinit.c b/hw/dmx/input/dmxinputinit.c
index 277e164..1adfb41 100644
--- a/hw/dmx/input/dmxinputinit.c
+++ b/hw/dmx/input/dmxinputinit.c
@@ -476,15 +476,11 @@ static int dmxDeviceOnOff(DeviceIntPtr pDevice, int what)
             break;
         }
         if (info.keyClass) {
-#if 00 /*BP*/
-            InitKeyClassDeviceStruct(pDevice, &info.keySyms, info.modMap);
-#else
             DevicePtr pDev = (DevicePtr) pDevice;
             InitKeyboardDeviceStruct(pDev,
                                      &info.keySyms,
                                      info.modMap,
                                      dmxBell, dmxKbdCtrl);
-#endif
         }
         if (info.buttonClass) {
             InitButtonClassDeviceStruct(pDevice, info.numButtons, info.map);
@@ -492,13 +488,7 @@ static int dmxDeviceOnOff(DeviceIntPtr pDevice, int what)
         if (info.valuatorClass) {
             if (info.numRelAxes && dmxLocal->sendsCore) {
                 InitValuatorClassDeviceStruct(pDevice, info.numRelAxes,
-#if 00 /*BP*/
-                                              miPointerGetMotionEvents,
-                                              miPointerGetMotionBufferSize(),
-#else
-                                              GetMotionHistory,
                                               GetMaximumEventsNum(),
-#endif
                                               Relative);
                 for (i = 0; i < info.numRelAxes; i++)
                     InitValuatorAxisStruct(pDevice, i, info.minval[0],
@@ -506,7 +496,6 @@ static int dmxDeviceOnOff(DeviceIntPtr pDevice, int what)
                                            info.minres[0], info.maxres[0]);
             } else if (info.numRelAxes) {
                 InitValuatorClassDeviceStruct(pDevice, info.numRelAxes,
-                                              dmxPointerGetMotionEvents,
                                               dmxPointerGetMotionBufferSize(),
                                               Relative);
                 for (i = 0; i < info.numRelAxes; i++)
@@ -515,7 +504,6 @@ static int dmxDeviceOnOff(DeviceIntPtr pDevice, int what)
                                            info.minres[0], info.maxres[0]);
             } else if (info.numAbsAxes) {
                 InitValuatorClassDeviceStruct(pDevice, info.numAbsAxes,
-                                              dmxPointerGetMotionEvents,
                                               dmxPointerGetMotionBufferSize(),
                                               Absolute);
                 for (i = 0; i < info.numAbsAxes; i++)
diff --git a/hw/dmx/input/dmxxinput.c b/hw/dmx/input/dmxxinput.c
index 692e647..97f4392 100644
--- a/hw/dmx/input/dmxxinput.c
+++ b/hw/dmx/input/dmxxinput.c
@@ -93,12 +93,9 @@ int ChangePointerDevice(DeviceIntPtr old_dev,
 
                                 /* Switch the motion history buffers */
     if (dmxLocalOld->savedMotionProc) {
-        old_dev->valuator->GetMotionProc   = dmxLocalOld->savedMotionProc;
         old_dev->valuator->numMotionEvents = dmxLocalOld->savedMotionEvents;
     }
-    dmxLocalNew->savedMotionProc       = new_dev->valuator->GetMotionProc;
     dmxLocalNew->savedMotionEvents     = new_dev->valuator->numMotionEvents;
-    new_dev->valuator->GetMotionProc   = GetMotionHistory;
     new_dev->valuator->numMotionEvents = GetMaximumEventsNum();
                                 /* Switch our notion of core pointer */
     dmxLocalOld->isCore         = 0;


More information about the xorg-commit mailing list