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.
This commit is contained in:
wm4 2015-01-22 17:57:59 +01:00
parent 74581a6106
commit 16cc429eb8
1 changed files with 6 additions and 6 deletions

View File

@ -158,6 +158,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;
@ -168,12 +174,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) {
// Clear the borders between video and window (if there are any).
// For some reason, video_mixer_render doesn't need it for YUV.