diff options
author | Robin Burchell <robin.burchell@viroteck.net> | 2016-11-15 18:18:26 +0100 |
---|---|---|
committer | Robin Burchell <robin.burchell@viroteck.net> | 2016-11-18 14:41:24 +0000 |
commit | 5b2c71877a34597b82d2ce81494b9e91c7e31cb8 (patch) | |
tree | 20ff942952ae2ecb986073c15d881b52b9020392 | |
parent | 584c90df98891d5ab7d62ef09f63986ab91dfc6b (diff) |
QSGDistanceFieldUtil: Make use of the newly added QRawFont qHash function
Relies on qtbase/094b64fb605b39d1ae88d91d2b9a0672b9ff4780.
This was previously responsible for around 1.1% of CPU samples when profiling
text creation & rendering under qmlbench.
Change-Id: I287067b994231a39881ba8208ad3b802233c7486
Reviewed-by: Gunnar Sletta <gunnar@sletta.org>
-rw-r--r-- | src/quick/scenegraph/util/qsgdistancefieldutil.cpp | 24 | ||||
-rw-r--r-- | src/quick/scenegraph/util/qsgdistancefieldutil_p.h | 4 |
2 files changed, 3 insertions, 25 deletions
diff --git a/src/quick/scenegraph/util/qsgdistancefieldutil.cpp b/src/quick/scenegraph/util/qsgdistancefieldutil.cpp index 65a6bcd52c..79e43e3820 100644 --- a/src/quick/scenegraph/util/qsgdistancefieldutil.cpp +++ b/src/quick/scenegraph/util/qsgdistancefieldutil.cpp @@ -84,32 +84,12 @@ QSGDistanceFieldGlyphCacheManager::~QSGDistanceFieldGlyphCacheManager() QSGDistanceFieldGlyphCache *QSGDistanceFieldGlyphCacheManager::cache(const QRawFont &font) { - return m_caches.value(fontKey(font), 0); + return m_caches.value(font, 0); } void QSGDistanceFieldGlyphCacheManager::insertCache(const QRawFont &font, QSGDistanceFieldGlyphCache *cache) { - m_caches.insert(fontKey(font), cache); -} - -QString QSGDistanceFieldGlyphCacheManager::fontKey(const QRawFont &font) -{ - QFontEngine *fe = QRawFontPrivate::get(font)->fontEngine; - if (!fe->faceId().filename.isEmpty()) { - QByteArray keyName = fe->faceId().filename; - if (font.style() != QFont::StyleNormal) - keyName += QByteArray(" I"); - if (font.weight() != QFont::Normal) - keyName += ' ' + QByteArray::number(font.weight()); - keyName += QByteArray(" DF"); - return QString::fromUtf8(keyName); - } else { - return QString::fromLatin1("%1_%2_%3_%4") - .arg(font.familyName()) - .arg(font.styleName()) - .arg(font.weight()) - .arg(font.style()); - } + m_caches.insert(font, cache); } QT_END_NAMESPACE diff --git a/src/quick/scenegraph/util/qsgdistancefieldutil_p.h b/src/quick/scenegraph/util/qsgdistancefieldutil_p.h index 354a48a81e..ad366cb4d4 100644 --- a/src/quick/scenegraph/util/qsgdistancefieldutil_p.h +++ b/src/quick/scenegraph/util/qsgdistancefieldutil_p.h @@ -80,9 +80,7 @@ public: void setAntialiasingSpreadFunc(AntialiasingSpreadFunc func) { m_antialiasingSpread_func = func; } private: - static QString fontKey(const QRawFont &font); - - QHash<QString, QSGDistanceFieldGlyphCache *> m_caches; + QHash<QRawFont, QSGDistanceFieldGlyphCache *> m_caches; ThresholdFunc m_threshold_func; AntialiasingSpreadFunc m_antialiasingSpread_func; |