=================================================================== RCS file: /cvsrepo/anoncvs/cvs/src/usr.bin/tmux/window-client.c,v retrieving revision 1.10 retrieving revision 1.11 diff -u -r1.10 -r1.11 --- src/usr.bin/tmux/window-client.c 2017/11/02 21:29:17 1.10 +++ src/usr.bin/tmux/window-client.c 2017/11/02 22:00:42 1.11 @@ -1,4 +1,4 @@ -/* $OpenBSD: window-client.c,v 1.10 2017/11/02 21:29:17 nicm Exp $ */ +/* $OpenBSD: window-client.c,v 1.11 2017/11/02 22:00:42 nicm Exp $ */ /* * Copyright (c) 2017 Nicholas Marriott @@ -210,37 +210,29 @@ } } -static struct screen * -window_client_draw(__unused void *modedata, void *itemdata, u_int sx, u_int sy) +static void +window_client_draw(__unused void *modedata, void *itemdata, + struct screen_write_ctx *ctx, u_int sx, u_int sy) { struct window_client_itemdata *item = itemdata; struct client *c = item->c; struct window_pane *wp; - static struct screen s; - struct screen_write_ctx ctx; + u_int cx = ctx->s->cx, cy = ctx->s->cy; if (c->session == NULL || (c->flags & (CLIENT_DEAD|CLIENT_DETACHING))) - return (NULL); + return; wp = c->session->curw->window->active; - screen_init(&s, sx, sy, 0); + screen_write_preview(ctx, &wp->base, sx, sy - 3); - screen_write_start(&ctx, NULL, &s); - screen_write_clearscreen(&ctx, 8); + screen_write_cursormove(ctx, cx, cy + sy - 2); + screen_write_hline(ctx, sx, 0, 0); - screen_write_preview(&ctx, &wp->base, sx, sy - 3); - - screen_write_cursormove(&ctx, 0, sy - 2); - screen_write_hline(&ctx, sx, 0, 0); - - screen_write_cursormove(&ctx, 0, sy - 1); + screen_write_cursormove(ctx, cx, cy + sy - 1); if (c->old_status != NULL) - screen_write_fast_copy(&ctx, c->old_status, 0, 0, sx, 1); + screen_write_fast_copy(ctx, c->old_status, 0, 0, sx, 1); else - screen_write_fast_copy(&ctx, &c->status, 0, 0, sx, 1); - - screen_write_stop(&ctx); - return (&s); + screen_write_fast_copy(ctx, &c->status, 0, 0, sx, 1); } static struct screen *