From e7174533e733f2ef4d5278c4619628cf87907b5b Mon Sep 17 00:00:00 2001 From: Marc Mutz Date: Tue, 5 Jan 2016 01:34:58 +0100 Subject: 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 Reviewed-by: Laszlo Agocs --- .../xcb/gl_integrations/qxcbglintegrationfactory.cpp | 17 +++-------------- .../xcb/gl_integrations/qxcbglintegrationplugin.h | 3 +++ 2 files changed, 6 insertions(+), 14 deletions(-) (limited to 'src/plugins/platforms') 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(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(directLoader(), platform)) return ret; } - if (QXcbGlIntegration *ret = loadIntegration(loader(), platform)) + if (QXcbGlIntegration *ret = qLoadPlugin(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 -- cgit v1.2.3