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