diff options
author | frosch <frosch@openttd.org> | 2013-10-13 13:28:06 +0000 |
---|---|---|
committer | frosch <frosch@openttd.org> | 2013-10-13 13:28:06 +0000 |
commit | dcec8b9abdf4c7fb87d6aa29e407bdf182ab6864 (patch) | |
tree | 21ca81181232bfbef3b0263a4b8a0f5b174cc774 /src | |
parent | 122158b4d857e50d7d4dd4cd41dc0a8f7a077ae3 (diff) | |
download | openttd-dcec8b9abdf4c7fb87d6aa29e407bdf182ab6864.tar.xz |
(svn r25860) -Fix [FS#5737] (r25570): When clearing font cache, also clear layout cache. (adf88)
Diffstat (limited to 'src')
-rw-r--r-- | src/fontcache.cpp | 9 | ||||
-rw-r--r-- | src/fontcache.h | 3 |
2 files changed, 10 insertions, 2 deletions
diff --git a/src/fontcache.cpp b/src/fontcache.cpp index cf4aa0765..9e95fee64 100644 --- a/src/fontcache.cpp +++ b/src/fontcache.cpp @@ -75,7 +75,7 @@ public: virtual SpriteID GetUnicodeGlyph(WChar key); virtual void SetUnicodeGlyph(WChar key, SpriteID sprite); virtual void InitializeUnicodeGlyphMap(); - virtual void ClearFontCache() {} + virtual void ClearFontCache(); virtual const Sprite *GetGlyph(GlyphID key); virtual uint GetGlyphWidth(GlyphID key); virtual bool GetDrawGlyphShadow(); @@ -162,6 +162,11 @@ void SpriteFontCache::ClearGlyphToSpriteMap() this->glyph_to_spriteid_map = NULL; } +void SpriteFontCache::ClearFontCache() +{ + Layouter::ResetFontCache(this->fs); +} + const Sprite *SpriteFontCache::GetGlyph(GlyphID key) { SpriteID sprite = this->GetUnicodeGlyph(key); @@ -392,6 +397,8 @@ void FreeTypeFontCache::ClearFontCache() free(this->glyph_to_sprite); this->glyph_to_sprite = NULL; + + Layouter::ResetFontCache(this->fs); } FreeTypeFontCache::GlyphEntry *FreeTypeFontCache::GetGlyphPtr(GlyphID key) diff --git a/src/fontcache.h b/src/fontcache.h index 1f52ddcdc..646adff1a 100644 --- a/src/fontcache.h +++ b/src/fontcache.h @@ -159,7 +159,8 @@ static inline void InitializeUnicodeGlyphMap() } } -static inline void ClearFontCache() { +static inline void ClearFontCache() +{ for (FontSize fs = FS_BEGIN; fs < FS_END; fs++) { FontCache::Get(fs)->ClearFontCache(); } |