Nikolay Sivov : dwrite: Add flag for cached advance presence.
Alexandre Julliard
julliard at winehq.org
Tue Dec 7 15:58:44 CST 2021
Module: wine
Branch: master
Commit: 74e951a73ed74557407cde5da69d5aa724eae120
URL: https://source.winehq.org/git/wine.git/?a=commit;h=74e951a73ed74557407cde5da69d5aa724eae120
Author: Nikolay Sivov <nsivov at codeweavers.com>
Date: Tue Dec 7 15:59:43 2021 +0300
dwrite: Add flag for cached advance presence.
Signed-off-by: Nikolay Sivov <nsivov at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>
---
dlls/dwrite/font.c | 11 ++++++++---
1 file changed, 8 insertions(+), 3 deletions(-)
diff --git a/dlls/dwrite/font.c b/dlls/dwrite/font.c
index f6ac43e65ac..76abedde770 100644
--- a/dlls/dwrite/font.c
+++ b/dlls/dwrite/font.c
@@ -66,6 +66,7 @@ struct cache_entry
struct cache_key key;
float advance;
unsigned int has_contours : 1;
+ unsigned int has_advance : 1;
};
static struct cache_entry * fontface_get_cache_entry(struct dwrite_fontface *fontface, const struct cache_key *key)
@@ -97,9 +98,6 @@ static float fontface_get_glyph_advance(struct dwrite_fontface *fontface, float
{
if (!(entry = calloc(1, sizeof(*entry))))
return 0.0f;
-
- entry->advance = font_funcs->get_glyph_advance(fontface->get_font_object(fontface), fontsize, glyph, mode, &value);
- entry->has_contours = !!value;
entry->key = key;
size = fontface_get_cache_entry_size(entry);
@@ -123,6 +121,13 @@ static float fontface_get_glyph_advance(struct dwrite_fontface *fontface, float
fontface->cache.size += size;
}
+ if (!entry->has_advance)
+ {
+ entry->advance = font_funcs->get_glyph_advance(fontface->get_font_object(fontface), fontsize, glyph, mode, &value);
+ entry->has_contours = !!value;
+ entry->has_advance = 1;
+ }
+
*has_contours = entry->has_contours;
return entry->advance;
}
More information about the wine-cvs
mailing list