QLibraryInfo: speed up checking if ":/qt/etc/qt.conf" resource exists
Go straight for QResource, because this is run very early in Qt's initialization, usually as a result of some debug message, via QLoggingRegistry::initializeRules(). This bypasses the need to create QResourceFileEnginePrivate, QResourceFileEngine, QFileInfoPrivate, and QFileInfo, all of which would end up in this .isValid() call. Additionally, I'm making it query in the C locale, which will also avoid initializing the system & default QLocales. If a resource exists in any language, the C locale query will find it. Pick-to: 6.8 Task-number: QTBUG-133206 Change-Id: I434b498903d793c12d35fffd3e297bfdbdc1b6fe Reviewed-by: Edward Welbourne <edward.welbourne@qt.io> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> (cherry picked from commit d59e640c868f3db2d661970f3d34a22013d49053) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
This commit is contained in:
parent
0ca8024da2
commit
ae2502b4ad
@ -6,6 +6,7 @@
|
||||
#include "qstringlist.h"
|
||||
#include "qfile.h"
|
||||
#if QT_CONFIG(settings)
|
||||
#include "qresource.h"
|
||||
#include "qsettings.h"
|
||||
#endif
|
||||
#include "qlibraryinfo.h"
|
||||
@ -103,7 +104,7 @@ static std::unique_ptr<QSettings> findConfiguration()
|
||||
return std::make_unique<QSettings>(*qtconfManualPath, QSettings::IniFormat);
|
||||
|
||||
QString qtconfig = QStringLiteral(":/qt/etc/qt.conf");
|
||||
if (QFile::exists(qtconfig))
|
||||
if (QResource(qtconfig, QLocale::c()).isValid())
|
||||
return std::make_unique<QSettings>(qtconfig, QSettings::IniFormat);
|
||||
#ifdef Q_OS_DARWIN
|
||||
CFBundleRef bundleRef = CFBundleGetMainBundle();
|
||||
|
Loading…
x
Reference in New Issue
Block a user