diff --git a/qtbase/src/gui/kernel/qplatformintegrationfactory.cpp b/qtbase/src/gui/kernel/qplatformintegrationfactory.cpp index 5a1fb3ca83..bc33f7b6e0 100644 --- a/qtbase/src/gui/kernel/qplatformintegrationfactory.cpp +++ b/qtbase/src/gui/kernel/qplatformintegrationfactory.cpp @@ -42,12 +42,10 @@ QT_BEGIN_NAMESPACE -#ifndef QT_NO_LIBRARY -Q_GLOBAL_STATIC_WITH_ARGS(QFactoryLoader, loader, - (QPlatformIntegrationFactoryInterface_iid, QLatin1String("/platforms"), Qt::CaseInsensitive)) -Q_GLOBAL_STATIC_WITH_ARGS(QFactoryLoader, directLoader, - (QPlatformIntegrationFactoryInterface_iid, QLatin1String(""), Qt::CaseInsensitive)) +QFactoryLoader QPlatformIntegrationFactory::loader(QPlatformIntegrationFactoryInterface_iid, QLatin1String("/platforms"), Qt::CaseInsensitive); +QFactoryLoader QPlatformIntegrationFactory::directLoader(QPlatformIntegrationFactoryInterface_iid, QLatin1String(""), Qt::CaseInsensitive); +#ifndef QT_NO_LIBRARY static inline QPlatformIntegration *loadIntegration(QFactoryLoader *loader, const QString &key, const QStringList ¶meters, int &argc, char ** argv) { const int index = loader->indexOf(key); @@ -67,10 +65,10 @@ QPlatformIntegration *QPlatformIntegrationFactory::create(const QString &platfor // Try loading the plugin from platformPluginPath first: if (!platformPluginPath.isEmpty()) { QCoreApplication::addLibraryPath(platformPluginPath); - if (QPlatformIntegration *ret = loadIntegration(directLoader(), platform, paramList, argc, argv)) + if (QPlatformIntegration *ret = loadIntegration(&directLoader, platform, paramList, argc, argv)) return ret; } - if (QPlatformIntegration *ret = loadIntegration(loader(), platform, paramList, argc, argv)) + if (QPlatformIntegration *ret = loadIntegration(&loader, platform, paramList, argc, argv)) return ret; #else Q_UNUSED(platform); @@ -95,7 +93,7 @@ QStringList QPlatformIntegrationFactory::keys(const QString &platformPluginPath) QStringList list; if (!platformPluginPath.isEmpty()) { QCoreApplication::addLibraryPath(platformPluginPath); - list = directLoader()->keyMap().values(); + list = (&directLoader)->keyMap().values(); if (!list.isEmpty()) { const QString postFix = QStringLiteral(" (from ") + QDir::toNativeSeparators(platformPluginPath) @@ -105,7 +103,7 @@ QStringList QPlatformIntegrationFactory::keys(const QString &platformPluginPath) (*it).append(postFix); } } - list.append(loader()->keyMap().values()); + list.append((&loader)->keyMap().values()); return list; #else Q_UNUSED(platformPluginPath); diff --git a/qtbase/src/gui/kernel/qplatformintegrationfactory_p.h b/qtbase/src/gui/kernel/qplatformintegrationfactory_p.h index 2ac0954cc1..2aaa9ab215 100644 --- a/qtbase/src/gui/kernel/qplatformintegrationfactory_p.h +++ b/qtbase/src/gui/kernel/qplatformintegrationfactory_p.h @@ -46,6 +46,8 @@ // #include +#include "private/qfactoryloader_p.h" +#include "qplatformintegrationplugin.h" QT_BEGIN_NAMESPACE @@ -57,6 +59,9 @@ class Q_GUI_EXPORT QPlatformIntegrationFactory public: static QStringList keys(const QString &platformPluginPath = QString()); static QPlatformIntegration *create(const QString &name, const QStringList &args, int &argc, char **argv, const QString &platformPluginPath = QString()); +private: + static QFactoryLoader loader; + static QFactoryLoader directLoader; }; QT_END_NAMESPACE