diff options
author | wm4 <wm4@nowhere> | 2014-10-06 22:19:24 +0200 |
---|---|---|
committer | wm4 <wm4@nowhere> | 2014-10-06 22:19:24 +0200 |
commit | a9e6ba1b9a8756e7c6163f74b3c57ff794a624b6 (patch) | |
tree | 7edd25e0b87e6b8a1eebabdfe44c8f817a2fa5e3 /player/osd.c | |
parent | 45c8b97efbaff7a5031b008223eeed56f7b0607a (diff) | |
download | mpv-a9e6ba1b9a8756e7c6163f74b3c57ff794a624b6.tar.bz2 mpv-a9e6ba1b9a8756e7c6163f74b3c57ff794a624b6.tar.xz |
osd: don't let slow commands cut OSD messages short
Done for screenshot commands, requested by a user.
Diffstat (limited to 'player/osd.c')
-rw-r--r-- | player/osd.c | 9 |
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) { |