xserver: Branch 'master'
Adam Jackson
ajax at kemper.freedesktop.org
Wed Dec 13 17:09:08 UTC 2017
hw/xfree86/common/xf86VGAarbiterPriv.h | 20 +++++++++++++-------
1 file changed, 13 insertions(+), 7 deletions(-)
New commits:
commit cf7517675d988c2d1ff967d6d162a17acbdad466
Author: Keith Packard <keithp at keithp.com>
Date: Wed Aug 2 21:34:52 2017 -0700
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 at keithp.com>
Reviewed-by: Adam Jackson <ajax at redhat.com>
diff --git a/hw/xfree86/common/xf86VGAarbiterPriv.h b/hw/xfree86/common/xf86VGAarbiterPriv.h
index 09be10aa3..03db55700 100644
--- a/hw/xfree86/common/xf86VGAarbiterPriv.h
+++ b/hw/xfree86/common/xf86VGAarbiterPriv.h
@@ -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; \
More information about the xorg-commit
mailing list