xf86-video-intel: src/i810_video.c src/i830_video.c

Eric Anholt anholt at kemper.freedesktop.org
Sun Jan 17 14:06:26 PST 2010


 src/i810_video.c |    2 +-
 src/i830_video.c |   39 +++------------------------------------
 2 files changed, 4 insertions(+), 37 deletions(-)

New commits:
commit 93cd943d41c646c794b8cb5a960d8f0805e15395
Author: Eric Anholt <eric at anholt.net>
Date:   Fri Jan 15 12:53:47 2010 -0800

    intel: Use the compositing-aware colorkey filler instead of homebrew fail.
    
    Of course, it's still fail since you can't correctly composite
    colorkey overlay, but at least this doesn't spam colorkey to the root
    window.
    
    Tested-by: Daniel Vetter <daniel at ffwll.ch>

diff --git a/src/i810_video.c b/src/i810_video.c
index c82fcc9..ee1a232 100644
--- a/src/i810_video.c
+++ b/src/i810_video.c
@@ -1085,7 +1085,7 @@ I810PutImage(
     if(!REGION_EQUAL(pScrn->pScreen, &pPriv->clip, clipBoxes)) {
 	REGION_COPY(pScrn->pScreen, &pPriv->clip, clipBoxes);
 	/* draw these */
-	xf86XVFillKeyHelper(pScrn->pScreen, pPriv->colorKey, clipBoxes);
+	xf86XVFillKeyHelperDrawable(pDraw, pPriv->colorKey, clipBoxes);
     }
 
     I810DisplayVideo(pScrn, id, width, height, dstPitch, 
diff --git a/src/i830_video.c b/src/i830_video.c
index 964f1e0..d1f391b 100644
--- a/src/i830_video.c
+++ b/src/i830_video.c
@@ -1282,40 +1282,6 @@ i830_clip_video_helper(ScrnInfoPtr scrn,
 }
 
 static void
-i830_fill_colorkey(ScreenPtr screen, uint32_t key, RegionPtr clipboxes)
-{
-	DrawablePtr root = &WindowTable[screen->myNum]->drawable;
-	XID pval[2];
-	BoxPtr pbox = REGION_RECTS(clipboxes);
-	int i, nbox = REGION_NUM_RECTS(clipboxes);
-	xRectangle *rects;
-	GCPtr gc;
-
-	if (!xf86Screens[screen->myNum]->vtSema)
-		return;
-
-	gc = GetScratchGC(root->depth, screen);
-	pval[0] = key;
-	pval[1] = IncludeInferiors;
-	(void)ChangeGC(gc, GCForeground | GCSubwindowMode, pval);
-	ValidateGC(root, gc);
-
-	rects = xalloc(nbox * sizeof(xRectangle));
-
-	for (i = 0; i < nbox; i++, pbox++) {
-		rects[i].x = pbox->x1;
-		rects[i].y = pbox->y1;
-		rects[i].width = pbox->x2 - pbox->x1;
-		rects[i].height = pbox->y2 - pbox->y1;
-	}
-
-	(*gc->ops->PolyFillRect) (root, gc, nbox, rects);
-
-	xfree(rects);
-	FreeScratchGC(gc);
-}
-
-static void
 i830_wait_for_scanline(ScrnInfoPtr scrn, PixmapPtr pixmap,
 		       xf86CrtcPtr crtc, RegionPtr clipBoxes)
 {
@@ -1599,7 +1565,6 @@ I830PutImageOverlay(ScrnInfoPtr scrn,
 	     DrawablePtr drawable)
 {
 	intel_adaptor_private *adaptor_priv = (intel_adaptor_private *) data;
-	ScreenPtr screen = screenInfo.screens[scrn->scrnIndex];
 	int dstPitch;
 	int dstPitch2 = 0;
 	BoxRec dstBox;
@@ -1654,7 +1619,9 @@ I830PutImageOverlay(ScrnInfoPtr scrn,
 	/* update cliplist */
 	if (!REGION_EQUAL(scrn->pScreen, &adaptor_priv->clip, clipBoxes)) {
 		REGION_COPY(scrn->pScreen, &adaptor_priv->clip, clipBoxes);
-		i830_fill_colorkey(screen, adaptor_priv->colorKey, clipBoxes);
+		xf86XVFillKeyHelperDrawable(drawable,
+					    adaptor_priv->colorKey,
+					    clipBoxes);
 	}
 
 	adaptor_priv->videoStatus = CLIENT_VIDEO_ON;


More information about the xorg-commit mailing list