Fix: Don't rely on static initialization to set up sprite font caches.

The order of static initialization is undefined, so this can cause initalization
before relevant caches are initializations.
pull/562/head
Peter Nelson 1 year ago committed by PeterN
parent 418888ac23
commit f454ec8d63

@ -65,9 +65,14 @@ int GetCharacterHeight(FontSize size)
}
/* static */ FontCache *FontCache::caches[FS_END] = { new SpriteFontCache(FS_NORMAL), new SpriteFontCache(FS_SMALL), new SpriteFontCache(FS_LARGE), new SpriteFontCache(FS_MONO) };
/* static */ FontCache *FontCache::caches[FS_END];
/* static */ void FontCache::InitializeFontCaches()
{
for (FontSize fs = FS_BEGIN; fs != FS_END; fs++) {
if (FontCache::caches[fs] == nullptr) new SpriteFontCache(fs); /* FontCache inserts itself into to the cache. */
}
}
/* Check if a glyph should be rendered with anti-aliasing. */
bool GetFontAAState(FontSize size, bool check_blitter)
@ -136,6 +141,8 @@ extern void LoadCoreTextFont(FontSize fs);
*/
void InitFontCache(bool monospace)
{
FontCache::InitializeFontCaches();
for (FontSize fs = FS_BEGIN; fs < FS_END; fs++) {
if (monospace != (fs == FS_MONO)) continue;

@ -33,6 +33,8 @@ public:
FontCache(FontSize fs);
virtual ~FontCache();
static void InitializeFontCaches();
static int GetDefaultFontHeight(FontSize fs);
/**

Loading…
Cancel
Save