From 571908f7fc8f5e4ef9a4dfd90102566f6f0fcad2 Mon Sep 17 00:00:00 2001 From: Robin Burchell Date: Fri, 13 Feb 2015 22:20:12 +0100 Subject: QCoreTextFontEngine: Cache face_id. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This involves a significant amount of memory allocation, which made it rather more expensive than one would expect. The FT engine also caches face id, so this seems like a reasonable prospect. Increases delegates_text by another few ops/frame. Change-Id: If31e6b54478e4caf46a3a12a9ac45254a1f01525 Reviewed-by: Konstantin Ritt Reviewed-by: Morten Johan Sørvig --- .../fontdatabases/mac/qfontengine_coretext.mm | 12 +++++------- .../fontdatabases/mac/qfontengine_coretext_p.h | 1 + 2 files changed, 6 insertions(+), 7 deletions(-) (limited to 'src/platformsupport') diff --git a/src/platformsupport/fontdatabases/mac/qfontengine_coretext.mm b/src/platformsupport/fontdatabases/mac/qfontengine_coretext.mm index 48ec78951d..64de364bfb 100644 --- a/src/platformsupport/fontdatabases/mac/qfontengine_coretext.mm +++ b/src/platformsupport/fontdatabases/mac/qfontengine_coretext.mm @@ -162,6 +162,10 @@ void QCoreTextFontEngine::init() Q_ASSERT(ctfont != NULL); Q_ASSERT(cgFont != NULL); + face_id.index = 0; + QCFString name = CTFontCopyName(ctfont, kCTFontUniqueNameKey); + face_id.filename = QCFString::toQString(name).toUtf8(); + QCFString family = CTFontCopyFamilyName(ctfont); fontDef.family = family; @@ -696,13 +700,7 @@ void QCoreTextFontEngine::recalcAdvances(QGlyphLayout *glyphs, QFontEngine::Shap QFontEngine::FaceId QCoreTextFontEngine::faceId() const { - FaceId result; - result.index = 0; - - QCFString name = CTFontCopyName(ctfont, kCTFontUniqueNameKey); - result.filename = QCFString::toQString(name).toUtf8(); - - return result; + return face_id; } bool QCoreTextFontEngine::canRender(const QChar *string, int len) const diff --git a/src/platformsupport/fontdatabases/mac/qfontengine_coretext_p.h b/src/platformsupport/fontdatabases/mac/qfontengine_coretext_p.h index 4a6c8e57e6..88ce2c726d 100644 --- a/src/platformsupport/fontdatabases/mac/qfontengine_coretext_p.h +++ b/src/platformsupport/fontdatabases/mac/qfontengine_coretext_p.h @@ -135,6 +135,7 @@ private: int synthesisFlags; CGAffineTransform transform; QFixed avgCharWidth; + QFontEngine::FaceId face_id; }; CGAffineTransform qt_transform_from_fontdef(const QFontDef &fontDef); -- cgit v1.2.3