mi: don't call from miPointerMoved into the spriteFuncs for anything but VCP.

Calling ->MoveCursor for anything but the HW-rendered VCP causes the
SW-rendered cursor routines to be started, including mallocs, etc. Since
miPointerMoved is called during SIGIO, this is a bad idea.
This commit is contained in:
Peter Hutterer 2008-05-16 20:56:04 +09:30
parent f611719edc
commit dfb7de6571

View File

@ -530,7 +530,11 @@ miPointerMoved (DeviceIntPtr pDev, ScreenPtr pScreen, int x, int y,
pPointer = MIPOINTER(pDev);
if (pDev && pDev->coreEvents
/* Hack: We mustn't call into ->MoveCursor for anything but the
* VCP, as this may cause a non-HW rendered cursor to be rendered during
* SIGIO. This again leads to allocs during SIGIO which leads to SIGABRT.
*/
if ((pDev == inputInfo.pointer || (!pDev->isMaster && pDev->u.master == inputInfo.pointer))
&& !pScreenPriv->waitForUpdate && pScreen == pPointer->pSpriteScreen)
{
pPointer->devx = x;