diff options
author | Marc Mutz <marc.mutz@kdab.com> | 2016-01-05 01:06:50 +0100 |
---|---|---|
committer | Marc Mutz <marc.mutz@kdab.com> | 2016-01-05 10:28:27 +0000 |
commit | 8b2f133822a22379cbbaa33fe600c30b95dc0044 (patch) | |
tree | 7721d5e73a6810f27565e6f8b4d509448779a029 /src/gui/kernel/qplatformintegrationfactory.cpp | |
parent | 32bd53c6b10b505a32d2940f9c0c8a7d3e85abf3 (diff) |
QFactoryLoader: generalize qLoadPlugin()
- Use perfect forwarding for the additional argument.
- Provide a variadic template version
- Deprecate qLoadPlugin1() — there's no reason for a different name
— and fix all callers in qtbase.
- Provide non-variadic overloads for up to three additional args
(QPlatformIntegration rolled its own function because it needs
three args).
Change-Id: I72fb2dd9a021de704cbf5e4b6ea31c80447fb3b1
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
Reviewed-by: Lars Knoll <lars.knoll@theqtcompany.com>
Diffstat (limited to 'src/gui/kernel/qplatformintegrationfactory.cpp')
-rw-r--r-- | src/gui/kernel/qplatformintegrationfactory.cpp | 15 |
1 files changed, 2 insertions, 13 deletions
diff --git a/src/gui/kernel/qplatformintegrationfactory.cpp b/src/gui/kernel/qplatformintegrationfactory.cpp index d109ceb2f0..2c8a7ce0f8 100644 --- a/src/gui/kernel/qplatformintegrationfactory.cpp +++ b/src/gui/kernel/qplatformintegrationfactory.cpp @@ -50,30 +50,19 @@ Q_GLOBAL_STATIC_WITH_ARGS(QFactoryLoader, directLoader, (QPlatformIntegrationFactoryInterface_iid, QLatin1String(""), Qt::CaseInsensitive)) #endif // !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); - if (index != -1) { - if (QPlatformIntegrationPlugin *factory = qobject_cast<QPlatformIntegrationPlugin *>(loader->instance(index))) - if (QPlatformIntegration *result = factory->create(key, parameters, argc, argv)) - return result; - } - return 0; -} - QPlatformIntegration *QPlatformIntegrationFactory::create(const QString &platform, const QStringList ¶mList, int &argc, char **argv, const QString &platformPluginPath) { #ifndef QT_NO_LIBRARY // 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 = qLoadPlugin<QPlatformIntegration, QPlatformIntegrationPlugin>(directLoader(), platform, paramList, argc, argv)) return ret; } #else Q_UNUSED(platformPluginPath); #endif - return loadIntegration(loader(), platform, paramList, argc, argv); + return qLoadPlugin<QPlatformIntegration, QPlatformIntegrationPlugin>(loader(), platform, paramList, argc, argv); } /*! |