From 071960dc616b9e948a419a5cb668ada5cab3ccd9 Mon Sep 17 00:00:00 2001 From: nicm Date: Mon, 15 Jun 2026 15:05:12 +0000 Subject: [PATCH] If the client is blocked, defer the redraw because it may end up partially discarded leading to redraw artifacts. --- usr.bin/tmux/server-client.c | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/usr.bin/tmux/server-client.c b/usr.bin/tmux/server-client.c index da2ee9620bd..493cca544be 100644 --- a/usr.bin/tmux/server-client.c +++ b/usr.bin/tmux/server-client.c @@ -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 @@ -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)) {