faster resizing. - 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 4db3df312ada9d92564d5580fb4e67f7704efff8
 (DIR) parent e8c13ebe8001a7870a70b698d8b8fa80b7c90fd3
 (HTM) Author: Aurélien Aptel <aurelien.aptel@gmail.com>
       Date:   Thu, 26 Aug 2010 21:37:12 +0200
       
       faster resizing.
       
       Diffstat:
         M st.c                                |      21 +++++++++------------
       
       1 file changed, 9 insertions(+), 12 deletions(-)
       ---
 (DIR) diff --git a/st.c b/st.c
       @@ -1001,23 +1001,21 @@ tputs(char *s, int len) {
        void
        tresize(int col, int row) {
                int i;
       -        Line *line;
                int minrow = MIN(row, term.row);
                int mincol = MIN(col, term.col);
        
                if(col < 1 || row < 1)
                        return;
       -        /* alloc */
       -        line = calloc(row, sizeof(Line));
       -        for(i = 0 ; i < row; i++)
       -                line[i] = calloc(col, sizeof(Glyph));
       -        /* copy */
       -        for(i = 0 ; i < minrow; i++)
       -                memcpy(line[i], term.line[i], mincol * sizeof(Glyph));
       -        /* free */
       -        for(i = 0; i < term.row; i++)
       +
       +        for(i = row; i < term.row; i++)
                        free(term.line[i]);
       -        free(term.line);
       +        term.line = realloc(term.line, row * sizeof(Line));
       +        for(i = 0; i < minrow; i++) {
       +                term.line[i] = realloc(term.line[i], col * sizeof(Glyph));
       +                memset(term.line[i] + mincol, 0, (col - mincol) * sizeof(Glyph));
       +        }
       +        for(/* i == minrow */; i < row; i++)
       +                term.line[i] = calloc(col, sizeof(Glyph));
                
                LIMIT(term.c.x, 0, col-1);
                LIMIT(term.c.y, 0, row-1);
       @@ -1025,7 +1023,6 @@ tresize(int col, int row) {
                LIMIT(term.bot, 0, row-1);
                
                term.bot = row-1;
       -        term.line = line;
                term.col = col, term.row = row;
        }