0
0
mirror of https://github.com/mpv-player/mpv.git synced 2024-09-20 03:52:22 +02:00

osd: don't let slow commands cut OSD messages short

Done for screenshot commands, requested by a user.
This commit is contained in:
wm4 2014-10-06 22:19:24 +02:00
parent 45c8b97efb
commit a9e6ba1b9a
2 changed files with 9 additions and 1 deletions

View File

@ -174,6 +174,7 @@ typedef struct MPContext {
int osd_function;
double osd_function_visible;
double osd_msg_visible;
double osd_msg_next_duration;
double osd_last_update;
bool osd_force_update;
char *osd_msg_text;

View File

@ -271,7 +271,7 @@ static bool set_osd_msg_va(struct MPContext *mpctx, int level, int time,
talloc_free(mpctx->osd_msg_text);
mpctx->osd_msg_text = talloc_vasprintf(mpctx, fmt, ap);
mpctx->osd_show_pos = false;
mpctx->osd_msg_visible = mp_time_sec() + time / 1000.0;
mpctx->osd_msg_next_duration = time / 1000.0;
mpctx->osd_force_update = true;
mpctx->sleeptime = 0;
return true;
@ -477,6 +477,13 @@ void update_osd_msg(struct MPContext *mpctx)
mpctx->osd_function = 0;
}
if (mpctx->osd_msg_next_duration > 0) {
// This is done to avoid cutting the OSD message short if slow commands
// are executed between setting the OSD message and showing it.
mpctx->osd_msg_visible = now + mpctx->osd_msg_next_duration;
mpctx->osd_msg_next_duration = 0;
}
if (mpctx->osd_msg_visible) {
double sleep = mpctx->osd_msg_visible - now;
if (sleep > 0) {