mirror of
				https://github.com/tmux/tmux.git
				synced 2025-11-04 09:26:05 +00:00 
			
		
		
		
	Bring back previons fix to only redraw panes that need it after a redraw
is deferred, but clear the pane flags when they are actually redrawn rather than every time.
This commit is contained in:
		
							
								
								
									
										10
									
								
								tty.c
									
									
									
									
									
								
							
							
						
						
									
										10
									
								
								tty.c
									
									
									
									
									
								
							@@ -944,6 +944,7 @@ tty_fake_bce(const struct tty *tty, struct window_pane *wp, u_int bg)
 | 
			
		||||
static void
 | 
			
		||||
tty_redraw_region(struct tty *tty, const struct tty_ctx *ctx)
 | 
			
		||||
{
 | 
			
		||||
	struct client		*c = tty->client;
 | 
			
		||||
	struct window_pane	*wp = ctx->wp;
 | 
			
		||||
	struct screen		*s = wp->screen;
 | 
			
		||||
	u_int			 i;
 | 
			
		||||
@@ -953,6 +954,7 @@ tty_redraw_region(struct tty *tty, const struct tty_ctx *ctx)
 | 
			
		||||
	 * likely to be followed by some more scrolling.
 | 
			
		||||
	 */
 | 
			
		||||
	if (tty_large_region(tty, ctx)) {
 | 
			
		||||
		log_debug("%s: %s, large redraw of %%%u", __func__, c->name, wp->id);
 | 
			
		||||
		wp->flags |= PANE_REDRAW;
 | 
			
		||||
		return;
 | 
			
		||||
	}
 | 
			
		||||
@@ -1484,6 +1486,14 @@ tty_write(void (*cmdfn)(struct tty *, const struct tty_ctx *),
 | 
			
		||||
	TAILQ_FOREACH(c, &clients, entry) {
 | 
			
		||||
		if (!tty_client_ready(c, wp))
 | 
			
		||||
			continue;
 | 
			
		||||
		if (c->flags & CLIENT_REDRAWPANES) {
 | 
			
		||||
			/*
 | 
			
		||||
			 * Redraw is already deferred to redraw another pane -
 | 
			
		||||
			 * redraw this one also when that happens.
 | 
			
		||||
			 */
 | 
			
		||||
			wp->flags |= PANE_REDRAW;
 | 
			
		||||
			break;
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		ctx->bigger = tty_window_offset(&c->tty, &ctx->ox, &ctx->oy,
 | 
			
		||||
		    &ctx->sx, &ctx->sy);
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user