From 8fd75739efd49a424e90938a51802f38c8c504e6 Mon Sep 17 00:00:00 2001 From: Allan Sandfeld Jensen Date: Wed, 13 Jan 2016 14:54:48 +0100 Subject: Lock qfontdatabase mutex in qt_fallbacksForFamily When called from outside of qfontdatabase, the qfontdatabase mutex will not be locked upon entry to qt_fallbacksForFamily, so we need to add it to the exported version. Change-Id: I16a21708d7cca15730c12de3dbeeaab13ffbd315 Reviewed-by: Konstantin Ritt Reviewed-by: Oswald Buddenhagen Reviewed-by: Eskil Abrahamsen Blomfeldt --- src/gui/text/qfontdatabase.cpp | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) (limited to 'src') diff --git a/src/gui/text/qfontdatabase.cpp b/src/gui/text/qfontdatabase.cpp index 1b9852c20c..aae84dc988 100644 --- a/src/gui/text/qfontdatabase.cpp +++ b/src/gui/text/qfontdatabase.cpp @@ -838,7 +838,7 @@ QStringList QPlatformFontDatabase::fallbacksForFamily(const QString &family, QFo return retList; } -QStringList qt_fallbacksForFamily(const QString &family, QFont::Style style, QFont::StyleHint styleHint, QChar::Script script) +static QStringList fallbacksForFamily(const QString &family, QFont::Style style, QFont::StyleHint styleHint, QChar::Script script) { QFontDatabasePrivate *db = privateDb(); @@ -870,6 +870,12 @@ QStringList qt_fallbacksForFamily(const QString &family, QFont::Style style, QFo return retList; } +QStringList qt_fallbacksForFamily(const QString &family, QFont::Style style, QFont::StyleHint styleHint, QChar::Script script) +{ + QMutexLocker locker(fontDatabaseMutex()); + return fallbacksForFamily(family, style, styleHint, script); +} + static void registerFont(QFontDatabasePrivate::ApplicationFont *fnt); static void initializeDb() @@ -984,7 +990,7 @@ QFontEngine *loadEngine(int script, const QFontDef &request, if (styleHint == QFont::AnyStyle && request.fixedPitch) styleHint = QFont::TypeWriter; - fallbacks += qt_fallbacksForFamily(family->name, QFont::Style(style->key.style), styleHint, QChar::Script(script)); + fallbacks += fallbacksForFamily(family->name, QFont::Style(style->key.style), styleHint, QChar::Script(script)); pfMultiEngine->setFallbackFamiliesList(fallbacks); } @@ -2664,10 +2670,10 @@ QFontEngine *QFontDatabase::findFont(const QFontDef &request, int script) styleHint = QFont::TypeWriter; QStringList fallbacks = request.fallBackFamilies - + qt_fallbacksForFamily(request.family, - QFont::Style(request.style), - styleHint, - QChar::Script(script)); + + fallbacksForFamily(request.family, + QFont::Style(request.style), + styleHint, + QChar::Script(script)); if (script > QChar::Script_Common) fallbacks += QString(); // Find the first font matching the specified script. -- cgit v1.2.3