Merge branch 'obsd-master' into master

This commit is contained in:
Thomas Adam 2021-08-17 10:01:19 +01:00
commit 0dad8dd982
2 changed files with 29 additions and 5 deletions

View File

@ -197,9 +197,20 @@ screen_write_initctx(struct screen_write_ctx *ctx, struct tty_ctx *ttyctx,
} }
} }
if (ctx->wp != NULL && if (~ctx->flags & SCREEN_WRITE_SYNC) {
(~ctx->flags & SCREEN_WRITE_SYNC) && /*
(sync || ctx->wp != ctx->wp->window->active)) { * For the active pane or for an overlay (no pane), we want to
* only use synchronized updates if requested (commands that
* move the cursor); for other panes, always use it, since the
* cursor will have to move.
*/
if (ctx->wp != NULL) {
if (ctx->wp != ctx->wp->window->active)
ttyctx->num = 1;
else
ttyctx->num = sync;
} else
ttyctx->num = 0x10|sync;
tty_write(tty_cmd_syncstart, ttyctx); tty_write(tty_cmd_syncstart, ttyctx);
ctx->flags |= SCREEN_WRITE_SYNC; ctx->flags |= SCREEN_WRITE_SYNC;
} }

17
tty.c
View File

@ -2039,9 +2039,22 @@ tty_cmd_rawstring(struct tty *tty, const struct tty_ctx *ctx)
} }
void void
tty_cmd_syncstart(struct tty *tty, __unused const struct tty_ctx *ctx) tty_cmd_syncstart(struct tty *tty, const struct tty_ctx *ctx)
{ {
tty_sync_start(tty); if (ctx->num == 0x11) {
/*
* This is an overlay and a command that moves, the cursor so
* start synchronized updates.
*/
tty_sync_start(tty);
} else if (~ctx->num & 0x10) {
/*
* This is a pane. If there is an overlay, always start;
* otherwise, only if requested.
*/
if (ctx->num || tty->client->overlay_draw != NULL)
tty_sync_start(tty);
}
} }
void void