From 5924892bbe63e1338b314521009ecc7c31009d2e 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: