diff options
author | Alex Deucher <alexdeucher@gmail.com> | 2009-04-07 11:33:44 -0400 |
---|---|---|
committer | Alex Deucher <alexdeucher@gmail.com> | 2009-04-07 11:33:44 -0400 |
commit | 8ec27be3c8043a6ddc816b0b1480dd19f8d73832 (patch) | |
tree | 874ab0e78533f123a9743dc301e15395e1c66048 /src/radeon_textured_videofuncs.c | |
parent | f8c7d6a6162196a743f6885ecaf63ba50de1722a (diff) |
radeon: fix Xv vsync for multi-head
Diffstat (limited to 'src/radeon_textured_videofuncs.c')
-rw-r--r-- | src/radeon_textured_videofuncs.c | 26 |
1 files changed, 15 insertions, 11 deletions
diff --git a/src/radeon_textured_videofuncs.c b/src/radeon_textured_videofuncs.c index 05acb93..6cb2870 100644 --- a/src/radeon_textured_videofuncs.c +++ b/src/radeon_textured_videofuncs.c @@ -1983,17 +1983,21 @@ FUNC_NAME(RADEONDisplayTexturedVideo)(ScrnInfoPtr pScrn, RADEONPortPrivPtr pPriv } } - if (pPriv->vsync) - FUNC_NAME(RADEONWaitForVLine)(pScrn, pPixmap, - radeon_covering_crtc_num(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); - + 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); + if (crtc) { + RADEONCrtcPrivatePtr radeon_crtc = crtc->driver_private; + + FUNC_NAME(RADEONWaitForVLine)(pScrn, pPixmap, + radeon_crtc->crtc_id, + pPriv->drw_y - crtc->y, + (pPriv->drw_y - crtc->y) + pPriv->dst_h); + } + } /* * Rendering of the actual polygon is done in two different * ways depending on chip generation: |