diff options
| author | Pekka Vuorela <pekka.vuorela@jolla.com> | 2025-02-25 16:36:21 +0200 |
|---|---|---|
| committer | Pekka Vuorela <pekka.vuorela@jolla.com> | 2025-02-27 11:58:08 +0200 |
| commit | c50c752313a75f3f473a0e6c08e7207d42b88a7f (patch) | |
| tree | 5ab2d6f9ed35c402fbf8bb731865cd4c97b9c951 /src/tools/messageserver/messageserver.cpp | |
| parent | c8a6ed13fc1bb73d014b628d0e471df9f32897a8 (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.cpp | 8 |
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 |
