From 91259db4fb6f786ee4aec5f60eaf2e1c404476bd Mon Sep 17 00:00:00 2001 From: Kai Koehne Date: Mon, 9 May 2011 11:19:37 +0200 Subject: [PATCH] DebuggingHelper: Always invalidate cached QtVersion information after run Moving this to DebuggingHelperBuildTask / QtVersionManager makes sure the version information is also updated if e.g. the QtOptionsPage has been closed in between. Also, update all Qt versions that share the same qmake path. Change-Id: Idc23f6d9fa609e2a36f1d6d4cb09c6483afd4cc4 --- src/plugins/qt4projectmanager/debugginghelperbuildtask.cpp | 6 ++++++ src/plugins/qt4projectmanager/qmakestep.cpp | 1 - src/plugins/qt4projectmanager/qmldumptool.cpp | 2 -- src/plugins/qt4projectmanager/qtoptionspage.cpp | 1 - src/plugins/qt4projectmanager/qtversionmanager.cpp | 13 +++++++++++++ src/plugins/qt4projectmanager/qtversionmanager.h | 4 ++++ 6 files changed, 23 insertions(+), 4 deletions(-) diff --git a/src/plugins/qt4projectmanager/debugginghelperbuildtask.cpp b/src/plugins/qt4projectmanager/debugginghelperbuildtask.cpp index 8abdc40b1c..eee1e2224d 100644 --- a/src/plugins/qt4projectmanager/debugginghelperbuildtask.cpp +++ b/src/plugins/qt4projectmanager/debugginghelperbuildtask.cpp @@ -35,6 +35,7 @@ #include "qmlobservertool.h" #include "qmldebugginglibrary.h" #include +#include #include #include #include @@ -91,6 +92,11 @@ DebuggingHelperBuildTask::DebuggingHelperBuildTask(const BaseQtVersion *version, m_qmakeCommand = version->qmakeCommand(); m_makeCommand = tc->makeCommand(); m_mkspec = version->mkspec(); + + // Make sure QtVersion cache is invalidated + connect(this, SIGNAL(finished(int,QString,DebuggingHelperBuildTask::Tools)), + QtVersionManager::instance(), SLOT(updateQtVersion(int)), + Qt::QueuedConnection); } DebuggingHelperBuildTask::~DebuggingHelperBuildTask() diff --git a/src/plugins/qt4projectmanager/qmakestep.cpp b/src/plugins/qt4projectmanager/qmakestep.cpp index f9de9c62a6..e9e1594d57 100644 --- a/src/plugins/qt4projectmanager/qmakestep.cpp +++ b/src/plugins/qt4projectmanager/qmakestep.cpp @@ -591,7 +591,6 @@ void QMakeStepConfigWidget::debuggingHelperBuildFinished(int qtVersionId, const BaseQtVersion *version = QtVersionManager::instance()->version(qtVersionId); if (!version) // qt version got deleted in between return; - version->recheckDumper(); if (version == m_step->qt4BuildConfiguration()->qtVersion()) { m_ui.qmlDebuggingLibraryCheckBox->setChecked(m_step->linkQmlDebuggingLibrary()); diff --git a/src/plugins/qt4projectmanager/qmldumptool.cpp b/src/plugins/qt4projectmanager/qmldumptool.cpp index 3cceedda5c..a2aef68d49 100644 --- a/src/plugins/qt4projectmanager/qmldumptool.cpp +++ b/src/plugins/qt4projectmanager/qmldumptool.cpp @@ -112,8 +112,6 @@ private slots: m_failed = true; errorMessage = QString::fromLatin1("Qt version became invalid"); } else { - version->recheckDumper(); - if (!version->hasQmlDump()) { m_failed = true; errorMessage = QString::fromLatin1("Could not build QML plugin dumping helper for %1\n" diff --git a/src/plugins/qt4projectmanager/qtoptionspage.cpp b/src/plugins/qt4projectmanager/qtoptionspage.cpp index f60c65e0ea..c9851631f6 100644 --- a/src/plugins/qt4projectmanager/qtoptionspage.cpp +++ b/src/plugins/qt4projectmanager/qtoptionspage.cpp @@ -246,7 +246,6 @@ void QtOptionsPageWidget::debuggingHelperBuildFinished(int qtVersionId, const QS return; // Oops, somebody managed to delete the version BaseQtVersion *version = m_versions.at(index); - version->recheckDumper(); // Update item view QTreeWidgetItem *item = treeItemForIndex(index); diff --git a/src/plugins/qt4projectmanager/qtversionmanager.cpp b/src/plugins/qt4projectmanager/qtversionmanager.cpp index a81ce5c28b..37069c0663 100644 --- a/src/plugins/qt4projectmanager/qtversionmanager.cpp +++ b/src/plugins/qt4projectmanager/qtversionmanager.cpp @@ -370,6 +370,19 @@ void QtVersionManager::updateDocumentation() helpManager->registerDocumentation(files); } +void QtVersionManager::updateQtVersion(int id) +{ + BaseQtVersion *qtVersion = version(id); + QTC_ASSERT(qtVersion, return); + + // update actually all Qt versions with the same qmake command + const QString qmakeCommand = qtVersion->qmakeCommand(); + foreach (BaseQtVersion *v, versions()) { + if (v->qmakeCommand() == qmakeCommand) + v->recheckDumper(); + } +} + void QtVersionManager::updateSettings() { updateDocumentation(); diff --git a/src/plugins/qt4projectmanager/qtversionmanager.h b/src/plugins/qt4projectmanager/qtversionmanager.h index 2b676e06f3..ed7cd8ded1 100644 --- a/src/plugins/qt4projectmanager/qtversionmanager.h +++ b/src/plugins/qt4projectmanager/qtversionmanager.h @@ -121,8 +121,12 @@ signals: void qtVersionsChanged(const QList &uniqueIds); void updateExamples(QString, QString, QString); +public slots: + void updateQtVersion(int id); + private slots: void updateSettings(); + private: // This function is really simplistic... static bool equals(BaseQtVersion *a, BaseQtVersion *b); -- 2.11.0