version 1.324, 2020/04/18 06:52:36 |
version 1.325, 2020/04/18 07:32:53 |
|
|
if (resize) |
if (resize) |
server_client_check_resize(wp); |
server_client_check_resize(wp); |
} |
} |
wp->flags &= ~PANE_REDRAW; |
|
} |
} |
check_window_name(w); |
check_window_name(w); |
} |
} |
|
|
struct session *s = c->session; |
struct session *s = c->session; |
struct tty *tty = &c->tty; |
struct tty *tty = &c->tty; |
struct window_pane *wp; |
struct window_pane *wp; |
int needed, flags, mode = tty->mode; |
int needed, flags, mode = tty->mode, new_flags = 0; |
struct timeval tv = { .tv_usec = 1000 }; |
struct timeval tv = { .tv_usec = 1000 }; |
static struct event ev; |
static struct event ev; |
size_t left; |
size_t left; |
|
|
if (c->flags & (CLIENT_CONTROL|CLIENT_SUSPENDED)) |
if (c->flags & (CLIENT_CONTROL|CLIENT_SUSPENDED)) |
return; |
return; |
if (c->flags & CLIENT_ALLREDRAWFLAGS) { |
if (c->flags & CLIENT_ALLREDRAWFLAGS) { |
log_debug("%s: redraw%s%s%s%s", c->name, |
log_debug("%s: redraw%s%s%s%s%s", c->name, |
(c->flags & CLIENT_REDRAWWINDOW) ? " window" : "", |
(c->flags & CLIENT_REDRAWWINDOW) ? " window" : "", |
(c->flags & CLIENT_REDRAWSTATUS) ? " status" : "", |
(c->flags & CLIENT_REDRAWSTATUS) ? " status" : "", |
(c->flags & CLIENT_REDRAWBORDERS) ? " borders" : "", |
(c->flags & CLIENT_REDRAWBORDERS) ? " borders" : "", |
(c->flags & CLIENT_REDRAWOVERLAY) ? " overlay" : ""); |
(c->flags & CLIENT_REDRAWOVERLAY) ? " overlay" : "", |
|
(c->flags & CLIENT_REDRAWPANES) ? " panes" : ""); |
} |
} |
|
|
/* |
/* |
|
|
break; |
break; |
} |
} |
} |
} |
|
if (needed) |
|
new_flags |= CLIENT_REDRAWPANES; |
} |
} |
if (needed && (left = EVBUFFER_LENGTH(tty->out)) != 0) { |
if (needed && (left = EVBUFFER_LENGTH(tty->out)) != 0) { |
log_debug("%s: redraw deferred (%zu left)", c->name, left); |
log_debug("%s: redraw deferred (%zu left)", c->name, left); |
|
|
log_debug("redraw timer started"); |
log_debug("redraw timer started"); |
evtimer_add(&ev, &tv); |
evtimer_add(&ev, &tv); |
} |
} |
|
c->flags |= new_flags; |
/* |
|
* We may have got here for a single pane redraw, but force a |
|
* full redraw next time in case other panes have been updated. |
|
*/ |
|
c->flags |= CLIENT_ALLREDRAWFLAGS; |
|
return; |
return; |
} else if (needed) |
} else if (needed) |
log_debug("%s: redraw needed", c->name); |
log_debug("%s: redraw needed", c->name); |
|
|
screen_redraw_pane(c, wp); |
screen_redraw_pane(c, wp); |
} |
} |
} |
} |
|
c->flags &= ~CLIENT_REDRAWPANES; |
} |
} |
|
|
if (c->flags & CLIENT_ALLREDRAWFLAGS) { |
if (c->flags & CLIENT_ALLREDRAWFLAGS) { |