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