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