diff options
author | Konstantin Ritt <ritt.ks@gmail.com> | 2016-04-27 15:25:07 +0400 |
---|---|---|
committer | Konstantin Ritt <ritt.ks@gmail.com> | 2016-04-27 20:20:21 +0000 |
commit | 4c6324b5a770254ac66f80583bcdce9cb5e282c4 (patch) | |
tree | 2719b109f0b3f5ad88197eb1a2c78a3a53456e0a /src/platformsupport | |
parent | db2764db3466221ad680d63ff2224cdd016fc351 (diff) |
Micro optimization to QFontconfigDatabase
Do not set WritingSystem supported just to unset it afterwards;
test in-place and fallback gracefully.
Change-Id: I6910019c08fcf3909b924c27271547aae2ea0ff1
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
Diffstat (limited to 'src/platformsupport')
-rw-r--r-- | src/platformsupport/fontdatabases/fontconfig/qfontconfigdatabase.cpp | 24 |
1 files changed, 12 insertions, 12 deletions
diff --git a/src/platformsupport/fontdatabases/fontconfig/qfontconfigdatabase.cpp b/src/platformsupport/fontdatabases/fontconfig/qfontconfigdatabase.cpp index ca79224850..8ebabf3419 100644 --- a/src/platformsupport/fontdatabases/fontconfig/qfontconfigdatabase.cpp +++ b/src/platformsupport/fontdatabases/fontconfig/qfontconfigdatabase.cpp @@ -409,11 +409,23 @@ static void populateFromPattern(FcPattern *pattern) FcResult res = FcPatternGetLangSet(pattern, FC_LANG, 0, &langset); if (res == FcResultMatch) { bool hasLang = false; +#if FC_VERSION >= 20297 + FcChar8 *cap = Q_NULLPTR; + FcResult capRes = FcResultNoMatch; +#endif for (int j = 1; j < QFontDatabase::WritingSystemsCount; ++j) { const FcChar8 *lang = (const FcChar8*) languageForWritingSystem[j]; if (lang) { FcLangResult langRes = FcLangSetHasLang(langset, lang); if (langRes != FcLangDifferentLang) { +#if FC_VERSION >= 20297 + if (capabilityForWritingSystem[j] != Q_NULLPTR) { + if (cap == Q_NULLPTR) + capRes = FcPatternGetString(pattern, FC_CAPABILITY, 0, &cap); + if (capRes == FcResultMatch && strstr(reinterpret_cast<const char *>(cap), capabilityForWritingSystem[j]) == 0) + continue; + } +#endif writingSystems.setSupported(QFontDatabase::WritingSystem(j)); hasLang = true; } @@ -429,18 +441,6 @@ static void populateFromPattern(FcPattern *pattern) writingSystems.setSupported(QFontDatabase::Other); } -#if FC_VERSION >= 20297 - FcChar8 *cap = Q_NULLPTR; - for (int j = 1; j < QFontDatabase::WritingSystemsCount; ++j) { - if (capabilityForWritingSystem[j] && writingSystems.supported(QFontDatabase::WritingSystem(j))) { - if (cap == Q_NULLPTR) - res = FcPatternGetString(pattern, FC_CAPABILITY, 0, &cap); - if (res == FcResultMatch && strstr(reinterpret_cast<const char *>(cap), capabilityForWritingSystem[j]) == 0) - writingSystems.setSupported(QFontDatabase::WritingSystem(j),false); - } - } -#endif - FontFile *fontFile = new FontFile; fontFile->fileName = QString::fromLocal8Bit((const char *)file_value); fontFile->indexValue = indexValue; |