From 5e6a8177e55a8e30e0cd67c7ee3039aa22ff1c0e Mon Sep 17 00:00:00 2001 From: nicm Date: Fri, 3 Feb 2017 21:01:02 +0000 Subject: Cache status line position to reduce option lookups during output. --- status.c | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) (limited to 'status.c') diff --git a/status.c b/status.c index c4f79050..6cc1ee37 100644 --- a/status.c +++ b/status.c @@ -192,17 +192,26 @@ status_timer_start_all(void) status_timer_start(c); } +/* Update status cache. */ +void +status_update_saved(struct session *s) +{ + if (!options_get_number(s->options, "status")) + s->statusat = -1; + else if (options_get_number(s->options, "status-position") == 0) + s->statusat = 0; + else + s->statusat = 1; +} + /* Get screen line of status line. -1 means off. */ int status_at_line(struct client *c) { struct session *s = c->session; - if (!options_get_number(s->options, "status")) - return (-1); - - if (options_get_number(s->options, "status-position") == 0) - return (0); + if (s->statusat != 1) + return (s->statusat); return (c->tty.sy - 1); } -- cgit