xfree86: Hold input_lock across SPRITE functions in VGA arbiter
Avoid scrambling the sprite functions wrapper. Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=101995 Signed-off-by: Keith Packard <keithp@keithp.com> Reviewed-by: Adam Jackson <ajax@redhat.com>
This commit is contained in:
		
							parent
							
								
									3265d0c81f
								
							
						
					
					
						commit
						cf7517675d
					
				|  | @ -73,14 +73,20 @@ | |||
| 
 | ||||
| #define UNWRAP_SCREEN_INFO(x) pScrn->x = pScreenPriv->x | ||||
| 
 | ||||
| #define SPRITE_PROLOG miPointerScreenPtr PointPriv = \ | ||||
|     (miPointerScreenPtr)dixLookupPrivate(&pScreen->devPrivates, \ | ||||
|     miPointerScreenKey); VGAarbiterScreenPtr pScreenPriv = \ | ||||
|     ((VGAarbiterScreenPtr)dixLookupPrivate(&(pScreen)->devPrivates, \ | ||||
|     VGAarbiterScreenKey)); PointPriv->spriteFuncs = pScreenPriv->miSprite; | ||||
| #define SPRITE_PROLOG                                           \ | ||||
|     miPointerScreenPtr PointPriv;                               \ | ||||
|     VGAarbiterScreenPtr pScreenPriv;                            \ | ||||
|     input_lock();                                               \ | ||||
|     PointPriv = dixLookupPrivate(&pScreen->devPrivates,         \ | ||||
|                                  miPointerScreenKey);           \ | ||||
|     pScreenPriv = dixLookupPrivate(&(pScreen)->devPrivates,     \ | ||||
|                                    VGAarbiterScreenKey);        \ | ||||
|     PointPriv->spriteFuncs = pScreenPriv->miSprite;             \ | ||||
| 
 | ||||
| #define SPRITE_EPILOG pScreenPriv->miSprite = PointPriv->spriteFuncs;\ | ||||
|     PointPriv->spriteFuncs  = &VGAarbiterSpriteFuncs; | ||||
| #define SPRITE_EPILOG                                   \ | ||||
|     pScreenPriv->miSprite = PointPriv->spriteFuncs;     \ | ||||
|     PointPriv->spriteFuncs  = &VGAarbiterSpriteFuncs;   \ | ||||
|     input_unlock(); | ||||
| 
 | ||||
| #define WRAP_SPRITE do { pScreenPriv->miSprite = PointPriv->spriteFuncs;\ | ||||
|     	PointPriv->spriteFuncs  = &VGAarbiterSpriteFuncs; 		\ | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue