aboutsummaryrefslogtreecommitdiff
path: root/server-client.c
diff options
context:
space:
mode:
Diffstat (limited to 'server-client.c')
-rw-r--r--server-client.c12
1 files changed, 11 insertions, 1 deletions
diff --git a/server-client.c b/server-client.c
index cd850593..8da55ac0 100644
--- a/server-client.c
+++ b/server-client.c
@@ -1541,7 +1541,7 @@ server_client_reset_state(struct client *c)
struct window_pane *wp = w->active, *loop;
struct screen *s;
struct options *oo = c->session->options;
- int mode, cursor;
+ int mode, cursor, flags;
u_int cx = 0, cy = 0, ox, oy, sx, sy;
if (c->flags & (CLIENT_CONTROL|CLIENT_SUSPENDED))
@@ -1606,6 +1606,16 @@ server_client_reset_state(struct client *c)
/* Set the terminal mode and reset attributes. */
tty_update_mode(&c->tty, mode, s);
tty_reset(&c->tty);
+
+ /*
+ * All writing must be done, send a sync end (if it was started). It
+ * may have been started by redrawing so needs to go out even if the
+ * block flag is set.
+ */
+ flags = (c->tty.flags & TTY_BLOCK);
+ c->tty.flags &= ~TTY_BLOCK;
+ tty_sync_end(&c->tty);
+ c->tty.flags |= flags;
}
/* Repeat time callback. */