This should avoid re-laying out the text unnecessarily.
---
WINGs/wfont.c | 9 ++++++---
1 file changed, 6 insertions(+), 3 deletions(-)
diff --git a/WINGs/wfont.c b/WINGs/wfont.c
index 5416a43..32bb613 100644
--- a/WINGs/wfont.c
+++ b/WINGs/wfont.c
@@ -293,7 +293,8 @@ int WMWidthOfString(WMFont * font, const char *text, int
length)
wassertrv(font != NULL && text != NULL, 0);
#ifdef USE_PANGO
- pango_layout_set_text(font->layout, text, length);
+ if (strcmp(text, pango_layout_get_text(font->layout)) != 0)
+ pango_layout_set_text(font->layout, text, length);
pango_layout_get_pixel_size(font->layout, &width, NULL);
return width;
@@ -319,7 +320,8 @@ void WMDrawString(WMScreen * scr, Drawable d, WMColor *
color, WMFont * font, in
XftDrawChange(scr->xftdraw, d);
#ifdef USE_PANGO
- pango_layout_set_text(font->layout, text, length);
+ if (strcmp(text, pango_layout_get_text(font->layout)) != 0)
+ pango_layout_set_text(font->layout, text, length);
pango_xft_render_layout(scr->xftdraw, &xftcolor, font->layout, x *
PANGO_SCALE, y * PANGO_SCALE);
#else
XftDrawStringUtf8(scr->xftdraw, &xftcolor, font->font, x, y + font->y,
(XftChar8 *) text, length);
@@ -352,7 +354,8 @@ WMDrawImageString(WMScreen * scr, Drawable d, WMColor *
color, WMColor * backgro
XftDrawRect(scr->xftdraw, &bgColor, x, y, WMWidthOfString(font, text,
length), font->height);
#ifdef USE_PANGO
- pango_layout_set_text(font->layout, text, length);
+ if (strcmp(text, pango_layout_get_text(font->layout)) != 0)
+ pango_layout_set_text(font->layout, text, length);
pango_xft_render_layout(scr->xftdraw, &textColor, font->layout, x *
PANGO_SCALE, y * PANGO_SCALE);
#else
XftDrawStringUtf8(scr->xftdraw, &textColor, font->font, x, y + font->y,
(XftChar8 *) text, length);
--
2.1.2
--
To unsubscribe, send mail to [email protected].