mirror of https://github.com/mpv-player/mpv
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:
parent
7af2cb08e2
commit
74c2146092
|
@ -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;
|
||||
|
|
Loading…
Reference in New Issue