diff options
author | wm4 <wm4@nowhere> | 2016-08-26 20:27:46 +0200 |
---|---|---|
committer | wm4 <wm4@nowhere> | 2016-08-26 20:38:05 +0200 |
commit | ed62f56a40b7854c957bef2f18003a511a54d82d (patch) | |
tree | 9c031283550a157a7ae8c07adaa135e81877c914 /player | |
parent | 37d6604d70c8c594de2817db26356c4c950ac0fd (diff) | |
download | mpv-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).
Diffstat (limited to 'player')
-rw-r--r-- | player/osd.c | 20 |
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) |