diff options
author | Marc Mutz <marc.mutz@kdab.com> | 2016-01-05 01:34:58 +0100 |
---|---|---|
committer | Marc Mutz <marc.mutz@kdab.com> | 2016-01-05 17:37:16 +0000 |
commit | e7174533e733f2ef4d5278c4619628cf87907b5b (patch) | |
tree | 5e12fef71318f502962fd95ca13f18fe86fe51f3 | |
parent | c34ab3714a4acbdff0daf6a58b9c8abcc4027ce1 (diff) |
xcb: use qLoadPlugin()
... instead of rolling your own.
qLoadPlugin() expects the create() method of the Plugin
class to take at least the QString key. Since this plugin
create() method doesn't take one, supply a wrapper.
Change-Id: I690fecd3390cc706a45f40ba06dda2b952ff0d85
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com>
Reviewed-by: Laszlo Agocs <laszlo.agocs@theqtcompany.com>
-rw-r--r-- | src/plugins/platforms/xcb/gl_integrations/qxcbglintegrationfactory.cpp | 17 | ||||
-rw-r--r-- | src/plugins/platforms/xcb/gl_integrations/qxcbglintegrationplugin.h | 3 |
2 files changed, 6 insertions, 14 deletions
diff --git a/src/plugins/platforms/xcb/gl_integrations/qxcbglintegrationfactory.cpp b/src/plugins/platforms/xcb/gl_integrations/qxcbglintegrationfactory.cpp index 508f5e82e6..4e63e1ef66 100644 --- a/src/plugins/platforms/xcb/gl_integrations/qxcbglintegrationfactory.cpp +++ b/src/plugins/platforms/xcb/gl_integrations/qxcbglintegrationfactory.cpp @@ -46,17 +46,6 @@ Q_GLOBAL_STATIC_WITH_ARGS(QFactoryLoader, loader, (QXcbGlIntegrationFactoryInterface_iid, QLatin1String("/xcbglintegrations"), Qt::CaseInsensitive)) Q_GLOBAL_STATIC_WITH_ARGS(QFactoryLoader, directLoader, (QXcbGlIntegrationFactoryInterface_iid, QLatin1String(""), Qt::CaseInsensitive)) - -static inline QXcbGlIntegration *loadIntegration(QFactoryLoader *loader, const QString &key) -{ - const int index = loader->indexOf(key); - if (index != -1) { - if (QXcbGlIntegrationPlugin *factory = qobject_cast<QXcbGlIntegrationPlugin *>(loader->instance(index))) - if (QXcbGlIntegration *result = factory->create()) - return result; - } - return Q_NULLPTR; -} #endif // !QT_NO_LIBRARY QStringList QXcbGlIntegrationFactory::keys(const QString &pluginPath) @@ -86,13 +75,13 @@ QStringList QXcbGlIntegrationFactory::keys(const QString &pluginPath) QXcbGlIntegration *QXcbGlIntegrationFactory::create(const QString &platform, const QString &pluginPath) { #ifndef QT_NO_LIBRARY - // Try loading the plugin from platformPluginPath first: + // Try loading the plugin from pluginPath first: if (!pluginPath.isEmpty()) { QCoreApplication::addLibraryPath(pluginPath); - if (QXcbGlIntegration *ret = loadIntegration(directLoader(), platform)) + if (QXcbGlIntegration *ret = qLoadPlugin<QXcbGlIntegration, QXcbGlIntegrationPlugin>(directLoader(), platform)) return ret; } - if (QXcbGlIntegration *ret = loadIntegration(loader(), platform)) + if (QXcbGlIntegration *ret = qLoadPlugin<QXcbGlIntegration, QXcbGlIntegrationPlugin>(loader(), platform)) return ret; #else Q_UNUSED(platform); diff --git a/src/plugins/platforms/xcb/gl_integrations/qxcbglintegrationplugin.h b/src/plugins/platforms/xcb/gl_integrations/qxcbglintegrationplugin.h index f9a25cc12a..a61a7036a8 100644 --- a/src/plugins/platforms/xcb/gl_integrations/qxcbglintegrationplugin.h +++ b/src/plugins/platforms/xcb/gl_integrations/qxcbglintegrationplugin.h @@ -53,6 +53,9 @@ public: { } virtual QXcbGlIntegration *create() = 0; + // the pattern expected by qLoadPlugin calls for a QString argument. + // we don't need it, so don't bother subclasses with it: + QXcbGlIntegration *create(const QString &) { return create(); } }; QT_END_NAMESPACE |