summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorwm4 <wm4@nowhere>2016-08-26 20:27:46 +0200
committerwm4 <wm4@nowhere>2016-08-26 20:38:05 +0200
commited62f56a40b7854c957bef2f18003a511a54d82d (patch)
tree9c031283550a157a7ae8c07adaa135e81877c914
parent37d6604d70c8c594de2817db26356c4c950ac0fd (diff)
downloadmpv-ed62f56a40b7854c957bef2f18003a511a54d82d.tar.bz2
mpv-ed62f56a40b7854c957bef2f18003a511a54d82d.tar.xz
player: avoid some redundant terminal status updates
Run term_osd_update() just once per update, instead of twice (once for the status line, and once for the terminal OSD messafe).
-rw-r--r--player/osd.c20
1 files changed, 9 insertions, 11 deletions
diff --git a/player/osd.c b/player/osd.c
index e2606829be..48bf22b346 100644
--- a/player/osd.c
+++ b/player/osd.c
@@ -115,17 +115,16 @@ void term_osd_set_subs(struct MPContext *mpctx, const char *text)
term_osd_update(mpctx);
}
-static void term_osd_set_text(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)
text = ""; // disable
talloc_free(mpctx->term_osd_text);
mpctx->term_osd_text = talloc_strdup(mpctx, text);
- term_osd_update(mpctx);
}
-static void term_osd_set_status(struct MPContext *mpctx, const char *text)
+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);
@@ -134,8 +133,6 @@ static void term_osd_set_status(struct MPContext *mpctx, const char *text)
terminal_get_size(&w, &h);
if (strlen(mpctx->term_osd_status) > w && !strchr(mpctx->term_osd_status, '\n'))
mpctx->term_osd_status[w] = '\0';
-
- term_osd_update(mpctx);
}
static void add_term_osd_bar(struct MPContext *mpctx, char **line, int width)
@@ -167,7 +164,7 @@ static bool is_busy(struct MPContext *mpctx)
return !mpctx->restart_complete && mp_time_sec() - mpctx->start_timestamp > 0.3;
}
-static void print_status(struct MPContext *mpctx)
+static void term_osd_print_status_lazy(struct MPContext *mpctx)
{
struct MPOpts *opts = mpctx->opts;
@@ -179,13 +176,13 @@ static void print_status(struct MPContext *mpctx)
if (opts->quiet || !mpctx->playback_initialized || !mpctx->playing_msg_shown)
{
- term_osd_set_status(mpctx, "");
+ term_osd_set_status_lazy(mpctx, "");
return;
}
if (opts->status_msg) {
char *r = mp_property_expand_escaped_string(mpctx, opts->status_msg);
- term_osd_set_status(mpctx, r);
+ term_osd_set_status_lazy(mpctx, r);
talloc_free(r);
return;
}
@@ -292,7 +289,7 @@ static void print_status(struct MPContext *mpctx)
}
// end
- term_osd_set_status(mpctx, line);
+ term_osd_set_status_lazy(mpctx, line);
talloc_free(line);
}
@@ -563,8 +560,9 @@ void update_osd_msg(struct MPContext *mpctx)
update_osd_bar(mpctx, OSD_BAR_SEEK, 0, 1, MPCLAMP(pos, 0, 1));
}
- term_osd_set_text(mpctx, mpctx->osd_msg_text);
- print_status(mpctx);
+ term_osd_set_text_lazy(mpctx, mpctx->osd_msg_text);
+ term_osd_print_status_lazy(mpctx);
+ term_osd_update(mpctx);
int osd_level = opts->osd_level;
if (mpctx->osd_show_pos)