Hi We should do it for all redraw functions. Does this work instead? Also fixes tty_draw_line.
Index: server-client.c =================================================================== RCS file: /cvs/src/usr.bin/tmux/server-client.c,v retrieving revision 1.136 diff -u -p -r1.136 server-client.c --- server-client.c 25 Apr 2015 18:33:59 -0000 1.136 +++ server-client.c 30 Apr 2015 07:37:23 -0000 @@ -875,14 +875,16 @@ void server_client_check_redraw(struct client *c) { struct session *s = c->session; + struct tty *tty = &c->tty; struct window_pane *wp; int flags, redraw; if (c->flags & (CLIENT_CONTROL|CLIENT_SUSPENDED)) return; - flags = c->tty.flags & TTY_FREEZE; - c->tty.flags &= ~TTY_FREEZE; + flags = tty->flags & (TTY_FREEZE|TTY_NOCURSOR); + tty->flags = (tty->flags & ~TTY_FREEZE) | TTY_NOCURSOR; + tty_update_mode(tty, tty->mode, NULL); if (c->flags & (CLIENT_REDRAW|CLIENT_STATUS)) { if (options_get_number(&s->options, "set-titles")) @@ -918,7 +920,8 @@ server_client_check_redraw(struct client if (c->flags & CLIENT_STATUS) screen_redraw_screen(c, 0, 1, 0); - c->tty.flags |= flags; + tty->flags = (tty->flags & ~(TTY_FREEZE|TTY_NOCURSOR)) | flags; + tty_update_mode(tty, tty->mode, NULL); c->flags &= ~(CLIENT_REDRAW|CLIENT_STATUS|CLIENT_BORDERS); } Index: tty.c =================================================================== RCS file: /cvs/src/usr.bin/tmux/tty.c,v retrieving revision 1.180 diff -u -p -r1.180 tty.c --- tty.c 29 Apr 2015 15:59:08 -0000 1.180 +++ tty.c 30 Apr 2015 07:37:23 -0000 @@ -500,7 +500,7 @@ tty_update_mode(struct tty *tty, int mod { int changed; - if (strcmp(s->ccolour, tty->ccolour)) + if (s != NULL && strcmp(s->ccolour, tty->ccolour)) tty_force_cursor_colour(tty, s->ccolour); if (tty->flags & TTY_NOCURSOR) @@ -517,7 +517,7 @@ tty_update_mode(struct tty *tty, int mod } else tty_putcode(tty, TTYC_CIVIS); } - if (tty->cstyle != s->cstyle) { + if (s != NULL && tty->cstyle != s->cstyle) { if (tty_term_has(tty->term, TTYC_SS)) { if (s->cstyle == 0 && tty_term_has(tty->term, TTYC_SE)) @@ -667,8 +667,11 @@ tty_draw_line(struct tty *tty, const str struct grid_cell tmpgc; struct utf8_data ud; u_int i, sx; + int flags; - tty_update_mode(tty, tty->mode & ~MODE_CURSOR, s); + flags = tty->flags & TTY_NOCURSOR; + tty->flags |= TTY_NOCURSOR; + tty_update_mode(tty, tty->mode, s); sx = screen_size_x(s); if (sx > s->grid->linedata[s->grid->hsize + py].cellsize) @@ -703,18 +706,20 @@ tty_draw_line(struct tty *tty, const str tty_cell(tty, gc, wp); } - if (sx >= tty->sx) { - tty_update_mode(tty, tty->mode, s); - return; + if (sx < tty->sx) { + tty_attributes(tty, &grid_default_cell, wp); + + tty_cursor(tty, ox + sx, oy + py); + if (sx != screen_size_x(s) && + ox + screen_size_x(s) >= tty->sx && + tty_term_has(tty->term, TTYC_EL) && + !tty_fake_bce(tty, wp)) + tty_putcode(tty, TTYC_EL); + else + tty_repeat_space(tty, screen_size_x(s) - sx); } - tty_attributes(tty, &grid_default_cell, wp); - tty_cursor(tty, ox + sx, oy + py); - if (sx != screen_size_x(s) && ox + screen_size_x(s) >= tty->sx && - tty_term_has(tty->term, TTYC_EL) && !tty_fake_bce(tty, wp)) - tty_putcode(tty, TTYC_EL); - else - tty_repeat_space(tty, screen_size_x(s) - sx); + tty->flags = (tty->flags & ~TTY_NOCURSOR) | flags; tty_update_mode(tty, tty->mode, s); } On Wed, Apr 29, 2015 at 10:03:18PM -0700, George Nachman wrote: > The attached patch hides the cursor while drawing borders between window > panes. > Most programs hide the cursor while redrawing their chrome because it's > ugly to see the cursor jumping around the screen. Better for it to > disappear for a moment. > Here is a video demonstrating the issue: > > [1]https://dl.dropboxusercontent.com/u/33889723/iterm2.9.20150429-nightly.mov > > References > > Visible links > 1. > https://dl.dropboxusercontent.com/u/33889723/iterm2.9.20150429-nightly.mov > ------------------------------------------------------------------------------ > One dashboard for servers and applications across Physical-Virtual-Cloud > Widest out-of-the-box monitoring support with 50+ applications > Performance metrics, stats and reports that give you Actionable Insights > Deep dive visibility with transaction tracing using APM Insight. > http://ad.doubleclick.net/ddm/clk/290420510;117567292;y > _______________________________________________ > tmux-users mailing list > tmux-users@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/tmux-users ------------------------------------------------------------------------------ One dashboard for servers and applications across Physical-Virtual-Cloud Widest out-of-the-box monitoring support with 50+ applications Performance metrics, stats and reports that give you Actionable Insights Deep dive visibility with transaction tracing using APM Insight. http://ad.doubleclick.net/ddm/clk/290420510;117567292;y _______________________________________________ tmux-users mailing list tmux-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/tmux-users