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