mirror of
				https://github.com/tmux/tmux.git
				synced 2025-11-04 00:56:10 +00:00 
			
		
		
		
	It is not OK to ignore SIGWINCH if SIOCGWINSZ reports the size has
unchanged, because it may have changed and changed back in the time between us getting the signal and calling ioctl(). Always redraw when we see SIGWINCH.
This commit is contained in:
		@@ -1451,10 +1451,9 @@ server_client_dispatch(struct imsg *imsg, void *arg)
 | 
			
		||||
 | 
			
		||||
		if (c->flags & CLIENT_CONTROL)
 | 
			
		||||
			break;
 | 
			
		||||
		if (tty_resize(&c->tty)) {
 | 
			
		||||
			recalculate_sizes();
 | 
			
		||||
			server_redraw_client(c);
 | 
			
		||||
		}
 | 
			
		||||
		tty_resize(&c->tty);
 | 
			
		||||
		recalculate_sizes();
 | 
			
		||||
		server_redraw_client(c);
 | 
			
		||||
		if (c->session != NULL)
 | 
			
		||||
			notify_client("client-resized", c);
 | 
			
		||||
		break;
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										4
									
								
								tmux.h
									
									
									
									
									
								
							
							
						
						
									
										4
									
								
								tmux.h
									
									
									
									
									
								
							@@ -1661,8 +1661,8 @@ void	tty_puts(struct tty *, const char *);
 | 
			
		||||
void	tty_putc(struct tty *, u_char);
 | 
			
		||||
void	tty_putn(struct tty *, const void *, size_t, u_int);
 | 
			
		||||
int	tty_init(struct tty *, struct client *, int, char *);
 | 
			
		||||
int	tty_resize(struct tty *);
 | 
			
		||||
int	tty_set_size(struct tty *, u_int, u_int);
 | 
			
		||||
void	tty_resize(struct tty *);
 | 
			
		||||
void	tty_set_size(struct tty *, u_int, u_int);
 | 
			
		||||
void	tty_start_tty(struct tty *);
 | 
			
		||||
void	tty_stop_tty(struct tty *);
 | 
			
		||||
void	tty_set_title(struct tty *, const char *);
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										12
									
								
								tty.c
									
									
									
									
									
								
							
							
						
						
									
										12
									
								
								tty.c
									
									
									
									
									
								
							@@ -120,7 +120,7 @@ tty_init(struct tty *tty, struct client *c, int fd, char *term)
 | 
			
		||||
	return (0);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
int
 | 
			
		||||
void
 | 
			
		||||
tty_resize(struct tty *tty)
 | 
			
		||||
{
 | 
			
		||||
	struct client	*c = tty->client;
 | 
			
		||||
@@ -139,21 +139,15 @@ tty_resize(struct tty *tty)
 | 
			
		||||
		sy = 24;
 | 
			
		||||
	}
 | 
			
		||||
	log_debug("%s: %s now %ux%u", __func__, c->name, sx, sy);
 | 
			
		||||
 | 
			
		||||
	if (!tty_set_size(tty, sx, sy))
 | 
			
		||||
		return (0);
 | 
			
		||||
	tty_set_size(tty, sx, sy);
 | 
			
		||||
	tty_invalidate(tty);
 | 
			
		||||
	return (1);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
int
 | 
			
		||||
void
 | 
			
		||||
tty_set_size(struct tty *tty, u_int sx, u_int sy)
 | 
			
		||||
{
 | 
			
		||||
	if (sx == tty->sx && sy == tty->sy)
 | 
			
		||||
		return (0);
 | 
			
		||||
	tty->sx = sx;
 | 
			
		||||
	tty->sy = sy;
 | 
			
		||||
	return (1);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static void
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user