vo: clear request_redraw in render_frame only if video is playing #17383
+5
−5
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
27a7827 almost got it but it should be an and condition not an or. When we unlock VO to draw the core, the OSD can update after we flip the page and the player can also pause itself in that time. That means that we will clear the redraw request but due to the OSD update it actually needs to draw again. Because the player paused itself in that time frame, this redraw gets lost and you have the mismatch. The simplest way to avoid that case is to only clear the redraw_request while mpv is playing. The paused case will always get handled later in do_redraw so it does not get missed. The slight downside is that it's technically possible to do a redundant redraw (e.g. what if you pause before draw_frame), but this theoretical inefficiency is deemed not really relevant or important enough to add more confusing code to avoid. Fixes #17288.
@somerandoname does this fix it for you?