summaryrefslogtreecommitdiffstats
path: root/src/tools/messageserver/messageserver.cpp
diff options
context:
space:
mode:
authorPekka Vuorela <pekka.vuorela@jolla.com>2025-02-25 16:36:21 +0200
committerPekka Vuorela <pekka.vuorela@jolla.com>2025-02-27 11:58:08 +0200
commitc50c752313a75f3f473a0e6c08e7207d42b88a7f (patch)
tree5ab2d6f9ed35c402fbf8bb731865cd4c97b9c951 /src/tools/messageserver/messageserver.cpp
parentc8a6ed13fc1bb73d014b628d0e471df9f32897a8 (diff)
Proper life-cycle management for messageserver plugins. API break
The setup here was quite broken, nobody really properly owned the created server plugin instances and the static instance deletion got rid of them at process shutdown in random order with other qmf stuff. Resulting in bad memory accessses and whatnot. Thus separating here the plugin api and the services the plugins can create. Needs a bit adjustment for the out-of-source plugins using this. Change-Id: I226d63ef985b215a09f6125a013bafdc80d69562 Reviewed-by: Pekka Vuorela <pvuorela@iki.fi> Reviewed-by: Damien Caliste <dcaliste@free.fr> Reviewed-by: <matti.viljanen@kapsi.fi>
Diffstat (limited to 'src/tools/messageserver/messageserver.cpp')
-rw-r--r--src/tools/messageserver/messageserver.cpp8
1 files changed, 6 insertions, 2 deletions
diff --git a/src/tools/messageserver/messageserver.cpp b/src/tools/messageserver/messageserver.cpp
index 6512b9e9..9eefa1ac 100644
--- a/src/tools/messageserver/messageserver.cpp
+++ b/src/tools/messageserver/messageserver.cpp
@@ -78,6 +78,10 @@ MessageServer::~MessageServer()
} else {
qMailLog(Messaging) << "Unregistered messageserver from D-Bus";
}
+
+#ifdef MESSAGESERVER_PLUGINS
+ qDeleteAll(m_plugins);
+#endif
}
bool MessageServer::init()
@@ -169,8 +173,8 @@ bool MessageServer::init()
QStringList availablePlugins = QMailMessageServerPluginFactory::keys();
for (int i = 0; i < availablePlugins.size(); i++) {
- QMailMessageServerPlugin *plugin = QMailMessageServerPluginFactory::createService(availablePlugins.at(i));
- plugin->exec();
+ QMailMessageServerService *service = QMailMessageServerPluginFactory::createService(availablePlugins.at(i));
+ m_plugins.append(service);
}
#endif