summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authornicm <nicm>2020-05-16 14:42:06 +0000
committernicm <nicm>2020-05-16 14:42:06 +0000
commit21a39c997b82b50b0307e836e4f11f9db6a84e55 (patch)
tree83de22937d097b9475ba9c1f26b96af900bd61ff
parentaebeeec1e988bd74e273bbf6e79f8950895c38fd (diff)
Do not redraw or update mode if nothing has changed.
-rw-r--r--screen-redraw.c5
-rw-r--r--server-client.c4
2 files changed, 7 insertions, 2 deletions
diff --git a/screen-redraw.c b/screen-redraw.c
index 8e74fe97..5ca6024d 100644
--- a/screen-redraw.c
+++ b/screen-redraw.c
@@ -434,7 +434,11 @@ screen_redraw_screen(struct client *c)
return;
flags = screen_redraw_update(c, c->flags);
+ if ((flags & CLIENT_ALLREDRAWFLAGS) == 0)
+ return;
+
screen_redraw_set_context(c, &ctx);
+ tty_update_mode(&c->tty, c->tty.mode, NULL);
tty_sync_start(&c->tty);
if (flags & (CLIENT_REDRAWWINDOW|CLIENT_REDRAWBORDERS)) {
@@ -470,6 +474,7 @@ screen_redraw_pane(struct client *c, struct window_pane *wp)
return;
screen_redraw_set_context(c, &ctx);
+ tty_update_mode(&c->tty, c->tty.mode, NULL);
tty_sync_start(&c->tty);
screen_redraw_draw_pane(&ctx, wp);
diff --git a/server-client.c b/server-client.c
index eb29aebb..ed138f8e 100644
--- a/server-client.c
+++ b/server-client.c
@@ -296,7 +296,9 @@ server_client_lost(struct client *c)
if (c->flags & CLIENT_TERMINAL)
tty_free(&c->tty);
free(c->ttyname);
+
free(c->term_name);
+ free(c->term_type);
status_free(c);
@@ -1780,7 +1782,6 @@ server_client_check_redraw(struct client *c)
if (!redraw)
continue;
log_debug("%s: redrawing pane %%%u", __func__, wp->id);
- tty_update_mode(tty, mode, NULL);
screen_redraw_pane(c, wp);
}
c->redraw_panes = 0;
@@ -1788,7 +1789,6 @@ server_client_check_redraw(struct client *c)
}
if (c->flags & CLIENT_ALLREDRAWFLAGS) {
- tty_update_mode(tty, mode, NULL);
if (options_get_number(s->options, "set-titles"))
server_client_set_title(c);
screen_redraw_screen(c);