summaryrefslogtreecommitdiffstats
path: root/player/osd.c
diff options
context:
space:
mode:
Diffstat (limited to 'player/osd.c')
-rw-r--r--player/osd.c9
1 files changed, 8 insertions, 1 deletions
diff --git a/player/osd.c b/player/osd.c
index 2d15c9b904..605c4b6757 100644
--- a/player/osd.c
+++ b/player/osd.c
@@ -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) {