diff options
author | nicm <nicm> | 2017-03-07 13:48:28 +0000 |
---|---|---|
committer | nicm <nicm> | 2017-03-07 13:48:28 +0000 |
commit | 1e6e606f54537c732cce48e5d3eae7fc29281fe5 (patch) | |
tree | 8d312b40f23f0a2c1231231a4df7272f41028bb0 | |
parent | daac28febb16f174a192d3e760e9790601e61b3d (diff) | |
download | rtmux-1e6e606f54537c732cce48e5d3eae7fc29281fe5.tar.gz rtmux-1e6e606f54537c732cce48e5d3eae7fc29281fe5.tar.bz2 rtmux-1e6e606f54537c732cce48e5d3eae7fc29281fe5.zip |
Need to flush before writing out cells we are not collecting, also add
some extra logging.
-rw-r--r-- | screen-write.c | 17 |
1 files changed, 12 insertions, 5 deletions
diff --git a/screen-write.c b/screen-write.c index d9d37437..1af3b32f 100644 --- a/screen-write.c +++ b/screen-write.c @@ -1030,8 +1030,9 @@ screen_write_collect_flush(struct screen_write_ctx *ctx, int scroll_only) { struct screen *s = ctx->s; struct screen_write_collect_item *ci, *tmp; - u_int y, cx, cy; + u_int y, cx, cy, items = 0; struct tty_ctx ttyctx; + size_t written = 0; if (ctx->scrolled != 0) { log_debug("%s: scrolled %u (region %u-%u)", __func__, @@ -1056,13 +1057,18 @@ screen_write_collect_flush(struct screen_write_ctx *ctx, int scroll_only) ttyctx.ptr = ci->data; ttyctx.num = ci->used; tty_write(tty_cmd_cells, &ttyctx); - ctx->written += ci->used; + + items++; + written += ci->used; TAILQ_REMOVE(&ctx->list[y].items, ci, entry); free(ci); } } s->cx = cx; s->cy = cy; + + log_debug("%s: flushed %u items (%zu bytes)", __func__, items, written); + ctx->written += written; } /* Finish and store collected cells. */ @@ -1101,9 +1107,9 @@ screen_write_collect_add(struct screen_write_ctx *ctx, /* * Don't need to check that the attributes and whatnot are still the - * same - input_parse will do a flush when anything that isn't a plain - * character is encountered. Also nothing should make it here that - * isn't a single ASCII character. + * same - input_parse will end the collection when anything that isn't + * a plain character is encountered. Also nothing should make it here + * that isn't a single ASCII character. */ collect = 1; @@ -1119,6 +1125,7 @@ screen_write_collect_add(struct screen_write_ctx *ctx, collect = 0; if (!collect) { screen_write_collect_end(ctx); + screen_write_collect_flush(ctx, 0); screen_write_cell(ctx, gc); return; } |