diff --git a/screen-write.c b/screen-write.c index 55864e67..28abc6dc 100644 --- a/screen-write.c +++ b/screen-write.c @@ -2678,7 +2678,7 @@ screen_write_cell(struct screen_write_ctx *ctx, const struct grid_cell *gc) if (ri->nx == 0) continue; for (n = 0; n < ri->nx; n++) { - ttyctx.ocx = ri->px + n; + ttyctx.ocx = (int)ri->px - xoff + (int)n; tty_write(tty_cmd_cell, &ttyctx); } } diff --git a/server-client.c b/server-client.c index aaecf47e..fff93808 100644 --- a/server-client.c +++ b/server-client.c @@ -2047,8 +2047,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)) {