From 3065b029e5e74acdf161a8ba2b4b23f88fdca768 Mon Sep 17 00:00:00 2001
From: Denis Mingulov <denis.mingulov@gmail.com>
Date: Mon, 27 Sep 2010 14:58:12 +0200
Subject: [PATCH] QApplication::aboutToQuit signal is used for the plugin
 manager's shutdown

Merge-request: 179
Reviewed-by: Tobias Hunger <tobias.hunger@nokia.com>
---
 src/app/main.cpp                           | 7 ++++---
 src/libs/extensionsystem/pluginmanager.cpp | 1 -
 src/libs/extensionsystem/pluginmanager.h   | 2 +-
 3 files changed, 5 insertions(+), 5 deletions(-)

diff --git a/src/app/main.cpp b/src/app/main.cpp
index afc08fc4569..a453325a55f 100644
--- a/src/app/main.cpp
+++ b/src/app/main.cpp
@@ -317,11 +317,12 @@ int main(int argc, char **argv)
     }
     QObject::connect(&app, SIGNAL(fileOpenRequest(QString)), coreplugin->plugin(), SLOT(fileOpenRequest(QString)));
 
+    // shutdown plugin manager on the exit
+    QObject::connect(&app, SIGNAL(aboutToQuit()), &pluginManager, SLOT(shutdown()));
+
     // Do this after the event loop has started
     QTimer::singleShot(100, &pluginManager, SLOT(startTests()));
 
-    int ret = app.exec();
-    pluginManager.shutdown();
-    return ret;
+    return app.exec();
 }
 
diff --git a/src/libs/extensionsystem/pluginmanager.cpp b/src/libs/extensionsystem/pluginmanager.cpp
index 37dd4daeb9a..82f75f3dee0 100644
--- a/src/libs/extensionsystem/pluginmanager.cpp
+++ b/src/libs/extensionsystem/pluginmanager.cpp
@@ -262,7 +262,6 @@ void PluginManager::shutdown()
     d->shutdown();
 }
 
-
 /*!
     \fn QStringList PluginManager::pluginPaths() const
     The list of paths were the plugin manager searches for plugins.
diff --git a/src/libs/extensionsystem/pluginmanager.h b/src/libs/extensionsystem/pluginmanager.h
index d371dfe30c9..480f40b4727 100644
--- a/src/libs/extensionsystem/pluginmanager.h
+++ b/src/libs/extensionsystem/pluginmanager.h
@@ -93,7 +93,6 @@ public:
     // Plugin operations
     QList<PluginSpec *> loadQueue();
     void loadPlugins();
-    void shutdown();
     QStringList pluginPaths() const;
     void setPluginPaths(const QStringList &paths);
     QList<PluginSpec *> plugins() const;
@@ -130,6 +129,7 @@ signals:
 
 public slots:
     void remoteArguments(const QString &serializedArguments);
+    void shutdown();
 
 private slots:
     void startTests();
-- 
GitLab