Details
-
Bug
-
Resolution: Done
-
P1: Critical
-
5.12.3
-
-
9520ba5a73cd9d6cb8ef47f10837b92494c8221e
Description
Run the attached application and place a breakpoint into Qt/5.12.1/Src/qtbase/src/platformsupport/fontdatabases/fontconfig/qfontconfigdatabase.cpp , QFontconfigDatabase::addApplicationFont method.
It is going to be called twice for the same font using addApplicationFont directly or QML FontLoader.
The behavior is causing performance issues with large CJK fonts.
Callstacks with FontLoader:
1 QFontconfigDatabase::addApplicationFont qfontconfigdatabase.cpp 822 0x7fffeed288c4 2 registerFont qfontdatabase.cpp 1042 0x7ffff77cce62 3 QFontDatabasePrivate::addAppFont qfontdatabase.cpp 2458 0x7ffff77cce62 4 QFontDatabase::addApplicationFont qfontdatabase.cpp 2507 0x7ffff77cfa3e 5 QQuickFontLoader::setSource qquickfontloader.cpp 253 0x7fffc7aa5c88 6 QQuickFontLoader::qt_static_metacall moc_qquickfontloader_p.cpp 161 0x7fffc7aa6105 7 QQmlPropertyData::writeProperty qqmlpropertycache_p.h 346 0x7ffff717f4ba 8 QQmlObjectCreator::setPropertyValue qqmlobjectcreator.cpp 450 0x7ffff71fb676 9 QQmlObjectCreator::setPropertyBinding qqmlobjectcreator.cpp 1086 0x7ffff71fd9df 10 QQmlObjectCreator::setupBindings qqmlobjectcreator.cpp 777 0x7ffff71ff96e 11 QQmlObjectCreator::populateInstance qqmlobjectcreator.cpp 1463 0x7ffff71fc986 12 QQmlObjectCreator::createInstance qqmlobjectcreator.cpp 1301 0x7ffff71fd05e 13 QQmlObjectCreator::setPropertyBinding qqmlobjectcreator.cpp 825 0x7ffff71ff110 14 QQmlObjectCreator::setupBindings qqmlobjectcreator.cpp 777 0x7ffff71ff96e 15 QQmlObjectCreator::populateInstance qqmlobjectcreator.cpp 1463 0x7ffff71fc986 16 QQmlObjectCreator::createInstance qqmlobjectcreator.cpp 1301 0x7ffff71fd05e 17 QQmlObjectCreator::create qqmlobjectcreator.cpp 203 0x7ffff720038e 18 QQmlComponentPrivate::beginCreate qqmlcomponent.cpp 871 0x7ffff7182f2b 19 QQmlComponent::create qqmlcomponent.cpp 783 0x7ffff7180a89 20 QQmlApplicationEnginePrivate::finishLoad qqmlapplicationengine.cpp 134 0x7ffff71f20eb ... <More> 1 QFontconfigDatabase::addApplicationFont qfontconfigdatabase.cpp 822 0x7fffeed288c4 2 registerFont qfontdatabase.cpp 1042 0x7ffff77c9f9c 3 initializeDb qfontdatabase.cpp 910 0x7ffff77c9f9c 4 QFontDatabase::findFont qfontdatabase.cpp 2664 0x7ffff77cde15 5 QFontDatabase::load qfontdatabase.cpp 2829 0x7ffff77ce926 6 QFontPrivate::engineForScript qfont.cpp 217 0x7ffff77a5c1a 7 QTextEngine::fontEngine qtextengine.cpp 2530 0x7ffff77d63e3 8 QTextEngine::shapeText qtextengine.cpp 1392 0x7ffff77d7e7f 9 QTextEngine::shape qtextengine.cpp 1988 0x7ffff77d8cdc 10 QTextLine::layout_helper qtextlayout.cpp 1836 0x7ffff77eafc7 11 QTextLine::setLineWidth qtextlayout.cpp 1596 0x7ffff77ebc9b 12 QQuickTextPrivate::setLineGeometry qquicktext.cpp 1165 0x7fffc7bb377b 13 QQuickTextPrivate::setupTextLayout qquicktext.cpp 792 0x7fffc7bb4bbd 14 QQuickTextPrivate::updateSize qquicktext.cpp 408 0x7fffc7bb67bc 15 QQuickTextPrivate::updateLayout qquicktext.cpp 290 0x7fffc7bb7875 16 QQuickText::componentComplete qquicktext.cpp 2694 0x7fffc7bb8b93 17 QQmlObjectCreator::finalize qqmlobjectcreator.cpp 1366 0x7ffff71fa962 18 QQmlComponentPrivate::complete qqmlcomponent.cpp 923 0x7ffff7180b87 19 QQmlComponentPrivate::completeCreate qqmlcomponent.cpp 959 0x7ffff7180ca2 20 QQmlComponent::create qqmlcomponent.cpp 785 0x7ffff7180a9a ... <More>
Attachments
For Gerrit Dashboard: QTBUG-76239 | ||||||
---|---|---|---|---|---|---|
# | Subject | Branch | Project | Status | CR | V |
265279,25 | Improve performance when loading application fonts | dev | qt/qtbase | Status: MERGED | +2 | 0 |