st
simple terminal
git clone https://9o.is/git/st.git
commit 1e0a91933fe68edc630474f09231a7d1248dee5b parent f73788cc4240b151c3a987063176450a0f994138 Author: Roberto E. Vargas Caballero <k0ga@shike2.com> Date: Sat, 20 Jul 2013 21:52:40 +0200 Reload colors in reset Colors definition can be changed using a OSC sequence, so we have to reload them if we want be sure all the colors are the correct. Could be desirable free the colors allocated due to rgb colors and inverse colors (XftColorAllocValues in xdraws), but it is impossible due we use the same structure for all of them. Diffstat:
| M | st.c | | | 9 | +++++++++ |
1 file changed, 9 insertions(+), 0 deletions(-)
diff --git a/st.c b/st.c @@ -2428,6 +2428,7 @@ tputc(char *c, int len) { treset(); term.esc = 0; xresettitle(); + xloadcols(); break; case '=': /* DECPAM -- Application keypad */ term.mode |= MODE_APPKEYPAD; @@ -2589,6 +2590,13 @@ void xloadcols(void) { int i, r, g, b; XRenderColor color = { .alpha = 0xffff }; + static bool loaded; + Colour *cp; + + if(loaded) { + for (cp = dc.col; cp < dc.col + LEN(dc.col); ++cp) + XftColorFree(xw.dpy, xw.vis, xw.cmap, cp); + } /* load colors [0-15] colors and [256-LEN(colorname)[ (config.h) */ for(i = 0; i < LEN(colorname); i++) { @@ -2621,6 +2629,7 @@ xloadcols(void) { die("Could not allocate color %d\n", i); } } + loaded = true; } int