Reload colors in reset - st - Personal fork of st
 (HTM) git clone git://git.drkhsh.at/st.git
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) README
 (DIR) LICENSE
       ---
 (DIR) commit aaee0e8b28a353c215b6d1c8fc06d20038d7b426
 (DIR) parent 8dde8cde41caa311718d2b990ea3356272ee25ee
 (HTM) 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(-)
       ---
 (DIR) 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