summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/gui/text/qfontdatabase.cpp14
-rw-r--r--src/gui/text/qfontdatabase_p.h12
2 files changed, 15 insertions, 11 deletions
diff --git a/src/gui/text/qfontdatabase.cpp b/src/gui/text/qfontdatabase.cpp
index de4fdb5d2e..dc2a0ff623 100644
--- a/src/gui/text/qfontdatabase.cpp
+++ b/src/gui/text/qfontdatabase.cpp
@@ -298,12 +298,22 @@ void QtFontFamily::ensurePopulated()
Q_ASSERT_X(populated, Q_FUNC_INFO, qPrintable(name));
}
+void QFontDatabasePrivate::clearFamilies()
+{
+ while (count--)
+ delete families[count];
+ ::free(families);
+ families = nullptr;
+ count = 0;
+ // don't clear the memory fonts!
+}
+
void QFontDatabasePrivate::invalidate()
{
QFontCache::instance()->clear();
fallbacksCache.clear();
- free();
+ clearFamilies();
QGuiApplicationPrivate::platformIntegration()->fontDatabase()->invalidate();
emit static_cast<QGuiApplication *>(QCoreApplication::instance())->fontDatabaseChanged();
}
@@ -530,7 +540,7 @@ void qt_cleanupFontDatabase()
{
auto *db = QFontDatabasePrivate::instance();
db->fallbacksCache.clear();
- db->free();
+ db->clearFamilies();
}
// used in qfont.cpp
diff --git a/src/gui/text/qfontdatabase_p.h b/src/gui/text/qfontdatabase_p.h
index 6d3530223a..badeb37362 100644
--- a/src/gui/text/qfontdatabase_p.h
+++ b/src/gui/text/qfontdatabase_p.h
@@ -221,9 +221,11 @@ public:
{ }
~QFontDatabasePrivate() {
- free();
+ clearFamilies();
}
+ void clearFamilies();
+
enum FamilyRequestFlags {
RequestFamily = 0,
EnsureCreated,
@@ -231,14 +233,6 @@ public:
};
QtFontFamily *family(const QString &f, FamilyRequestFlags flags = EnsurePopulated);
- void free() {
- while (count--)
- delete families[count];
- ::free(families);
- families = nullptr;
- count = 0;
- // don't clear the memory fonts!
- }
int count;
QtFontFamily **families;