Just use one RenderColor-object. We don't need a round-trip. Stay tuned for Episode III. ;)
-- FRIGN <d...@frign.de>
>From 48205a6cd122717671f051209b8d1a73c4c5e2f4 Mon Sep 17 00:00:00 2001 From: FRIGN <d...@frign.de> Date: Sat, 7 Jun 2014 18:55:20 +0200 Subject: [PATCH] Refactor xdraws() - Episode II Remove the number of temporary RenderColor-Objects and just use one. --- st.c | 40 +++++++++++++++++++--------------------- 1 file changed, 19 insertions(+), 21 deletions(-) diff --git a/st.c b/st.c index ba0bf72..f8c7afa 100644 --- a/st.c +++ b/st.c @@ -3108,7 +3108,7 @@ xdraws(char *s, Glyph base, int x, int y, int charlen, int bytelen) { FcFontSet *fcsets[] = { NULL }; FcCharSet *fccharset; Color *fg, *bg, *temp, revfg, revbg, truefg, truebg; - XRenderColor colfg, colbg; + XRenderColor color = { .alpha = 0xffff }; XRectangle r; int oneatatime; @@ -3134,22 +3134,20 @@ xdraws(char *s, Glyph base, int x, int y, int charlen, int bytelen) { } if(IS_TRUECOL(base.fg)) { - colfg.alpha = 0xffff; - colfg.red = TRUERED(base.fg); - colfg.green = TRUEGREEN(base.fg); - colfg.blue = TRUEBLUE(base.fg); - XftColorAllocValue(xw.dpy, xw.vis, xw.cmap, &colfg, &truefg); + color.red = TRUERED(base.fg); + color.green = TRUEGREEN(base.fg); + color.blue = TRUEBLUE(base.fg); + XftColorAllocValue(xw.dpy, xw.vis, xw.cmap, &color, &truefg); fg = &truefg; } else { fg = &dc.col[base.fg]; } if(IS_TRUECOL(base.bg)) { - colbg.alpha = 0xffff; - colbg.green = TRUEGREEN(base.bg); - colbg.red = TRUERED(base.bg); - colbg.blue = TRUEBLUE(base.bg); - XftColorAllocValue(xw.dpy, xw.vis, xw.cmap, &colbg, &truebg); + color.green = TRUEGREEN(base.bg); + color.red = TRUERED(base.bg); + color.blue = TRUEBLUE(base.bg); + XftColorAllocValue(xw.dpy, xw.vis, xw.cmap, &color, &truebg); bg = &truebg; } else { bg = &dc.col[base.bg]; @@ -3159,11 +3157,11 @@ xdraws(char *s, Glyph base, int x, int y, int charlen, int bytelen) { if(fg == &dc.col[defaultfg]) { fg = &dc.col[defaultbg]; } else { - colfg.red = ~fg->color.red; - colfg.green = ~fg->color.green; - colfg.blue = ~fg->color.blue; - colfg.alpha = fg->color.alpha; - XftColorAllocValue(xw.dpy, xw.vis, xw.cmap, &colfg, + color.red = ~fg->color.red; + color.green = ~fg->color.green; + color.blue = ~fg->color.blue; + color.alpha = fg->color.alpha; + XftColorAllocValue(xw.dpy, xw.vis, xw.cmap, &color, &revfg); fg = &revfg; } @@ -3171,11 +3169,11 @@ xdraws(char *s, Glyph base, int x, int y, int charlen, int bytelen) { if(bg == &dc.col[defaultbg]) { bg = &dc.col[defaultfg]; } else { - colbg.red = ~bg->color.red; - colbg.green = ~bg->color.green; - colbg.blue = ~bg->color.blue; - colbg.alpha = bg->color.alpha; - XftColorAllocValue(xw.dpy, xw.vis, xw.cmap, &colbg, + color.red = ~bg->color.red; + color.green = ~bg->color.green; + color.blue = ~bg->color.blue; + color.alpha = bg->color.alpha; + XftColorAllocValue(xw.dpy, xw.vis, xw.cmap, &color, &revbg); bg = &revbg; } -- 1.8.5.5