summaryrefslogtreecommitdiff
path: root/src/r600_textured_videofuncs.c
diff options
context:
space:
mode:
authorAlex Deucher <alexdeucher@gmail.com>2009-04-07 11:33:44 -0400
committerAlex Deucher <alexdeucher@gmail.com>2009-04-07 11:33:44 -0400
commit8ec27be3c8043a6ddc816b0b1480dd19f8d73832 (patch)
tree874ab0e78533f123a9743dc301e15395e1c66048 /src/r600_textured_videofuncs.c
parentf8c7d6a6162196a743f6885ecaf63ba50de1722a (diff)
radeon: fix Xv vsync for multi-head
Diffstat (limited to 'src/r600_textured_videofuncs.c')
-rw-r--r--src/r600_textured_videofuncs.c20
1 files changed, 12 insertions, 8 deletions
diff --git a/src/r600_textured_videofuncs.c b/src/r600_textured_videofuncs.c
index 3dfe151a..88745d5c 100644
--- a/src/r600_textured_videofuncs.c
+++ b/src/r600_textured_videofuncs.c
@@ -446,17 +446,21 @@ R600DisplayTexturedVideo(ScrnInfoPtr pScrn, RADEONPortPrivPtr pPriv)
EREG(accel_state->ib, SPI_INTERP_CONTROL_0, 0);
- if (pPriv->vsync)
- cp_wait_vline_sync(pScrn, accel_state->ib, pPixmap,
- radeon_covering_crtc_num(pScrn,
+ if (pPriv->vsync) {
+ xf86CrtcPtr crtc = radeon_xv_pick_best_crtc(pScrn,
pPriv->drw_x,
pPriv->drw_x + pPriv->dst_w,
pPriv->drw_y,
- pPriv->drw_y + pPriv->dst_h,
- pPriv->desired_crtc),
- pPriv->drw_y,
- pPriv->drw_y + pPriv->dst_h);
-
+ pPriv->drw_y + pPriv->dst_h);
+ if (crtc) {
+ RADEONCrtcPrivatePtr radeon_crtc = crtc->driver_private;
+
+ cp_wait_vline_sync(pScrn, accel_state->ib, pPixmap,
+ radeon_crtc->crtc_id,
+ pPriv->drw_y - crtc->y,
+ (pPriv->drw_y - crtc->y) + pPriv->dst_h);
+ }
+ }
accel_state->vb_index = 0;