Do pane resize ioctls once at the end of the server loop rather than

immediately.
This commit is contained in:
Nicholas Marriott
2013-02-22 21:35:29 +00:00
parent ce7bf1083e
commit dbd8e47846
2 changed files with 33 additions and 18 deletions

View File

@ -855,32 +855,16 @@ window_pane_error_callback(
void
window_pane_resize(struct window_pane *wp, u_int sx, u_int sy)
{
struct winsize ws;
if (sx == wp->sx && sy == wp->sy)
return;
wp->sx = sx;
wp->sy = sy;
memset(&ws, 0, sizeof ws);
ws.ws_col = sx;
ws.ws_row = sy;
screen_resize(&wp->base, sx, sy, wp->saved_grid == NULL);
if (wp->mode != NULL)
wp->mode->resize(wp, sx, sy);
if (wp->fd != -1 && ioctl(wp->fd, TIOCSWINSZ, &ws) == -1)
#ifdef __sun
/*
* Some versions of Solaris apparently can return an error when
* resizing; don't know why this happens, can't reproduce on
* other platforms and ignoring it doesn't seem to cause any
* issues.
*/
if (errno != EINVAL)
#endif
fatal("ioctl failed");
wp->flags |= PANE_RESIZE;
}
/*