misprite: Fix software cursor on multiple ScreenRecs
This commit is contained in:
		
							parent
							
								
									2c000f4980
								
							
						
					
					
						commit
						bb89fc2771
					
				|  | @ -56,8 +56,6 @@ in this Software without prior written authorization from The Open Group. | |||
| #endif | ||||
| # include   "damage.h" | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| #define SPRITE_DEBUG_ENABLE 0 | ||||
| #if SPRITE_DEBUG_ENABLE | ||||
| #define SPRITE_DEBUG(x)	ErrorF x | ||||
|  | @ -65,29 +63,26 @@ in this Software without prior written authorization from The Open Group. | |||
| #define SPRITE_DEBUG(x) | ||||
| #endif | ||||
| 
 | ||||
| 
 | ||||
| #define MISPRITE(dev) \ | ||||
|     ((DevHasCursor(dev)) ? \ | ||||
|        (miCursorInfoPtr)dixLookupPrivate(&dev->devPrivates, miSpriteDevPrivatesKey) : \ | ||||
|        (miCursorInfoPtr)dixLookupPrivate(&dev->u.master->devPrivates, miSpriteDevPrivatesKey)) | ||||
| 
 | ||||
| static int damageRegister = 0; | ||||
| 
 | ||||
| static void | ||||
| miSpriteDisableDamage(ScreenPtr pScreen, miSpriteScreenPtr pScreenPriv) | ||||
| { | ||||
|     if (damageRegister) { | ||||
|     if (pScreenPriv->damageRegistered) { | ||||
| 	DamageUnregister (&(pScreen->GetScreenPixmap(pScreen)->drawable), | ||||
| 			  pScreenPriv->pDamage); | ||||
| 	damageRegister = 0; | ||||
| 	pScreenPriv->damageRegistered = 0; | ||||
|     } | ||||
| } | ||||
| 
 | ||||
| static void | ||||
| miSpriteEnableDamage(ScreenPtr pScreen, miSpriteScreenPtr pScreenPriv) | ||||
| { | ||||
|     if (!damageRegister) { | ||||
| 	damageRegister = 1; | ||||
|     if (!pScreenPriv->damageRegistered) { | ||||
| 	pScreenPriv->damageRegistered = 1; | ||||
| 	DamageRegister (&(pScreen->GetScreenPixmap(pScreen)->drawable), | ||||
| 			pScreenPriv->pDamage); | ||||
|     } | ||||
|  | @ -269,6 +264,8 @@ miSpriteInitialize (ScreenPtr               pScreen, | |||
|     pScreenPriv->colors[MASK_COLOR].red = 0; | ||||
|     pScreenPriv->colors[MASK_COLOR].green = 0; | ||||
|     pScreenPriv->colors[MASK_COLOR].blue = 0; | ||||
|     pScreenPriv->damageRegistered = 0; | ||||
| 
 | ||||
|     dixSetPrivate(&pScreen->devPrivates, miSpriteScreenKey, pScreenPriv); | ||||
| 
 | ||||
|     pScreen->CloseScreen = miSpriteCloseScreen; | ||||
|  | @ -282,8 +279,6 @@ miSpriteInitialize (ScreenPtr               pScreen, | |||
| 
 | ||||
|     pScreen->BlockHandler = miSpriteBlockHandler; | ||||
| 
 | ||||
|     damageRegister = 0; | ||||
| 
 | ||||
|     return TRUE; | ||||
| } | ||||
| 
 | ||||
|  |  | |||
|  | @ -87,6 +87,7 @@ typedef struct { | |||
|     VisualPtr	    pVisual; | ||||
|     miSpriteCursorFuncPtr    funcs; | ||||
|     DamagePtr	    pDamage;		/* damage tracking structure */ | ||||
|     Bool            damageRegistered; | ||||
| } miSpriteScreenRec, *miSpriteScreenPtr; | ||||
| 
 | ||||
| #define SOURCE_COLOR	0 | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue