Store xpixel/ypixel from TIOCGWINSZ and add formats.

This commit is contained in:
nicm
2019-11-28 09:05:34 +00:00
parent 7fb8eec8f1
commit 067604bf8c
5 changed files with 26 additions and 9 deletions

23
tty.c
View File

@ -127,29 +127,40 @@ tty_resize(struct tty *tty)
{
struct client *c = tty->client;
struct winsize ws;
u_int sx, sy;
u_int sx, sy, xpixel, ypixel;
if (ioctl(tty->fd, TIOCGWINSZ, &ws) != -1) {
sx = ws.ws_col;
if (sx == 0)
if (sx == 0) {
sx = 80;
xpixel = 0;
} else
xpixel = ws.ws_xpixel / sx;
sy = ws.ws_row;
if (sy == 0)
if (sy == 0) {
sy = 24;
ypixel = 0;
} else
ypixel = ws.ws_ypixel / sy;
} else {
sx = 80;
sy = 24;
xpixel = 0;
ypixel = 0;
}
log_debug("%s: %s now %ux%u", __func__, c->name, sx, sy);
tty_set_size(tty, sx, sy);
log_debug("%s: %s now %ux%u (%ux%u)", __func__, c->name, sx, sy,
xpixel, ypixel);
tty_set_size(tty, sx, sy, xpixel, ypixel);
tty_invalidate(tty);
}
void
tty_set_size(struct tty *tty, u_int sx, u_int sy)
tty_set_size(struct tty *tty, u_int sx, u_int sy, u_int xpixel, u_int ypixel)
{
tty->sx = sx;
tty->sy = sy;
tty->xpixel = xpixel;
tty->ypixel = ypixel;
}
static void