mi: added MPX to miSpriteReportDamage
added id field to miCursorInfoPtr, required to pass through to miDC
        core pointer uses mpCursors array as well.
        added miDCBufferRec for future use with MPX
TAG: MPX_BEFORE_MIDC_API_BREAK
			
			
This commit is contained in:
		
							parent
							
								
									b1bbdf464d
								
							
						
					
					
						commit
						3bad452d12
					
				
							
								
								
									
										13
									
								
								Changelog
								
								
								
								
							
							
						
						
									
										13
									
								
								Changelog
								
								
								
								
							|  | @ -1,4 +1,17 @@ | |||
| MPX Changelog file | ||||
| == 21.11.06 == | ||||
| mi:     added MPX to miSpriteReportDamage | ||||
|         added id field to miCursorInfoPtr, required to pass through to miDC | ||||
|         core pointer uses mpCursors array as well. | ||||
|         added miDCBufferRec for future use with MPX | ||||
| 
 | ||||
| Files: | ||||
|         mi/midispcur.c | ||||
|         mi/misprite.c | ||||
|         mi/mispritest.h | ||||
| 
 | ||||
| TAG: MPX_BEFORE_MIDC_API_BREAK | ||||
| 
 | ||||
| == 20.11.06 == | ||||
| 
 | ||||
| mi:     moved core pointer information from miSpriteScreenRec into a | ||||
|  |  | |||
							
								
								
									
										173
									
								
								mi/midispcur.c
								
								
								
								
							
							
						
						
									
										173
									
								
								mi/midispcur.c
								
								
								
								
							|  | @ -52,6 +52,10 @@ in this Software without prior written authorization from The Open Group. | |||
| # include   "picturestr.h" | ||||
| #endif | ||||
| 
 | ||||
| #ifdef MPX | ||||
| # include "inputstr.h" | ||||
| #endif | ||||
| 
 | ||||
| /* per-screen private data */ | ||||
| 
 | ||||
| static int	miDCScreenIndex; | ||||
|  | @ -64,12 +68,19 @@ typedef struct { | |||
|     GCPtr	    pSaveGC, pRestoreGC; | ||||
|     GCPtr	    pMoveGC; | ||||
|     GCPtr	    pPixSourceGC, pPixMaskGC; | ||||
|     CloseScreenProcPtr CloseScreen; | ||||
|     PixmapPtr	    pSave, pTemp; | ||||
| #ifdef ARGB_CURSOR | ||||
|     PicturePtr	    pRootPicture; | ||||
|     PicturePtr	    pTempPicture; | ||||
| #endif | ||||
| } miDCBufferRec, *miDCBufferPtr; | ||||
| 
 | ||||
| typedef struct { | ||||
|     miDCBufferPtr pCoreBuffer; /* for core pointer */ | ||||
| #ifdef MPX | ||||
|     miDCBufferPtr pMPBuffers;   /* for MPX pointers */ | ||||
| #endif | ||||
|     CloseScreenProcPtr CloseScreen; | ||||
| } miDCScreenRec, *miDCScreenPtr; | ||||
| 
 | ||||
| /* per-cursor per-screen private data */ | ||||
|  | @ -131,20 +142,54 @@ miDCInitialize (pScreen, screenFuncs) | |||
|     /*
 | ||||
|      * initialize the entire private structure to zeros | ||||
|      */ | ||||
|     pScreenPriv->pCoreBuffer = (miDCBufferPtr)xalloc(sizeof(miDCBufferRec)); | ||||
| 
 | ||||
|     pScreenPriv->pSourceGC = | ||||
| 	pScreenPriv->pMaskGC = | ||||
| 	pScreenPriv->pSaveGC = | ||||
|  	pScreenPriv->pRestoreGC = | ||||
|  	pScreenPriv->pMoveGC = | ||||
|  	pScreenPriv->pPixSourceGC = | ||||
| 	pScreenPriv->pPixMaskGC = NULL; | ||||
|     pScreenPriv->pCoreBuffer->pSourceGC = | ||||
| 	pScreenPriv->pCoreBuffer->pMaskGC = | ||||
| 	pScreenPriv->pCoreBuffer->pSaveGC = | ||||
|  	pScreenPriv->pCoreBuffer->pRestoreGC = | ||||
|  	pScreenPriv->pCoreBuffer->pMoveGC = | ||||
|  	pScreenPriv->pCoreBuffer->pPixSourceGC = | ||||
| 	pScreenPriv->pCoreBuffer->pPixMaskGC = NULL; | ||||
| #ifdef ARGB_CURSOR | ||||
|     pScreenPriv->pRootPicture = NULL; | ||||
|     pScreenPriv->pTempPicture = NULL; | ||||
|     pScreenPriv->pCoreBuffer->pRootPicture = NULL; | ||||
|     pScreenPriv->pCoreBuffer->pTempPicture = NULL; | ||||
| #endif | ||||
|      | ||||
|     pScreenPriv->pSave = pScreenPriv->pTemp = NULL; | ||||
|     pScreenPriv->pCoreBuffer->pSave = pScreenPriv->pCoreBuffer->pTemp = NULL; | ||||
| 
 | ||||
| #ifdef MPX | ||||
|     { | ||||
|         int mpBufferIdx = 0; | ||||
| 
 | ||||
|         pScreenPriv->pMPBuffers = (miDCBufferPtr)xalloc(MAX_DEVICES * | ||||
|                                 sizeof(miDCBufferRec)); | ||||
| 
 | ||||
|         /* virtual core pointer ID is 1, we might as well use the array */ | ||||
|         xfree(pScreenPriv->pCoreBuffer); | ||||
|         pScreenPriv->pCoreBuffer = &pScreenPriv->pMPBuffers[1]; | ||||
| 
 | ||||
|         while (mpBufferIdx < MAX_DEVICES) | ||||
|         { | ||||
|             miDCBufferPtr pBuffer = &pScreenPriv->pMPBuffers[mpBufferIdx]; | ||||
|             pBuffer->pSourceGC = | ||||
|                 pBuffer->pMaskGC = | ||||
|                 pBuffer->pSaveGC = | ||||
|                 pBuffer->pRestoreGC = | ||||
|                 pBuffer->pMoveGC = | ||||
|                 pBuffer->pPixSourceGC = | ||||
|                 pBuffer->pPixMaskGC = NULL; | ||||
| #ifdef ARGB_CURSOR | ||||
|             pBuffer->pRootPicture = NULL; | ||||
|             pBuffer->pTempPicture = NULL; | ||||
| #endif | ||||
| 
 | ||||
|             pBuffer->pSave = pBuffer->pTemp = NULL; | ||||
| 
 | ||||
|             mpBufferIdx++; | ||||
|         } | ||||
|     } | ||||
| #endif | ||||
| 
 | ||||
|     pScreenPriv->CloseScreen = pScreen->CloseScreen; | ||||
|     pScreen->CloseScreen = miDCCloseScreen; | ||||
|  | @ -172,20 +217,20 @@ miDCCloseScreen (index, pScreen) | |||
| 
 | ||||
|     pScreenPriv = (miDCScreenPtr) pScreen->devPrivates[miDCScreenIndex].ptr; | ||||
|     pScreen->CloseScreen = pScreenPriv->CloseScreen; | ||||
|     tossGC (pScreenPriv->pSourceGC); | ||||
|     tossGC (pScreenPriv->pMaskGC); | ||||
|     tossGC (pScreenPriv->pSaveGC); | ||||
|     tossGC (pScreenPriv->pRestoreGC); | ||||
|     tossGC (pScreenPriv->pMoveGC); | ||||
|     tossGC (pScreenPriv->pPixSourceGC); | ||||
|     tossGC (pScreenPriv->pPixMaskGC); | ||||
|     tossPix (pScreenPriv->pSave); | ||||
|     tossPix (pScreenPriv->pTemp); | ||||
|     tossGC (pScreenPriv->pCoreBuffer->pSourceGC); | ||||
|     tossGC (pScreenPriv->pCoreBuffer->pMaskGC); | ||||
|     tossGC (pScreenPriv->pCoreBuffer->pSaveGC); | ||||
|     tossGC (pScreenPriv->pCoreBuffer->pRestoreGC); | ||||
|     tossGC (pScreenPriv->pCoreBuffer->pMoveGC); | ||||
|     tossGC (pScreenPriv->pCoreBuffer->pPixSourceGC); | ||||
|     tossGC (pScreenPriv->pCoreBuffer->pPixMaskGC); | ||||
|     tossPix (pScreenPriv->pCoreBuffer->pSave); | ||||
|     tossPix (pScreenPriv->pCoreBuffer->pTemp); | ||||
| #ifdef ARGB_CURSOR | ||||
| #if 0				/* This has been free()d before */
 | ||||
|     tossPict (pScreenPriv->pRootPicture); | ||||
| #endif  | ||||
|     tossPict (pScreenPriv->pTempPicture); | ||||
|     tossPict (pScreenPriv->pCoreBuffer->pTempPicture); | ||||
| #endif | ||||
|     xfree ((pointer) pScreenPriv); | ||||
|     return (*pScreen->CloseScreen) (index, pScreen); | ||||
|  | @ -481,12 +526,12 @@ miDCPutUpCursor (pScreen, pCursor, x, y, source, mask) | |||
| #ifdef ARGB_CURSOR | ||||
|     if (pPriv->pPicture) | ||||
|     { | ||||
| 	if (!EnsurePicture(pScreenPriv->pRootPicture, &pWin->drawable, pWin)) | ||||
| 	if (!EnsurePicture(pScreenPriv->pCoreBuffer->pRootPicture, &pWin->drawable, pWin)) | ||||
| 	    return FALSE; | ||||
| 	CompositePicture (PictOpOver, | ||||
| 			  pPriv->pPicture, | ||||
| 			  NULL, | ||||
| 			  pScreenPriv->pRootPicture, | ||||
| 			  pScreenPriv->pCoreBuffer->pRootPicture, | ||||
| 			  0, 0, 0, 0,  | ||||
| 			  x, y,  | ||||
| 			  pCursor->bits->width, | ||||
|  | @ -495,16 +540,16 @@ miDCPutUpCursor (pScreen, pCursor, x, y, source, mask) | |||
|     else | ||||
| #endif | ||||
|     { | ||||
| 	if (!EnsureGC(pScreenPriv->pSourceGC, pWin)) | ||||
| 	if (!EnsureGC(pScreenPriv->pCoreBuffer->pSourceGC, pWin)) | ||||
| 	    return FALSE; | ||||
| 	if (!EnsureGC(pScreenPriv->pMaskGC, pWin)) | ||||
| 	if (!EnsureGC(pScreenPriv->pCoreBuffer->pMaskGC, pWin)) | ||||
| 	{ | ||||
| 	    FreeGC (pScreenPriv->pSourceGC, (GContext) 0); | ||||
| 	    pScreenPriv->pSourceGC = 0; | ||||
| 	    FreeGC (pScreenPriv->pCoreBuffer->pSourceGC, (GContext) 0); | ||||
| 	    pScreenPriv->pCoreBuffer->pSourceGC = 0; | ||||
| 	    return FALSE; | ||||
| 	} | ||||
| 	miDCPutBits ((DrawablePtr)pWin, pPriv, | ||||
| 		     pScreenPriv->pSourceGC, pScreenPriv->pMaskGC, | ||||
| 		     pScreenPriv->pCoreBuffer->pSourceGC, pScreenPriv->pCoreBuffer->pMaskGC, | ||||
| 		     x, y, pCursor->bits->width, pCursor->bits->height, | ||||
| 		     source, mask); | ||||
|     } | ||||
|  | @ -522,20 +567,20 @@ miDCSaveUnderCursor (pScreen, x, y, w, h) | |||
|     GCPtr	    pGC; | ||||
| 
 | ||||
|     pScreenPriv = (miDCScreenPtr) pScreen->devPrivates[miDCScreenIndex].ptr; | ||||
|     pSave = pScreenPriv->pSave; | ||||
|     pSave = pScreenPriv->pCoreBuffer->pSave; | ||||
|     pWin = WindowTable[pScreen->myNum]; | ||||
|     if (!pSave || pSave->drawable.width < w || pSave->drawable.height < h) | ||||
|     { | ||||
| 	if (pSave) | ||||
| 	    (*pScreen->DestroyPixmap) (pSave); | ||||
| 	pScreenPriv->pSave = pSave = | ||||
| 	pScreenPriv->pCoreBuffer->pSave = pSave = | ||||
| 		(*pScreen->CreatePixmap) (pScreen, w, h, pScreen->rootDepth); | ||||
| 	if (!pSave) | ||||
| 	    return FALSE; | ||||
|     } | ||||
|     if (!EnsureGC(pScreenPriv->pSaveGC, pWin)) | ||||
|     if (!EnsureGC(pScreenPriv->pCoreBuffer->pSaveGC, pWin)) | ||||
| 	return FALSE; | ||||
|     pGC = pScreenPriv->pSaveGC; | ||||
|     pGC = pScreenPriv->pCoreBuffer->pSaveGC; | ||||
|     if (pSave->drawable.serialNumber != pGC->serialNumber) | ||||
| 	ValidateGC ((DrawablePtr) pSave, pGC); | ||||
|     (*pGC->ops->CopyArea) ((DrawablePtr) pWin, (DrawablePtr) pSave, pGC, | ||||
|  | @ -554,13 +599,13 @@ miDCRestoreUnderCursor (pScreen, x, y, w, h) | |||
|     GCPtr	    pGC; | ||||
| 
 | ||||
|     pScreenPriv = (miDCScreenPtr) pScreen->devPrivates[miDCScreenIndex].ptr; | ||||
|     pSave = pScreenPriv->pSave; | ||||
|     pSave = pScreenPriv->pCoreBuffer->pSave; | ||||
|     pWin = WindowTable[pScreen->myNum]; | ||||
|     if (!pSave) | ||||
| 	return FALSE; | ||||
|     if (!EnsureGC(pScreenPriv->pRestoreGC, pWin)) | ||||
|     if (!EnsureGC(pScreenPriv->pCoreBuffer->pRestoreGC, pWin)) | ||||
| 	return FALSE; | ||||
|     pGC = pScreenPriv->pRestoreGC; | ||||
|     pGC = pScreenPriv->pCoreBuffer->pRestoreGC; | ||||
|     if (pWin->drawable.serialNumber != pGC->serialNumber) | ||||
| 	ValidateGC ((DrawablePtr) pWin, pGC); | ||||
|     (*pGC->ops->CopyArea) ((DrawablePtr) pSave, (DrawablePtr) pWin, pGC, | ||||
|  | @ -580,16 +625,16 @@ miDCChangeSave (pScreen, x, y, w, h, dx, dy) | |||
|     int		    sourcex, sourcey, destx, desty, copyw, copyh; | ||||
| 
 | ||||
|     pScreenPriv = (miDCScreenPtr) pScreen->devPrivates[miDCScreenIndex].ptr; | ||||
|     pSave = pScreenPriv->pSave; | ||||
|     pSave = pScreenPriv->pCoreBuffer->pSave; | ||||
|     pWin = WindowTable[pScreen->myNum]; | ||||
|     /*
 | ||||
|      * restore the bits which are about to get trashed | ||||
|      */ | ||||
|     if (!pSave) | ||||
| 	return FALSE; | ||||
|     if (!EnsureGC(pScreenPriv->pRestoreGC, pWin)) | ||||
|     if (!EnsureGC(pScreenPriv->pCoreBuffer->pRestoreGC, pWin)) | ||||
| 	return FALSE; | ||||
|     pGC = pScreenPriv->pRestoreGC; | ||||
|     pGC = pScreenPriv->pCoreBuffer->pRestoreGC; | ||||
|     if (pWin->drawable.serialNumber != pGC->serialNumber) | ||||
| 	ValidateGC ((DrawablePtr) pWin, pGC); | ||||
|     /*
 | ||||
|  | @ -627,9 +672,9 @@ miDCChangeSave (pScreen, x, y, w, h, dx, dy) | |||
| 	(*pGC->ops->CopyArea) ((DrawablePtr) pSave, (DrawablePtr) pWin, pGC, | ||||
| 			       0, sourcey, -dx, copyh, x + dx, desty); | ||||
|     } | ||||
|     if (!EnsureGC(pScreenPriv->pSaveGC, pWin)) | ||||
|     if (!EnsureGC(pScreenPriv->pCoreBuffer->pSaveGC, pWin)) | ||||
| 	return FALSE; | ||||
|     pGC = pScreenPriv->pSaveGC; | ||||
|     pGC = pScreenPriv->pCoreBuffer->pSaveGC; | ||||
|     if (pSave->drawable.serialNumber != pGC->serialNumber) | ||||
| 	ValidateGC ((DrawablePtr) pSave, pGC); | ||||
|     /*
 | ||||
|  | @ -724,39 +769,39 @@ miDCMoveCursor (pScreen, pCursor, x, y, w, h, dx, dy, source, mask) | |||
|     } | ||||
|     pScreenPriv = (miDCScreenPtr) pScreen->devPrivates[miDCScreenIndex].ptr; | ||||
|     pWin = WindowTable[pScreen->myNum]; | ||||
|     pTemp = pScreenPriv->pTemp; | ||||
|     pTemp = pScreenPriv->pCoreBuffer->pTemp; | ||||
|     if (!pTemp || | ||||
| 	pTemp->drawable.width != pScreenPriv->pSave->drawable.width || | ||||
| 	pTemp->drawable.height != pScreenPriv->pSave->drawable.height) | ||||
| 	pTemp->drawable.width != pScreenPriv->pCoreBuffer->pSave->drawable.width || | ||||
| 	pTemp->drawable.height != pScreenPriv->pCoreBuffer->pSave->drawable.height) | ||||
|     { | ||||
| 	if (pTemp) | ||||
| 	    (*pScreen->DestroyPixmap) (pTemp); | ||||
| #ifdef ARGB_CURSOR | ||||
| 	if (pScreenPriv->pTempPicture) | ||||
| 	if (pScreenPriv->pCoreBuffer->pTempPicture) | ||||
| 	{ | ||||
| 	    FreePicture (pScreenPriv->pTempPicture, 0); | ||||
| 	    pScreenPriv->pTempPicture = 0; | ||||
| 	    FreePicture (pScreenPriv->pCoreBuffer->pTempPicture, 0); | ||||
| 	    pScreenPriv->pCoreBuffer->pTempPicture = 0; | ||||
| 	} | ||||
| #endif | ||||
| 	pScreenPriv->pTemp = pTemp = (*pScreen->CreatePixmap) | ||||
| 	    (pScreen, w, h, pScreenPriv->pSave->drawable.depth); | ||||
| 	pScreenPriv->pCoreBuffer->pTemp = pTemp = (*pScreen->CreatePixmap) | ||||
| 	    (pScreen, w, h, pScreenPriv->pCoreBuffer->pSave->drawable.depth); | ||||
| 	if (!pTemp) | ||||
| 	    return FALSE; | ||||
|     } | ||||
|     if (!pScreenPriv->pMoveGC) | ||||
|     if (!pScreenPriv->pCoreBuffer->pMoveGC) | ||||
|     { | ||||
| 	pScreenPriv->pMoveGC = CreateGC ((DrawablePtr)pTemp, | ||||
| 	pScreenPriv->pCoreBuffer->pMoveGC = CreateGC ((DrawablePtr)pTemp, | ||||
| 	    GCGraphicsExposures, &gcval, &status); | ||||
| 	if (!pScreenPriv->pMoveGC) | ||||
| 	if (!pScreenPriv->pCoreBuffer->pMoveGC) | ||||
| 	    return FALSE; | ||||
|     } | ||||
|     /*
 | ||||
|      * copy the saved area to a temporary pixmap | ||||
|      */ | ||||
|     pGC = pScreenPriv->pMoveGC; | ||||
|     pGC = pScreenPriv->pCoreBuffer->pMoveGC; | ||||
|     if (pGC->serialNumber != pTemp->drawable.serialNumber) | ||||
| 	ValidateGC ((DrawablePtr) pTemp, pGC); | ||||
|     (*pGC->ops->CopyArea)((DrawablePtr)pScreenPriv->pSave, | ||||
|     (*pGC->ops->CopyArea)((DrawablePtr)pScreenPriv->pCoreBuffer->pSave, | ||||
| 			  (DrawablePtr)pTemp, pGC, 0, 0, w, h, 0, 0); | ||||
|      | ||||
|     /*
 | ||||
|  | @ -765,12 +810,12 @@ miDCMoveCursor (pScreen, pCursor, x, y, w, h, dx, dy, source, mask) | |||
| #ifdef ARGB_CURSOR | ||||
|     if (pPriv->pPicture) | ||||
|     { | ||||
| 	if (!EnsurePicture(pScreenPriv->pTempPicture, &pTemp->drawable, pWin)) | ||||
| 	if (!EnsurePicture(pScreenPriv->pCoreBuffer->pTempPicture, &pTemp->drawable, pWin)) | ||||
| 	    return FALSE; | ||||
| 	CompositePicture (PictOpOver, | ||||
| 			  pPriv->pPicture, | ||||
| 			  NULL, | ||||
| 			  pScreenPriv->pTempPicture, | ||||
| 			  pScreenPriv->pCoreBuffer->pTempPicture, | ||||
| 			  0, 0, 0, 0,  | ||||
| 			  dx, dy,  | ||||
| 			  pCursor->bits->width, | ||||
|  | @ -779,22 +824,22 @@ miDCMoveCursor (pScreen, pCursor, x, y, w, h, dx, dy, source, mask) | |||
|     else | ||||
| #endif | ||||
|     { | ||||
| 	if (!pScreenPriv->pPixSourceGC) | ||||
| 	if (!pScreenPriv->pCoreBuffer->pPixSourceGC) | ||||
| 	{ | ||||
| 	    pScreenPriv->pPixSourceGC = CreateGC ((DrawablePtr)pTemp, | ||||
| 	    pScreenPriv->pCoreBuffer->pPixSourceGC = CreateGC ((DrawablePtr)pTemp, | ||||
| 		GCGraphicsExposures, &gcval, &status); | ||||
| 	    if (!pScreenPriv->pPixSourceGC) | ||||
| 	    if (!pScreenPriv->pCoreBuffer->pPixSourceGC) | ||||
| 		return FALSE; | ||||
| 	} | ||||
| 	if (!pScreenPriv->pPixMaskGC) | ||||
| 	if (!pScreenPriv->pCoreBuffer->pPixMaskGC) | ||||
| 	{ | ||||
| 	    pScreenPriv->pPixMaskGC = CreateGC ((DrawablePtr)pTemp, | ||||
| 	    pScreenPriv->pCoreBuffer->pPixMaskGC = CreateGC ((DrawablePtr)pTemp, | ||||
| 		GCGraphicsExposures, &gcval, &status); | ||||
| 	    if (!pScreenPriv->pPixMaskGC) | ||||
| 	    if (!pScreenPriv->pCoreBuffer->pPixMaskGC) | ||||
| 		return FALSE; | ||||
| 	} | ||||
| 	miDCPutBits ((DrawablePtr)pTemp, pPriv, | ||||
| 		     pScreenPriv->pPixSourceGC, pScreenPriv->pPixMaskGC, | ||||
| 		     pScreenPriv->pCoreBuffer->pPixSourceGC, pScreenPriv->pCoreBuffer->pPixMaskGC, | ||||
| 		     dx, dy, pCursor->bits->width, pCursor->bits->height, | ||||
| 		     source, mask); | ||||
|     } | ||||
|  | @ -803,9 +848,9 @@ miDCMoveCursor (pScreen, pCursor, x, y, w, h, dx, dy, source, mask) | |||
|      * copy the temporary pixmap onto the screen | ||||
|      */ | ||||
| 
 | ||||
|     if (!EnsureGC(pScreenPriv->pRestoreGC, pWin)) | ||||
|     if (!EnsureGC(pScreenPriv->pCoreBuffer->pRestoreGC, pWin)) | ||||
| 	return FALSE; | ||||
|     pGC = pScreenPriv->pRestoreGC; | ||||
|     pGC = pScreenPriv->pCoreBuffer->pRestoreGC; | ||||
|     if (pWin->drawable.serialNumber != pGC->serialNumber) | ||||
| 	ValidateGC ((DrawablePtr) pWin, pGC); | ||||
| 
 | ||||
|  |  | |||
|  | @ -158,6 +158,24 @@ miSpriteReportDamage (DamagePtr pDamage, RegionPtr pRegion, void *closure) | |||
| 	SPRITE_DEBUG(("Damage remove\n")); | ||||
| 	miSpriteRemoveCursor (pScreenPriv->cp, pScreen); | ||||
|     } | ||||
| 
 | ||||
| #ifdef MPX | ||||
|     { | ||||
|         int mpCursorIdx = 0; | ||||
|         while (mpCursorIdx < MAX_DEVICES) | ||||
|         { | ||||
|             miCursorInfoPtr pMPCursor = &pScreenPriv->mpCursors[mpCursorIdx]; | ||||
| 
 | ||||
|             if (pMPCursor->isUp &&  | ||||
|                     RECT_IN_REGION (pScreen, pRegion, &pMPCursor->saved) != rgnOUT) | ||||
|             { | ||||
|                 SPRITE_DEBUG(("Damage remove MPX\n")); | ||||
|                 miSpriteRemoveCursor(pMPCursor, pScreen); | ||||
|             } | ||||
|             mpCursorIdx++; | ||||
|         } | ||||
|     } | ||||
| #endif | ||||
| } | ||||
| 
 | ||||
| /*
 | ||||
|  | @ -266,6 +284,7 @@ miSpriteInitialize (pScreen, cursorFuncs, screenFuncs) | |||
|     { | ||||
|         miCursorInfoPtr cursor = &(pScreenPriv->mpCursors[mpCursorIdx]); | ||||
| 
 | ||||
|         cursor->id = mpCursorIdx; | ||||
|         cursor->pCursor = NULL; | ||||
|         cursor->x = 0; | ||||
|         cursor->y = 0; | ||||
|  | @ -285,6 +304,10 @@ miSpriteInitialize (pScreen, cursorFuncs, screenFuncs) | |||
| 
 | ||||
|         mpCursorIdx++; | ||||
|     } | ||||
| 
 | ||||
|     /* virtual core pointer has id 1, we might as well save the memory */ | ||||
|     xfree(pScreenPriv->cp); | ||||
|     pScreenPriv->cp = &(pScreenPriv->mpCursors[1]); | ||||
| #endif | ||||
| 
 | ||||
|     return TRUE; | ||||
|  |  | |||
|  | @ -44,6 +44,7 @@ in this Software without prior written authorization from The Open Group. | |||
| # include   "damage.h" | ||||
| 
 | ||||
| typedef struct { | ||||
|     int             id;                 /* id, corresponds with device id */ | ||||
|     CursorPtr	    pCursor; | ||||
|     int		    x;			/* cursor hotspot */ | ||||
|     int		    y; | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue