summaryrefslogtreecommitdiffstats
path: root/src/interfaceframework/qifservicemanager.cpp
diff options
context:
space:
mode:
authorDominik Holland <dominik.holland@qt.io>2023-07-14 14:47:32 +0200
committerDominik Holland <dominik.holland@qt.io>2023-07-14 14:49:26 +0200
commit3ac2448d1470cc0b52433bfc3d6541710af79bb2 (patch)
treeb7f493942c6a2c2a174ac8d8972625a3978f9f4d /src/interfaceframework/qifservicemanager.cpp
parentd5bff9acb96427f4e6c99ff2cb0b7ae6c0a36647 (diff)
QIfServiceManager: Improve the backend unloading code
For autotests we support unloading all our backends. Unloading plugins can lead to various errors. Instead of really unloading the plugin, just destroy the plugin instances, the actual plugin and all it libraries will stay loaded. Pick-to: 6.2 6.5 6.6 Change-Id: Ie4429ee8c7958cdff6ceb82cf5e587f6a2a398a0 Reviewed-by: Robert Griebl <robert.griebl@qt.io>
Diffstat (limited to 'src/interfaceframework/qifservicemanager.cpp')
-rw-r--r--src/interfaceframework/qifservicemanager.cpp26
1 files changed, 7 insertions, 19 deletions
diff --git a/src/interfaceframework/qifservicemanager.cpp b/src/interfaceframework/qifservicemanager.cpp
index e6f5edd8..4a1a8b35 100644
--- a/src/interfaceframework/qifservicemanager.cpp
+++ b/src/interfaceframework/qifservicemanager.cpp
@@ -63,6 +63,13 @@ namespace qtif_helper {
using namespace qtif_helper;
+Backend::~Backend()
+{
+ delete interface;
+ delete proxyServiceObject;
+ delete loader;
+}
+
QIfServiceManagerPrivate::QIfServiceManagerPrivate(QIfServiceManager *parent)
: QObject(parent)
, m_staticLoaded(false)
@@ -239,10 +246,6 @@ void QIfServiceManagerPrivate::registerBackend(const QString &fileName, const QJ
backend->name = metaData.value(classNameLiteral).toString();
backend->debug = metaData.value(debugLiteral).toBool();
backend->metaData = backendMetaData;
- backend->interface = nullptr;
- backend->interfaceObject = nullptr;
- backend->loader = nullptr;
- backend->proxyServiceObject = nullptr;
addBackend(backend);
}
@@ -268,9 +271,6 @@ void QIfServiceManagerPrivate::registerStaticBackend(QStaticPlugin plugin)
backend->debug = plugin.metaData().value(debugLiteral).toBool();
backend->metaData = backendMetaData;
backend->interface = backendInterface;
- backend->interfaceObject = nullptr;
- backend->loader = nullptr;
- backend->proxyServiceObject = nullptr;
addBackend(backend);
}
@@ -294,12 +294,8 @@ bool QIfServiceManagerPrivate::registerBackend(QObject *serviceBackendInterface,
auto *backend = new Backend;
backend->name = QString::fromLocal8Bit(serviceBackendInterface->metaObject()->className());
- backend->debug = false;
backend->metaData = metaData;
backend->interface = interface;
- backend->interfaceObject = serviceBackendInterface;
- backend->loader = nullptr;
- backend->proxyServiceObject = nullptr;
addBackend(backend);
return true;
@@ -316,14 +312,6 @@ void QIfServiceManagerPrivate::unloadAllBackends()
QIfConfigurationManager::instance()->removeServiceObject(configurationId, backend->proxyServiceObject);
}
- //If the Interface is from a Plugin, the Plugin owns it and it will be deleted when unloading.
- //Otherwise we own the Interface and delete the Pointer.
- if (backend->loader) {
- backend->loader->unload();
- delete backend->loader;
- }
- delete backend->interfaceObject;
- delete backend->proxyServiceObject;
delete backend;
}
m_backends.clear();