mirror of
https://github.com/mpv-player/mpv
synced 2025-05-06 02:00:05 +00:00
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).
This commit is contained in:
parent
37d6604d70
commit
ed62f56a40
20
player/osd.c
20
player/osd.c
@ -115,17 +115,16 @@ void term_osd_set_subs(struct MPContext *mpctx, const char *text)
|
|||||||
term_osd_update(mpctx);
|
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) ||
|
if ((mpctx->video_out && mpctx->opts->term_osd != 1) ||
|
||||||
!mpctx->opts->term_osd || !text)
|
!mpctx->opts->term_osd || !text)
|
||||||
text = ""; // disable
|
text = ""; // disable
|
||||||
talloc_free(mpctx->term_osd_text);
|
talloc_free(mpctx->term_osd_text);
|
||||||
mpctx->term_osd_text = talloc_strdup(mpctx, 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);
|
talloc_free(mpctx->term_osd_status);
|
||||||
mpctx->term_osd_status = talloc_strdup(mpctx, text);
|
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);
|
terminal_get_size(&w, &h);
|
||||||
if (strlen(mpctx->term_osd_status) > w && !strchr(mpctx->term_osd_status, '\n'))
|
if (strlen(mpctx->term_osd_status) > w && !strchr(mpctx->term_osd_status, '\n'))
|
||||||
mpctx->term_osd_status[w] = '\0';
|
mpctx->term_osd_status[w] = '\0';
|
||||||
|
|
||||||
term_osd_update(mpctx);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void add_term_osd_bar(struct MPContext *mpctx, char **line, int width)
|
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;
|
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;
|
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)
|
if (opts->quiet || !mpctx->playback_initialized || !mpctx->playing_msg_shown)
|
||||||
{
|
{
|
||||||
term_osd_set_status(mpctx, "");
|
term_osd_set_status_lazy(mpctx, "");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (opts->status_msg) {
|
if (opts->status_msg) {
|
||||||
char *r = mp_property_expand_escaped_string(mpctx, 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);
|
talloc_free(r);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -292,7 +289,7 @@ static void print_status(struct MPContext *mpctx)
|
|||||||
}
|
}
|
||||||
|
|
||||||
// end
|
// end
|
||||||
term_osd_set_status(mpctx, line);
|
term_osd_set_status_lazy(mpctx, line);
|
||||||
talloc_free(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));
|
update_osd_bar(mpctx, OSD_BAR_SEEK, 0, 1, MPCLAMP(pos, 0, 1));
|
||||||
}
|
}
|
||||||
|
|
||||||
term_osd_set_text(mpctx, mpctx->osd_msg_text);
|
term_osd_set_text_lazy(mpctx, mpctx->osd_msg_text);
|
||||||
print_status(mpctx);
|
term_osd_print_status_lazy(mpctx);
|
||||||
|
term_osd_update(mpctx);
|
||||||
|
|
||||||
int osd_level = opts->osd_level;
|
int osd_level = opts->osd_level;
|
||||||
if (mpctx->osd_show_pos)
|
if (mpctx->osd_show_pos)
|
||||||
|
Loading…
Reference in New Issue
Block a user