diff --git a/video/out/vo.c b/video/out/vo.c index faa172f2fd..7f57df2fe1 100644 --- a/video/out/vo.c +++ b/video/out/vo.c @@ -1010,13 +1010,13 @@ static bool render_frame(struct vo *vo) if (in->dropped_frame) { MP_STATS(vo, "drop-vo"); } else { - // If the initial redraw request was true, then we can - // clear it here since we just performed a redraw and are - // merely clearing that request. However if there initially is + // If the initial redraw request was true or mpv is still playing, + // then we can clear it here since we just performed a redraw, or the + // next loop will draw what we need. However if there initially is // no redraw request, then something can change this (i.e. the OSD) - // while the vo was unlocked. Don't touch in->request_redraw - // in that case. - if (request_redraw) + // while the vo was unlocked. If we are paused, don't touch + // in->request_redraw in that case. + if (request_redraw || !in->paused) in->request_redraw = false; }