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 UNWRAP_SCREEN_INFO(x) pScrn->x = pScreenPriv->x | ||||||
| 
 | 
 | ||||||
| #define SPRITE_PROLOG miPointerScreenPtr PointPriv = \ | #define SPRITE_PROLOG                                           \ | ||||||
|     (miPointerScreenPtr)dixLookupPrivate(&pScreen->devPrivates, \ |     miPointerScreenPtr PointPriv;                               \ | ||||||
|     miPointerScreenKey); VGAarbiterScreenPtr pScreenPriv = \ |     VGAarbiterScreenPtr pScreenPriv;                            \ | ||||||
|     ((VGAarbiterScreenPtr)dixLookupPrivate(&(pScreen)->devPrivates, \ |     input_lock();                                               \ | ||||||
|     VGAarbiterScreenKey)); PointPriv->spriteFuncs = pScreenPriv->miSprite; |     PointPriv = dixLookupPrivate(&pScreen->devPrivates,         \ | ||||||
|  |                                  miPointerScreenKey);           \ | ||||||
|  |     pScreenPriv = dixLookupPrivate(&(pScreen)->devPrivates,     \ | ||||||
|  |                                    VGAarbiterScreenKey);        \ | ||||||
|  |     PointPriv->spriteFuncs = pScreenPriv->miSprite;             \ | ||||||
| 
 | 
 | ||||||
| #define SPRITE_EPILOG pScreenPriv->miSprite = PointPriv->spriteFuncs;\ | #define SPRITE_EPILOG                                   \ | ||||||
|     PointPriv->spriteFuncs  = &VGAarbiterSpriteFuncs; |     pScreenPriv->miSprite = PointPriv->spriteFuncs;     \ | ||||||
|  |     PointPriv->spriteFuncs  = &VGAarbiterSpriteFuncs;   \ | ||||||
|  |     input_unlock(); | ||||||
| 
 | 
 | ||||||
| #define WRAP_SPRITE do { pScreenPriv->miSprite = PointPriv->spriteFuncs;\ | #define WRAP_SPRITE do { pScreenPriv->miSprite = PointPriv->spriteFuncs;\ | ||||||
|     	PointPriv->spriteFuncs  = &VGAarbiterSpriteFuncs; 		\ |     	PointPriv->spriteFuncs  = &VGAarbiterSpriteFuncs; 		\ | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue