diff options
Diffstat (limited to 'player/osd.c')
-rw-r--r-- | player/osd.c | 38 |
1 files changed, 23 insertions, 15 deletions
diff --git a/player/osd.c b/player/osd.c index 93d6302cc0..96ab287227 100644 --- a/player/osd.c +++ b/player/osd.c @@ -22,7 +22,6 @@ #include <limits.h> #include <assert.h> -#include "config.h" #include "mpv_talloc.h" #include "common/msg.h" @@ -96,9 +95,24 @@ static void term_osd_update(struct MPContext *mpctx) } } +static void term_osd_update_title(struct MPContext *mpctx) +{ + if (!mpctx->opts->use_terminal) + return; + + char *s = mp_property_expand_escaped_string(mpctx, mpctx->opts->term_title); + if (bstr_equals(bstr0(s), bstr0(mpctx->term_osd_title))) { + talloc_free(s); + return; + } + + mp_msg_set_term_title(mpctx->statusline, s); + mpctx->term_osd_title = talloc_steal(mpctx, s); +} + void term_osd_set_subs(struct MPContext *mpctx, const char *text) { - if (mpctx->video_out || !text || !mpctx->opts->subs_rend->sub_visibility) + if (mpctx->video_out || !text || !mpctx->opts->subs_shared->sub_visibility[0]) text = ""; // disable if (strcmp(mpctx->term_osd_subs ? mpctx->term_osd_subs : "", text) == 0) return; @@ -120,11 +134,6 @@ static void term_osd_set_status_lazy(struct MPContext *mpctx, const char *text) { talloc_free(mpctx->term_osd_status); mpctx->term_osd_status = talloc_strdup(mpctx, text); - - int w = 80, h = 24; - terminal_get_size(&w, &h); - if (strlen(mpctx->term_osd_status) > w && !strchr(mpctx->term_osd_status, '\n')) - mpctx->term_osd_status[w] = '\0'; } static void add_term_osd_bar(struct MPContext *mpctx, char **line, int width) @@ -192,7 +201,7 @@ static char *get_term_status_msg(struct MPContext *mpctx) saddf(&line, " x%4.2f", opts->playback_speed); // A-V sync - if (mpctx->ao_chain && mpctx->vo_chain && !mpctx->vo_chain->is_coverart) { + if (mpctx->ao_chain && mpctx->vo_chain && !mpctx->vo_chain->is_sparse) { saddf(&line, " A-V:%7.3f", mpctx->last_av_difference); if (fabs(mpctx->total_avsync_change) > 0.05) saddf(&line, " ct:%7.3f", mpctx->total_avsync_change); @@ -220,7 +229,8 @@ static char *get_term_status_msg(struct MPContext *mpctx) int64_t c = vo_get_drop_count(mpctx->video_out); struct mp_decoder_wrapper *dec = mpctx->vo_chain->track ? mpctx->vo_chain->track->dec : NULL; - int dropped_frames = dec ? dec->dropped_frames : 0; + int dropped_frames = + dec ? mp_decoder_wrapper_get_frames_dropped(dec) : 0; if (c > 0 || dropped_frames > 0) { saddf(&line, " Dropped: %"PRId64, c); if (dropped_frames) @@ -259,19 +269,17 @@ static void term_osd_print_status_lazy(struct MPContext *mpctx) { struct MPOpts *opts = mpctx->opts; + term_osd_update_title(mpctx); update_window_title(mpctx, false); update_vo_playback_state(mpctx); if (!opts->use_terminal) return; - if (opts->quiet || !mpctx->playback_initialized || - !mpctx->playing_msg_shown || mpctx->stop_play) + if (opts->quiet || !mpctx->playback_initialized || !mpctx->playing_msg_shown) { - if (!mpctx->playing || mpctx->stop_play) { - mp_msg_flush_status_line(mpctx->log); + if (!mpctx->playing) term_osd_set_status_lazy(mpctx, ""); - } return; } @@ -443,7 +451,7 @@ static void sadd_osd_status(char **buffer, struct MPContext *mpctx, int level) } } -// OSD messages initated by seeking commands are added lazily with this +// OSD messages initiated by seeking commands are added lazily with this // function, because multiple successive seek commands can be coalesced. static void add_seek_osd_messages(struct MPContext *mpctx) { |