=================================================================== RCS file: /cvsrepo/anoncvs/cvs/src/usr.bin/tmux/server-client.c,v retrieving revision 1.240 retrieving revision 1.241 diff -u -r1.240 -r1.241 --- src/usr.bin/tmux/server-client.c 2017/07/12 09:07:52 1.240 +++ src/usr.bin/tmux/server-client.c 2017/07/14 08:04:23 1.241 @@ -1,4 +1,4 @@ -/* $OpenBSD: server-client.c,v 1.240 2017/07/12 09:07:52 nicm Exp $ */ +/* $OpenBSD: server-client.c,v 1.241 2017/07/14 08:04:23 nicm Exp $ */ /* * Copyright (c) 2009 Nicholas Marriott @@ -1321,28 +1321,23 @@ } } } - if (needed) { - left = EVBUFFER_LENGTH(tty->out); - if (left != 0) { - log_debug("%s: redraw deferred (%zu left)", c->name, left); - if (evtimer_initialized(&ev) && evtimer_pending(&ev, NULL)) - return; - log_debug("redraw timer started"); + if (needed && (left = EVBUFFER_LENGTH(tty->out)) != 0) { + log_debug("%s: redraw deferred (%zu left)", c->name, left); + if (!evtimer_initialized(&ev)) evtimer_set(&ev, server_client_redraw_timer, NULL); + if (!evtimer_pending(&ev, NULL)) { + log_debug("redraw timer started"); evtimer_add(&ev, &tv); - - /* - * We may have got here for a single pane redraw, but - * force a full redraw next time in case other panes - * have been updated. - */ - c->flags |= CLIENT_REDRAW; - return; } - if (evtimer_initialized(&ev)) - evtimer_del(&ev); + + /* + * We may have got here for a single pane redraw, but force a + * full redraw next time in case other panes have been updated. + */ + c->flags |= CLIENT_REDRAW; + return; + } else if (needed) log_debug("%s: redraw needed", c->name); - } if (c->flags & (CLIENT_REDRAW|CLIENT_STATUS)) { if (options_get_number(s->options, "set-titles"))