summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEric Anholt <eric@anholt.net>2010-01-15 12:53:47 -0800
committerOwain G. Ainsworth <oga@openbsd.org>2010-05-16 19:59:32 +0100
commitdb71403fcf682ef7a024b51c1095c0925868d972 (patch)
treeb16767ad9d26489c2221762d91d981791121365a
parentcac1e8e6f125bba4c5703ae68a295ff1346438fe (diff)
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@ffwll.ch> Signed-off-by: Owain G. Ainsworth <oga@openbsd.org>
-rw-r--r--src/i810_video.c2
-rw-r--r--src/i830_video.c38
2 files changed, 4 insertions, 36 deletions
diff --git a/src/i810_video.c b/src/i810_video.c
index c82fcc92..ee1a2326 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 22f87a85..23163684 100644
--- a/src/i830_video.c
+++ b/src/i830_video.c
@@ -2183,40 +2183,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)
{
@@ -2554,7 +2520,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;