mi: mipointer.c cleanup, reducing code duplication, using MPHasCursor()
instead of IsMPDev()
This commit is contained in:
parent
a2340a7368
commit
023da4e804
|
@ -12,6 +12,14 @@ Files:
|
|||
mi/misprite.c
|
||||
mi/misprite.h
|
||||
|
||||
____________________________________________________________
|
||||
|
||||
mi: mipointer.c cleanup, reducing code duplication, using MPHasCursor()
|
||||
instead of IsMPDev()
|
||||
|
||||
Files:
|
||||
mi/mipointer.c
|
||||
|
||||
== 23.11.06 ==
|
||||
mi: closing memory leak, miPointer is freed in miPointerCloseScreen
|
||||
bugfix: uninitialized pPointer in miPointerGetPosition ifndef MPX
|
||||
|
|
117
mi/mipointer.c
117
mi/mipointer.c
|
@ -27,7 +27,6 @@ Except as contained in this notice, the name of The Open Group shall not be
|
|||
used in advertising or otherwise to promote the sale, use or other dealings
|
||||
in this Software without prior written authorization from The Open Group.
|
||||
*/
|
||||
#ifdef MPX
|
||||
/*
|
||||
* MPX additions:
|
||||
* Copyright © 2006 Peter Hutterer
|
||||
|
@ -35,7 +34,6 @@ in this Software without prior written authorization from The Open Group.
|
|||
* Author: Peter Hutterer <peter@cs.unisa.edu.au>
|
||||
*
|
||||
*/
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_DIX_CONFIG_H
|
||||
#include <dix-config.h>
|
||||
|
@ -111,6 +109,7 @@ miPointerInitialize (pScreen, spriteFuncs, screenFuncs, waitForUpdate)
|
|||
Bool waitForUpdate;
|
||||
{
|
||||
miPointerScreenPtr pScreenPriv;
|
||||
miPointerPtr pPointer;
|
||||
|
||||
if (miPointerGeneration != serverGeneration)
|
||||
{
|
||||
|
@ -150,26 +149,15 @@ miPointerInitialize (pScreen, spriteFuncs, screenFuncs, waitForUpdate)
|
|||
/*
|
||||
* set up the pointer object
|
||||
*/
|
||||
#if !defined MPX
|
||||
miPointer = (miPointerPtr)xalloc(sizeof(miPointerRec));
|
||||
if (!miPointer)
|
||||
{
|
||||
xfree((pointer)pScreenPriv);
|
||||
return FALSE;
|
||||
}
|
||||
miPointer->pScreen = NULL;
|
||||
miPointer->pSpriteScreen = NULL;
|
||||
miPointer->pCursor = NULL;
|
||||
miPointer->pSpriteCursor = NULL;
|
||||
miPointer->limits.x1 = 0;
|
||||
miPointer->limits.x2 = 32767;
|
||||
miPointer->limits.y1 = 0;
|
||||
miPointer->limits.y2 = 32767;
|
||||
miPointer->confined = FALSE;
|
||||
miPointer->x = 0;
|
||||
miPointer->y = 0;
|
||||
|
||||
#ifdef MPX
|
||||
xfree(miPointer);
|
||||
pPointer = miPointer;
|
||||
#else /* ifdef MPX */
|
||||
miPointer = &miMPPointers[1];
|
||||
{
|
||||
int mpPtrIdx = 0; /* loop counter */
|
||||
|
@ -178,17 +166,21 @@ miPointerInitialize (pScreen, spriteFuncs, screenFuncs, waitForUpdate)
|
|||
*/
|
||||
while(mpPtrIdx < MAX_DEVICES)
|
||||
{
|
||||
miMPPointers[mpPtrIdx].pScreen = NULL;
|
||||
miMPPointers[mpPtrIdx].pSpriteScreen = NULL;
|
||||
miMPPointers[mpPtrIdx].pCursor = NULL;
|
||||
miMPPointers[mpPtrIdx].pSpriteCursor = NULL;
|
||||
miMPPointers[mpPtrIdx].limits.x1 = 0;
|
||||
miMPPointers[mpPtrIdx].limits.x2 = 32767;
|
||||
miMPPointers[mpPtrIdx].limits.y1 = 0;
|
||||
miMPPointers[mpPtrIdx].limits.y2 = 32767;
|
||||
miMPPointers[mpPtrIdx].confined = FALSE;
|
||||
miMPPointers[mpPtrIdx].x = 0;
|
||||
miMPPointers[mpPtrIdx].y = 0;
|
||||
pPointer = &miMPPointers[mpPtrIdx];
|
||||
#endif
|
||||
|
||||
pPointer->pScreen = NULL;
|
||||
pPointer->pSpriteScreen = NULL;
|
||||
pPointer->pCursor = NULL;
|
||||
pPointer->pSpriteCursor = NULL;
|
||||
pPointer->limits.x1 = 0;
|
||||
pPointer->limits.x2 = 32767;
|
||||
pPointer->limits.y1 = 0;
|
||||
pPointer->limits.y2 = 32767;
|
||||
pPointer->confined = FALSE;
|
||||
pPointer->x = 0;
|
||||
pPointer->y = 0;
|
||||
#ifdef MPX
|
||||
mpPtrIdx++;
|
||||
}
|
||||
}
|
||||
|
@ -202,23 +194,26 @@ miPointerCloseScreen (index, pScreen)
|
|||
int index;
|
||||
ScreenPtr pScreen;
|
||||
{
|
||||
int mpPointerIdx = 0;
|
||||
SetupScreen(pScreen);
|
||||
miPointerPtr pPointer = miPointer;
|
||||
|
||||
#ifdef MPX
|
||||
int mpPointerIdx = 0;
|
||||
|
||||
while(mpPointerIdx < MAX_DEVICES)
|
||||
{
|
||||
if (pScreen == miMPPointers[mpPointerIdx].pScreen)
|
||||
miMPPointers[mpPointerIdx].pScreen = 0;
|
||||
if (pScreen == miMPPointers[mpPointerIdx].pSpriteScreen)
|
||||
miMPPointers[mpPointerIdx].pSpriteScreen = 0;
|
||||
pPointer = &miMPPointers[mpPointerIdx];
|
||||
#endif
|
||||
if (pScreen == pPointer->pScreen)
|
||||
pPointer->pScreen = 0;
|
||||
if (pScreen == pPointer->pSpriteScreen)
|
||||
pPointer->pSpriteScreen = 0;
|
||||
#ifdef MPX
|
||||
mpPointerIdx++;
|
||||
}
|
||||
#else
|
||||
if (pScreen == miPointer->pScreen)
|
||||
miPointer->pScreen = 0;
|
||||
if (pScreen == miPointer->pSpriteScreen)
|
||||
miPointer->pSpriteScreen = 0;
|
||||
#endif
|
||||
|
||||
#if !defined MPX
|
||||
xfree((pointer)miPointer);
|
||||
#endif
|
||||
pScreen->CloseScreen = pScreenPriv->CloseScreen;
|
||||
|
@ -256,19 +251,15 @@ miPointerDisplayCursor (pDev, pScreen, pCursor)
|
|||
ScreenPtr pScreen;
|
||||
CursorPtr pCursor;
|
||||
{
|
||||
miPointerPtr pPointer = miPointer;
|
||||
#ifdef MPX
|
||||
/* use core pointer for non MPX devices */
|
||||
if (!IsMPDev(pDev))
|
||||
pDev = inputInfo.pointer;
|
||||
|
||||
miMPPointers[pDev->id].pCursor = pCursor;
|
||||
miMPPointers[pDev->id].pScreen = pScreen;
|
||||
miPointerUpdateSprite(pDev);
|
||||
#else
|
||||
miPointer->pCursor = pCursor;
|
||||
miPointer->pScreen = pScreen;
|
||||
miPointerUpdateSprite(inputInfo.pointer);
|
||||
if (MPHasCursor(pDev))
|
||||
pPointer = &miMPPointers[pDev->id];
|
||||
#endif
|
||||
pPointer->pCursor = pCursor;
|
||||
pPointer->pScreen = pScreen;
|
||||
miPointerUpdateSprite(pDev);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
@ -280,7 +271,7 @@ miPointerConstrainCursor (pDev, pScreen, pBox)
|
|||
{
|
||||
miPointerPtr pPointer = miPointer;
|
||||
#ifdef MPX
|
||||
if (IsMPDev(pDev))
|
||||
if (MPHasCursor(pDev))
|
||||
pPointer = &miMPPointers[pDev->id];
|
||||
#endif
|
||||
pPointer->limits = *pBox;
|
||||
|
@ -340,7 +331,7 @@ miPointerWarpCursor (pDev, pScreen, x, y)
|
|||
SetupScreen (pScreen);
|
||||
|
||||
#ifdef MPX
|
||||
if (IsMPDev(pDev))
|
||||
if (MPHasCursor(pDev))
|
||||
pPointer = &miMPPointers[pDev->id];
|
||||
#endif
|
||||
|
||||
|
@ -394,16 +385,16 @@ miPointerUpdateSprite (DeviceIntPtr pDev)
|
|||
int x, y, devx, devy;
|
||||
miPointerPtr pPointer = miPointer;
|
||||
|
||||
#ifdef MPX
|
||||
if (!pDev ||
|
||||
!(pDev->coreEvents || pDev == inputInfo.pointer || pDev->isMPDev))
|
||||
#else
|
||||
if (!pDev || !(pDev->coreEvents || pDev == inputInfo.pointer))
|
||||
!(pDev->coreEvents || pDev == inputInfo.pointer
|
||||
#ifdef MPX
|
||||
|| pDev->isMPDev
|
||||
#endif
|
||||
))
|
||||
return;
|
||||
|
||||
#ifdef MPX
|
||||
if (IsMPDev(pDev))
|
||||
if (MPHasCursor(pDev))
|
||||
pPointer = &miMPPointers[pDev->id];
|
||||
#endif
|
||||
|
||||
|
@ -497,7 +488,7 @@ miPointerSetScreen(DeviceIntPtr pDev, int screen_no, int x, int y)
|
|||
(*pScreenPriv->screenFuncs->NewEventScreen) (pScreen, FALSE);
|
||||
NewCurrentScreen (pDev, pScreen, x, y);
|
||||
#ifdef MPX
|
||||
if (IsMPDev(pDev))
|
||||
if (MPHasCursor(pDev))
|
||||
pPointer = &miMPPointers[pDev->id];
|
||||
#endif
|
||||
pPointer->limits.x2 = pScreen->width;
|
||||
|
@ -515,7 +506,7 @@ miPointerGetScreen(DeviceIntPtr pDev)
|
|||
{
|
||||
miPointerPtr pPointer;
|
||||
#ifdef MPX
|
||||
if (IsMPDev(pDev))
|
||||
if (MPHasCursor(pDev))
|
||||
pPointer = &miMPPointers[pDev->id];
|
||||
#endif
|
||||
return pPointer->pScreen;
|
||||
|
@ -539,7 +530,7 @@ miPointerSetPosition(DeviceIntPtr pDev, int *x, int *y, unsigned long time)
|
|||
|
||||
miPointerPtr pPointer = miPointer;
|
||||
#ifdef MPX
|
||||
if (IsMPDev(pDev))
|
||||
if (MPHasCursor(pDev))
|
||||
pPointer = &(miMPPointers[pDev->id]);
|
||||
#endif
|
||||
|
||||
|
@ -547,12 +538,12 @@ miPointerSetPosition(DeviceIntPtr pDev, int *x, int *y, unsigned long time)
|
|||
if (!pScreen)
|
||||
return; /* called before ready */
|
||||
|
||||
#ifdef MPX
|
||||
if (!pDev ||
|
||||
!(pDev->coreEvents || pDev == inputInfo.pointer || pDev->isMPDev))
|
||||
#else
|
||||
if (!pDev || !(pDev->coreEvents || pDev == inputInfo.pointer))
|
||||
!(pDev->coreEvents || pDev == inputInfo.pointer
|
||||
#ifdef MPX
|
||||
|| pDev->isMPDev
|
||||
#endif
|
||||
))
|
||||
return;
|
||||
|
||||
if (*x < 0 || *x >= pScreen->width || *y < 0 || *y >= pScreen->height)
|
||||
|
@ -601,7 +592,7 @@ miPointerGetPosition(DeviceIntPtr pDev, int *x, int *y)
|
|||
{
|
||||
miPointerPtr pPointer = miPointer;
|
||||
#ifdef MPX
|
||||
if (IsMPDev(pDev))
|
||||
if (MPHasCursor(pDev))
|
||||
pPointer = &miMPPointers[pDev->id];
|
||||
#endif
|
||||
*x = pPointer->x;
|
||||
|
@ -623,7 +614,7 @@ miPointerMoved (DeviceIntPtr pDev, ScreenPtr pScreen, int x, int y,
|
|||
SetupScreen(pScreen);
|
||||
|
||||
#ifdef MPX
|
||||
if (IsMPDev(pDev))
|
||||
if (MPHasCursor(pDev))
|
||||
pPointer = &miMPPointers[pDev->id];
|
||||
#endif
|
||||
|
||||
|
|
Loading…
Reference in New Issue
Block a user