Refactor the innermost loop of the xdraws function - 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 c2fd2754ebea6f802e4c71219af269c58b78262e
 (DIR) parent 27b28f1dc264e9947ea22bd64fd8f00ac98442f5
 (HTM) Author: Silvan Jegen <s.jegen@gmail.com>
       Date:   Fri,  6 Jun 2014 22:09:22 +0200
       
       Refactor the innermost loop of the xdraws function
       
       Signed-off-by: Silvan Jegen <s.jegen@gmail.com>
       Signed-off-by: Christoph Lohmann <20h@r-36.net>
       
       Diffstat:
         M st.c                                |      34 +++++++++++++------------------
       
       1 file changed, 14 insertions(+), 20 deletions(-)
       ---
 (DIR) diff --git a/st.c b/st.c
       @@ -3245,28 +3245,22 @@ xdraws(char *s, Glyph base, int x, int y, int charlen, int bytelen) {
                                bytelen -= u8cblen;
        
                                doesexist = XftCharExists(xw.dpy, font->match, unicodep);
       -                        if(oneatatime || !doesexist || bytelen <= 0) {
       -                                if(oneatatime || bytelen <= 0) {
       -                                        if(doesexist) {
       -                                                u8fl++;
       -                                                u8fblen += u8cblen;
       -                                        }
       -                                }
       -
       -                                if(u8fl > 0) {
       -                                        XftDrawStringUtf8(xw.draw, fg,
       -                                                        font->match, xp,
       -                                                        winy + font->ascent,
       -                                                        (FcChar8 *)u8fs,
       -                                                        u8fblen);
       -                                        xp += xw.cw * u8fl;
       -
       -                                }
       -                                break;
       +                        if(doesexist) {
       +                                        u8fl++;
       +                                        u8fblen += u8cblen;
       +                                        if(!oneatatime && bytelen > 0)
       +                                                        continue;
                                }
        
       -                        u8fl++;
       -                        u8fblen += u8cblen;
       +                        if(u8fl > 0) {
       +                                XftDrawStringUtf8(xw.draw, fg,
       +                                                font->match, xp,
       +                                                winy + font->ascent,
       +                                                (FcChar8 *)u8fs,
       +                                                u8fblen);
       +                                xp += xw.cw * u8fl;
       +                        }
       +                        break;
                        }
                        if(doesexist) {
                                if(oneatatime)