diff options
Diffstat (limited to 'src/gui/text/qfontdatabase_qpa.cpp')
-rw-r--r-- | src/gui/text/qfontdatabase_qpa.cpp | 18 |
1 files changed, 13 insertions, 5 deletions
diff --git a/src/gui/text/qfontdatabase_qpa.cpp b/src/gui/text/qfontdatabase_qpa.cpp index 95a0aff261..fa96a0d631 100644 --- a/src/gui/text/qfontdatabase_qpa.cpp +++ b/src/gui/text/qfontdatabase_qpa.cpp @@ -105,22 +105,30 @@ static QStringList fallbackFamilies(const QString &family, const QFont::Style &s return retList; } +static void registerFont(QFontDatabasePrivate::ApplicationFont *fnt); + static void initializeDb() { - static int initialized = false; QFontDatabasePrivate *db = privateDb(); - if (!initialized || db->reregisterAppFonts) { - //init by asking for the platformfontdb for the first time :) + // init by asking for the platformfontdb for the first time or after invalidation + if (!db->count) QGuiApplicationPrivate::platformIntegration()->fontDatabase()->populateFontDatabase(); + + if (db->reregisterAppFonts) { + for (int i = 0; i < db->applicationFonts.count(); i++) { + if (!db->applicationFonts.at(i).families.isEmpty()) + registerFont(&db->applicationFonts[i]); + } db->reregisterAppFonts = false; - initialized = true; } } static inline void load(const QString & = QString(), int = -1) { - initializeDb(); + // Only initialize the database if it has been cleared or not initialized yet + if (!privateDb()->count) + initializeDb(); } static |