xf86-video-intel: Branch 'modesetting-rotation' - 2 commits - src/i830_cursor.c src/i830_xf86Rotate.c
Keith Packard
keithp at kemper.freedesktop.org
Sun Jan 28 04:36:07 EET 2007
src/i830_cursor.c | 2 +-
src/i830_xf86Rotate.c | 9 +++++----
2 files changed, 6 insertions(+), 5 deletions(-)
New commits:
diff-tree d329fa121b2401cadb991c2854e077cfa68e15e8 (from 20419d664c77e9a1a2de82987838b45f44774b47)
Author: Keith Packard <keithp at guitar.keithp.com>
Date: Sat Jan 27 18:36:15 2007 -0800
Fetch from root window instead of screen pixmap during rotation.
The XAA Composite wrapper doesn't check for sourcing from the root pixmap
when deciding whether to sync the hardware drawing. Fix the rotation code to
reference the root window in IncludeInferiors mode to avoid reading without
correct synchronization.
diff --git a/src/i830_xf86Rotate.c b/src/i830_xf86Rotate.c
index 7d056e5..3b8be61 100644
--- a/src/i830_xf86Rotate.c
+++ b/src/i830_xf86Rotate.c
@@ -138,7 +138,7 @@ xf86RotateCrtcRedisplay (xf86CrtcPtr crt
{
ScrnInfoPtr scrn = crtc->scrn;
ScreenPtr screen = scrn->pScreen;
- PixmapPtr src_pixmap = (*screen->GetScreenPixmap) (screen);
+ WindowPtr root = WindowTable[screen->myNum];
PixmapPtr dst_pixmap = crtc->rotatedPixmap;
PictFormatPtr format = compWindowFormat (WindowTable[screen->myNum]);
int error;
@@ -146,12 +146,13 @@ xf86RotateCrtcRedisplay (xf86CrtcPtr crt
PictTransform transform;
int n = REGION_NUM_RECTS(region);
BoxPtr b = REGION_RECTS(region);
+ XID include_inferiors = IncludeInferiors;
src = CreatePicture (None,
- &src_pixmap->drawable,
+ &root->drawable,
format,
- 0L,
- NULL,
+ CPSubwindowMode,
+ &include_inferiors,
serverClient,
&error);
if (!src) {
diff-tree 20419d664c77e9a1a2de82987838b45f44774b47 (from 00decd3b6cea0de22c88b9504dbe26d680e8ab16)
Author: Keith Packard <keithp at guitar.keithp.com>
Date: Sat Jan 27 18:34:12 2007 -0800
Paint ARGB cursor data to ARGB cursor memory space in frame buffer.
When converting from global cursor to per-crtc cursor, the ARGB cursor data
was accidentally painted to the wrong location, overwriting some critical
data and causing the hardware to lock up. (along with generating a garbage
cursor image from uninitialized data).
diff --git a/src/i830_cursor.c b/src/i830_cursor.c
index da220f5..464eb6d 100644
--- a/src/i830_cursor.c
+++ b/src/i830_cursor.c
@@ -389,7 +389,7 @@ static void I830CRTCLoadCursorARGB (xf86
{
I830Ptr pI830 = I830PTR(crtc->scrn);
I830CrtcPrivatePtr intel_crtc = crtc->driver_private;
- CARD32 *dst = (CARD32 *) (pI830->FbBase + intel_crtc->cursor_mem.Start);
+ CARD32 *dst = (CARD32 *) (pI830->FbBase + intel_crtc->cursor_mem_argb.Start);
CARD32 *image = (CARD32 *)pCurs->bits->argb;
int x, y, w, h;
More information about the xorg-commit
mailing list