xf86-video-ati: Branch 'master'
Michel Daenzer
daenzer at kemper.freedesktop.org
Fri Sep 7 15:24:03 PDT 2007
src/radeon_cursor.c | 20 +++++++++++++++++++-
1 file changed, 19 insertions(+), 1 deletion(-)
New commits:
diff-tree 0241cac643fa1c08a45ea44f5c670b290e760ad8 (from 49933e2f7d590811f2bc8c0d51a09f3b7f14845e)
Author: Michel Dänzer <michel at tungstengraphics.com>
Date: Sat Sep 8 00:22:40 2007 +0200
radeon: Reinstate sync in radeon_crtc_show/hide_cursor.
Make sure the DRI lock is held though, as these can be called asynchronously.
Fixes https://bugs.freedesktop.org/show_bug.cgi?id=12245 .
diff --git a/src/radeon_cursor.c b/src/radeon_cursor.c
index f19f2bc..3e60d23 100644
--- a/src/radeon_cursor.c
+++ b/src/radeon_cursor.c
@@ -98,12 +98,22 @@ radeon_crtc_show_cursor (xf86CrtcPtr crt
RADEONInfoPtr info = RADEONPTR(pScrn);
unsigned char *RADEONMMIO = info->MMIO;
+#ifdef XF86DRI
+ if (info->CPStarted && pScrn->pScreen) DRILock(pScrn->pScreen, 0);
+#endif
+
+ RADEON_SYNC(info, pScrn);
+
if (crtc_id == 0)
OUTREGP(RADEON_CRTC_GEN_CNTL, RADEON_CRTC_CUR_EN | 2 << 20,
~(RADEON_CRTC_CUR_EN | RADEON_CRTC_CUR_MODE_MASK));
else if (crtc_id == 1)
OUTREGP(RADEON_CRTC2_GEN_CNTL, RADEON_CRTC2_CUR_EN | 2 << 20,
~(RADEON_CRTC2_CUR_EN | RADEON_CRTC2_CUR_MODE_MASK));
+
+#ifdef XF86DRI
+ if (info->CPStarted && pScrn->pScreen) DRIUnlock(pScrn->pScreen);
+#endif
}
void
@@ -115,12 +125,20 @@ radeon_crtc_hide_cursor (xf86CrtcPtr crt
RADEONInfoPtr info = RADEONPTR(pScrn);
unsigned char *RADEONMMIO = info->MMIO;
+#ifdef XF86DRI
+ if (info->CPStarted && pScrn->pScreen) DRILock(pScrn->pScreen, 0);
+#endif
+
+ RADEON_SYNC(info, pScrn);
+
if (crtc_id == 0)
OUTREGP(RADEON_CRTC_GEN_CNTL, 0, ~RADEON_CRTC_CUR_EN);
else if (crtc_id == 1)
OUTREGP(RADEON_CRTC2_GEN_CNTL, 0, ~RADEON_CRTC2_CUR_EN);
-
+#ifdef XF86DRI
+ if (info->CPStarted && pScrn->pScreen) DRIUnlock(pScrn->pScreen);
+#endif
}
void
More information about the xorg-commit
mailing list