From edb904a1877324ae4977c8a38596487518c9e1a8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Ekl=C3=B6f?= Date: Tue, 29 Sep 2020 10:05:52 +0200 Subject: [PATCH] =?UTF-8?q?osc:=20don=E2=80=99t=20explicitly=20call=20rend?= =?UTF-8?q?er=5Frefresh()=20when=20changing=20the=20color=20palette?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Doing so will schedule the renderer “as soon as possible”. I.e we’re by-passing the regular scheduler, and thus we’re by-passing the user’s setting of the delayed-render-* timers. The fact that we’re scheduling “as soon as possible” also means we’re much more likely to trigger flickering, or color flashes, if the application is changing colors which are on the screen. To handle changes to the cursor color(s), use the new term_damage_cursor() instead of render_refresh(). To handle background color changes, which affect the margins, use the new term_damage_margins() instead of render_refresh_margins(), Closes #141 --- osc.c | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-) diff --git a/osc.c b/osc.c index 7e22d7c1..384cf401 100644 --- a/osc.c +++ b/osc.c @@ -589,7 +589,6 @@ osc_dispatch(struct terminal *term) } } - render_refresh(term); break; } @@ -635,8 +634,7 @@ osc_dispatch(struct terminal *term) } term_damage_view(term); - render_refresh(term); - render_refresh_margins(term); + term_damage_margins(term); break; } @@ -664,7 +662,8 @@ osc_dispatch(struct terminal *term) term->cursor_color.cursor = 0; /* Invert fg/bg */ else term->cursor_color.cursor = 1u << 31 | color; - render_refresh(term); + + term_damage_cursor(term); break; case 30: /* Set tab title */ @@ -705,7 +704,6 @@ osc_dispatch(struct terminal *term) } } - render_refresh(term); break; } @@ -716,22 +714,20 @@ osc_dispatch(struct terminal *term) LOG_DBG("resetting foreground"); term->colors.fg = term->colors.default_fg; term_damage_view(term); - render_refresh(term); break; case 111: /* Reset default text background color */ LOG_DBG("resetting background"); term->colors.bg = term->colors.default_bg; term_damage_view(term); - render_refresh(term); - render_refresh_margins(term); + term_damage_margins(term); break; case 112: LOG_DBG("resetting cursor color"); term->cursor_color.text = term->default_cursor_color.text; term->cursor_color.cursor = term->default_cursor_color.cursor; - render_refresh(term); + term_damage_cursor(term); break; case 555: