diff options
author | wm4 <wm4@nowhere> | 2016-08-28 18:15:37 +0200 |
---|---|---|
committer | wm4 <wm4@nowhere> | 2016-08-28 18:26:59 +0200 |
commit | 5086b2d4568bfd8b39a4418a2db4dbfbb1fae92f (patch) | |
tree | 32488fc28c014e96a83c575eb728443020f5557c /player/osd.c | |
parent | 7af6e64db748f71b472cd2b70ef7ebbe9da97859 (diff) | |
download | mpv-5086b2d4568bfd8b39a4418a2db4dbfbb1fae92f.tar.bz2 mpv-5086b2d4568bfd8b39a4418a2db4dbfbb1fae92f.tar.xz |
player: add option to disable video OSD
Normally, OSD can be disabled with --osd-level=0. But this also disables
terminal OSD, and some users want _only_ the terminal OSD. Add
--video-osd=no, which essentially disables the video OSD.
Ideally, it should probably be possible to control terminal and video
OSD levels independently, but that would require separate OSD timers
(and other state) for both components, so don't do it. But because the
current situation isn't too ideal, add a threat to the manpage that
might be changed in the future.
Fixes #3387.
Diffstat (limited to 'player/osd.c')
-rw-r--r-- | player/osd.c | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/player/osd.c b/player/osd.c index 48bf22b346..6f26e9361c 100644 --- a/player/osd.c +++ b/player/osd.c @@ -117,8 +117,8 @@ void term_osd_set_subs(struct MPContext *mpctx, const char *text) static void term_osd_set_text_lazy(struct MPContext *mpctx, const char *text) { - if ((mpctx->video_out && mpctx->opts->term_osd != 1) || - !mpctx->opts->term_osd || !text) + bool video_osd = mpctx->video_out && mpctx->opts->video_osd; + if ((video_osd && mpctx->opts->term_osd != 1) || !text) text = ""; // disable talloc_free(mpctx->term_osd_text); mpctx->term_osd_text = talloc_strdup(mpctx, text); @@ -325,7 +325,8 @@ void set_osd_bar(struct MPContext *mpctx, int type, double min, double max, double neutral, double val) { struct MPOpts *opts = mpctx->opts; - if (opts->osd_level < 1 || !opts->osd_bar_visible || !mpctx->video_out) + bool video_osd = mpctx->video_out && mpctx->opts->video_osd; + if (opts->osd_level < 1 || !opts->osd_bar_visible || !video_osd) return; mpctx->osd_visible = mp_time_sec() + opts->osd_duration / 1000.0; @@ -460,7 +461,8 @@ static void add_seek_osd_messages(struct MPContext *mpctx) } if (mpctx->add_osd_seek_info & OSD_SEEK_INFO_TEXT) { // Never in term-osd mode - if (mpctx->video_out && mpctx->opts->term_osd != 1) { + bool video_osd = mpctx->video_out && mpctx->opts->video_osd; + if (video_osd && mpctx->opts->term_osd != 1) { if (set_osd_msg(mpctx, 1, mpctx->opts->osd_duration, "")) mpctx->osd_show_pos = true; } @@ -564,6 +566,9 @@ void update_osd_msg(struct MPContext *mpctx) term_osd_print_status_lazy(mpctx); term_osd_update(mpctx); + if (!opts->video_osd) + return; + int osd_level = opts->osd_level; if (mpctx->osd_show_pos) osd_level = 3; |