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