mirror of
https://github.com/OpenTTD/OpenTTD.git
synced 2025-06-24 06:00:05 +01:00
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.
This commit is contained in:
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…
Reference in New Issue
Block a user