From 745345e347997f89f130e21bf7931fe8c6a38835 Mon Sep 17 00:00:00 2001
From: kh1 <qt-info@nokia.com>
Date: Tue, 25 May 2010 13:43:16 +0200
Subject: [PATCH] There is no dependency, so make the runtime manager an real
 singelton.

Reviewed-by: ck
---
 .../qt-maemo/maemomanager.cpp                 | 21 +++++++------------
 .../qt4projectmanager/qt-maemo/maemomanager.h |  2 --
 .../qt-maemo/qemuruntimemanager.cpp           |  9 ++++----
 .../qt-maemo/qemuruntimemanager.h             |  8 +++----
 .../qt4projectmanagerplugin.cpp               |  3 +--
 .../qt4projectmanagerplugin.h                 |  2 --
 6 files changed, 17 insertions(+), 28 deletions(-)

diff --git a/src/plugins/qt4projectmanager/qt-maemo/maemomanager.cpp b/src/plugins/qt4projectmanager/qt-maemo/maemomanager.cpp
index 18438e2c06e..60f6a80fb5f 100644
--- a/src/plugins/qt4projectmanager/qt-maemo/maemomanager.cpp
+++ b/src/plugins/qt4projectmanager/qt-maemo/maemomanager.cpp
@@ -44,6 +44,9 @@
 #include <QtCore/QFile>
 #include <QtCore/QTextStream>
 
+using namespace ExtensionSystem;
+using namespace ProjectExplorer;
+
 namespace Qt4ProjectManager {
     namespace Internal {
 
@@ -59,10 +62,10 @@ MaemoManager::MaemoManager()
     Q_ASSERT(!m_instance);
 
     m_instance = this;
+    QemuRuntimeManager::instance(this);
     MaemoDeviceConfigurations::instance(this);
 
-    ExtensionSystem::PluginManager *pluginManager
-        = ExtensionSystem::PluginManager::instance();
+    PluginManager *pluginManager = PluginManager::instance();
     pluginManager->addObject(m_runControlFactory);
     pluginManager->addObject(m_runConfigurationFactory);
     pluginManager->addObject(m_packageCreationFactory);
@@ -71,8 +74,7 @@ MaemoManager::MaemoManager()
 
 MaemoManager::~MaemoManager()
 {
-    ExtensionSystem::PluginManager *pluginManager
-        = ExtensionSystem::PluginManager::instance();
+    PluginManager *pluginManager = PluginManager::instance();
     pluginManager->removeObject(m_runControlFactory);
     pluginManager->removeObject(m_runConfigurationFactory);
     pluginManager->removeObject(m_packageCreationFactory);
@@ -87,13 +89,7 @@ MaemoManager &MaemoManager::instance()
     return *m_instance;
 }
 
-void MaemoManager::init()
-{
-    m_qemuRuntimeManager = new QemuRuntimeManager(this);
-}
-
-bool
-MaemoManager::isValidMaemoQtVersion(const Qt4ProjectManager::QtVersion *version) const
+bool MaemoManager::isValidMaemoQtVersion(const QtVersion *version) const
 {
     QString path = QDir::cleanPath(version->qmakeCommand());
     path = path.remove(QLatin1String("/bin/qmake" EXEC_SUFFIX));
@@ -116,8 +112,7 @@ MaemoManager::isValidMaemoQtVersion(const Qt4ProjectManager::QtVersion *version)
     return false;
 }
 
-ProjectExplorer::ToolChain*
-MaemoManager::maemoToolChain(const QtVersion *version) const
+ToolChain* MaemoManager::maemoToolChain(const QtVersion *version) const
 {
     QString targetRoot = QDir::cleanPath(version->qmakeCommand());
     targetRoot.remove(QLatin1String("/bin/qmake" EXEC_SUFFIX));
diff --git a/src/plugins/qt4projectmanager/qt-maemo/maemomanager.h b/src/plugins/qt4projectmanager/qt-maemo/maemomanager.h
index 786ac125e26..689fbfa27ff 100644
--- a/src/plugins/qt4projectmanager/qt-maemo/maemomanager.h
+++ b/src/plugins/qt4projectmanager/qt-maemo/maemomanager.h
@@ -56,8 +56,6 @@ public:
     ~MaemoManager();
     static MaemoManager &instance();
 
-    void init();
-
     bool isValidMaemoQtVersion(const Qt4ProjectManager::QtVersion *version) const;
     ToolChain *maemoToolChain(const Qt4ProjectManager::QtVersion *version) const;
 
diff --git a/src/plugins/qt4projectmanager/qt-maemo/qemuruntimemanager.cpp b/src/plugins/qt4projectmanager/qt-maemo/qemuruntimemanager.cpp
index 3d16648d76a..427e118e0b0 100644
--- a/src/plugins/qt4projectmanager/qt-maemo/qemuruntimemanager.cpp
+++ b/src/plugins/qt4projectmanager/qt-maemo/qemuruntimemanager.cpp
@@ -69,9 +69,6 @@ QemuRuntimeManager::QemuRuntimeManager(QObject *parent)
     , m_needsSetup(true)
     , m_userTerminated(false)
 {
-    Q_ASSERT(!m_instance);
-    m_instance = this;
-
     m_qemuStarterIcon.addFile(":/qt-maemo/images/qemu-run.png", iconSize);
     m_qemuStarterIcon.addFile(":/qt-maemo/images/qemu-stop.png", iconSize,
         QIcon::Normal, QIcon::On);
@@ -117,11 +114,13 @@ QemuRuntimeManager::QemuRuntimeManager(QObject *parent)
 QemuRuntimeManager::~QemuRuntimeManager()
 {
     terminateRuntime();
+    m_instance = 0;
 }
 
-QemuRuntimeManager &QemuRuntimeManager::instance()
+QemuRuntimeManager &QemuRuntimeManager::instance(QObject *parent)
 {
-    Q_ASSERT(m_instance);
+    if (m_instance == 0)
+        m_instance = new QemuRuntimeManager(parent);
     return *m_instance;
 }
 
diff --git a/src/plugins/qt4projectmanager/qt-maemo/qemuruntimemanager.h b/src/plugins/qt4projectmanager/qt-maemo/qemuruntimemanager.h
index 0054596b2e9..707745a8c9d 100644
--- a/src/plugins/qt4projectmanager/qt-maemo/qemuruntimemanager.h
+++ b/src/plugins/qt4projectmanager/qt-maemo/qemuruntimemanager.h
@@ -71,10 +71,7 @@ class QemuRuntimeManager : public QObject
     Q_OBJECT
 
 public:
-    QemuRuntimeManager(QObject *parent = 0);
-    ~QemuRuntimeManager();
-
-    static QemuRuntimeManager& instance();
+    static QemuRuntimeManager& instance(QObject *parent = 0);
 
     bool runtimeForQtVersion(int uniqueId, Runtime *rt) const;
 
@@ -111,6 +108,9 @@ private slots:
     void qemuStatusChanged(QemuStatus status, const QString &error);
 
 private:
+    QemuRuntimeManager(QObject *parent);
+    ~QemuRuntimeManager();
+
     void setupRuntimes();
     bool sessionHasMaemoTarget() const;
 
diff --git a/src/plugins/qt4projectmanager/qt4projectmanagerplugin.cpp b/src/plugins/qt4projectmanager/qt4projectmanagerplugin.cpp
index f79dec8c08c..6a1f08e01d9 100644
--- a/src/plugins/qt4projectmanager/qt4projectmanagerplugin.cpp
+++ b/src/plugins/qt4projectmanager/qt4projectmanagerplugin.cpp
@@ -153,7 +153,7 @@ bool Qt4ProjectManagerPlugin::initialize(const QStringList &arguments, QString *
     addAutoReleasedObject(new LinguistExternalEditor);
 
     addAutoReleasedObject(new S60Manager);
-    addAutoReleasedObject(m_maemoManager = new MaemoManager);
+    addAutoReleasedObject(new MaemoManager);
 
     new ProFileCacheManager(this);
 
@@ -228,7 +228,6 @@ bool Qt4ProjectManagerPlugin::initialize(const QStringList &arguments, QString *
 void Qt4ProjectManagerPlugin::extensionsInitialized()
 {
     m_qt4ProjectManager->init();
-    m_maemoManager->init(); // depends on the Qt4ProjectManager
 }
 
 void Qt4ProjectManagerPlugin::updateContextMenu(Project *project,
diff --git a/src/plugins/qt4projectmanager/qt4projectmanagerplugin.h b/src/plugins/qt4projectmanager/qt4projectmanagerplugin.h
index eec6477524e..b6697d6f177 100644
--- a/src/plugins/qt4projectmanager/qt4projectmanagerplugin.h
+++ b/src/plugins/qt4projectmanager/qt4projectmanagerplugin.h
@@ -56,7 +56,6 @@ class QMakeStepFactory;
 class MakeStepFactory;
 class EmbeddedPropertiesPage;
 class GettingStartedWelcomePage;
-class MaemoManager;
 
 class Qt4ProjectManagerPlugin : public ExtensionSystem::IPlugin
 {
@@ -86,7 +85,6 @@ private:
     ProjectExplorer::ProjectExplorerPlugin *m_projectExplorer;
     ProFileEditorFactory *m_proFileEditorFactory;
     Qt4Manager *m_qt4ProjectManager;
-    MaemoManager *m_maemoManager;
 
     int m_projectContext;
 
-- 
GitLab