aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTobias Hunger <tobias.hunger@digia.com>2014-03-31 12:20:39 +0200
committerTobias Hunger <tobias.hunger@digia.com>2014-03-31 13:50:48 +0200
commitcbb053068ccc6399dc7a392df615cda46264cf8d (patch)
treeb462bfde994cb2c00bd15804578cb0b404795e54
parentd9c66e7a7732f561df419cec2679841049cd363f (diff)
QtVersionManager: Only load Qt versions after the toolchains are available
The mingw Qt versions need to know the mingw toolchains to run qmake since that may link to a library provided by mingw. This patch delays loading of the Qt versions till after the Tool Chains are available by explicitly listening to the toolChainsLoaded signal of the Toolchain Manager. I do not see how else we can enforce the proper ordering with the plugin initialization scheme we have. Task-number: QTCREATORBUG-11898 Change-Id: I5a93c2b2b32c658695017295652242a5aaa6ee60 Reviewed-by: Daniel Teske <daniel.teske@digia.com> Reviewed-by: Tobias Hunger <tobias.hunger@digia.com>
-rw-r--r--src/plugins/qtsupport/qtsupportplugin.cpp4
-rw-r--r--src/plugins/qtsupport/qtversionmanager.cpp13
-rw-r--r--src/plugins/qtsupport/qtversionmanager.h3
3 files changed, 16 insertions, 4 deletions
diff --git a/src/plugins/qtsupport/qtsupportplugin.cpp b/src/plugins/qtsupport/qtsupportplugin.cpp
index d40449199a..0fb831fcd2 100644
--- a/src/plugins/qtsupport/qtsupportplugin.cpp
+++ b/src/plugins/qtsupport/qtsupportplugin.cpp
@@ -96,6 +96,8 @@ bool QtSupportPlugin::initialize(const QStringList &arguments, QString *errorMes
ProjectExplorer::KitManager::registerKitInformation(new QtKitInformation);
+ QtVersionManager::initialized();
+
return true;
}
@@ -108,8 +110,6 @@ void QtSupportPlugin::extensionsInitialized()
" You probably want %1 instead.").arg(QString::fromLatin1(kHostBins)));
connect(VariableManager::instance(), SIGNAL(variableUpdateRequested(QByteArray)),
this, SLOT(updateVariable(QByteArray)));
-
- QtVersionManager::extensionsInitialized();
}
bool QtSupportPlugin::delayedInitialize()
diff --git a/src/plugins/qtsupport/qtversionmanager.cpp b/src/plugins/qtsupport/qtversionmanager.cpp
index 37e2cd3699..a0081e4e03 100644
--- a/src/plugins/qtsupport/qtversionmanager.cpp
+++ b/src/plugins/qtsupport/qtversionmanager.cpp
@@ -40,6 +40,8 @@
#include <extensionsystem/pluginmanager.h>
+#include <projectexplorer/toolchainmanager.h>
+
#include <utils/buildablehelperlibrary.h>
#include <utils/filesystemwatcher.h>
#include <utils/hostosinfo.h>
@@ -159,8 +161,11 @@ QtVersionManager::QtVersionManager()
connect(m_fileWatcherTimer, SIGNAL(timeout()), SLOT(updateFromInstaller()));
}
-void QtVersionManager::extensionsInitialized()
+void QtVersionManager::triggerQtVersionRestore()
{
+ disconnect(ProjectExplorer::ToolChainManager::instance(), SIGNAL(toolChainsLoaded()),
+ this, SLOT(triggerQtVersionRestore()));
+
bool success = restoreQtVersions();
m_instance->updateFromInstaller(false);
if (!success) {
@@ -202,6 +207,12 @@ QtVersionManager::~QtVersionManager()
m_versions.clear();
}
+void QtVersionManager::initialized()
+{
+ connect(ProjectExplorer::ToolChainManager::instance(), SIGNAL(toolChainsLoaded()),
+ QtVersionManager::instance(), SLOT(triggerQtVersionRestore()));
+}
+
QObject *QtVersionManager::instance()
{
return m_instance;
diff --git a/src/plugins/qtsupport/qtversionmanager.h b/src/plugins/qtsupport/qtversionmanager.h
index c4b2fda07c..8f8bf538e4 100644
--- a/src/plugins/qtsupport/qtversionmanager.h
+++ b/src/plugins/qtsupport/qtversionmanager.h
@@ -45,7 +45,7 @@ public:
static QObject *instance();
QtVersionManager();
~QtVersionManager();
- static void extensionsInitialized();
+ static void initialized();
static bool delayedInitialize();
static bool isLoaded();
@@ -83,6 +83,7 @@ public slots:
private slots:
void updateFromInstaller(bool emitSignal = true);
+ void triggerQtVersionRestore();
private:
// Used by QtOptionsPage