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