From 74c214609233d515a79ecb3c887d1b300f887b82 Mon Sep 17 00:00:00 2001 From: wm4 Date: Thu, 22 Jan 2015 17:57:59 +0100 Subject: vo_vdpau: don't render to an output surface if it could be busy There was a case when we could have rendered to an output surface while it's still used for display. Not sure why the API doesn't do this automatically. --- video/out/vo_vdpau.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/video/out/vo_vdpau.c b/video/out/vo_vdpau.c index 46190fd032..d54ee3df53 100644 --- a/video/out/vo_vdpau.c +++ b/video/out/vo_vdpau.c @@ -160,6 +160,12 @@ static int render_video_to_output_surface(struct vo *vo, VdpStatus vdp_st; struct mp_image *mpi = vc->current_image; + vdp_st = vdp->presentation_queue_block_until_surface_idle(vc->flip_queue, + output_surface, + &dummy); + CHECK_VDP_WARNING(vo, "Error when calling " + "vdp_presentation_queue_block_until_surface_idle"); + if (!mpi) { // At least clear the screen if there is nothing to render int flags = VDP_OUTPUT_SURFACE_RENDER_ROTATE_0; @@ -170,12 +176,6 @@ static int render_video_to_output_surface(struct vo *vo, return -1; } - vdp_st = vdp->presentation_queue_block_until_surface_idle(vc->flip_queue, - output_surface, - &dummy); - CHECK_VDP_WARNING(vo, "Error when calling " - "vdp_presentation_queue_block_until_surface_idle"); - if (vc->rgb_mode) { VdpOutputSurface surface = (uintptr_t)mpi->planes[3]; int flags = VDP_OUTPUT_SURFACE_RENDER_ROTATE_0; -- cgit v1.2.3