summaryrefslogtreecommitdiffstats
path: root/player/osd.c
diff options
context:
space:
mode:
Diffstat (limited to 'player/osd.c')
-rw-r--r--player/osd.c38
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)
{