1
0
mirror of https://github.com/openbsd/src.git synced 2026-06-18 07:13:36 +02:00

If the client is blocked, defer the redraw because it may end up

partially discarded leading to redraw artifacts.
This commit is contained in:
nicm
2026-06-15 15:05:12 +00:00
parent 9bd110165a
commit 071960dc61
+8 -3
View File
@@ -1,4 +1,4 @@
/* $OpenBSD: server-client.c,v 1.469 2026/06/15 08:16:05 nicm Exp $ */
/* $OpenBSD: server-client.c,v 1.470 2026/06/15 15:05:12 nicm Exp $ */
/*
* Copyright (c) 2009 Nicholas Marriott <nicholas.marriott@gmail.com>
@@ -2051,8 +2051,13 @@ server_client_check_redraw(struct client *c)
}
}
}
if (needed && (left = EVBUFFER_LENGTH(tty->out)) != 0) {
log_debug("%s: redraw deferred (%zu left)", c->name, left);
left = EVBUFFER_LENGTH(tty->out);
if (needed && (left != 0 || (tty->flags & TTY_BLOCK))) {
if (left != 0) {
log_debug("%s: redraw deferred (%zu left)", c->name,
left);
} else
log_debug("%s: redraw deferred (blocked)", c->name);
if (!evtimer_initialized(&ev))
evtimer_set(&ev, server_client_redraw_timer, NULL);
if (!evtimer_pending(&ev, NULL)) {