forked from qt-creator/qt-creator
QmlDump: Avoid crash when removing project during rebuild.
This commit is contained in:
@@ -83,9 +83,17 @@ public:
|
|||||||
m_buildTask->run(future);
|
m_buildTask->run(future);
|
||||||
}
|
}
|
||||||
|
|
||||||
void updateProjectWhenDone(ProjectExplorer::Project *project, bool preferDebug)
|
void updateProjectWhenDone(QPointer<ProjectExplorer::Project> project, bool preferDebug)
|
||||||
{
|
{
|
||||||
m_projectsToUpdate.insert(qMakePair(project, preferDebug));
|
foreach (const ProjectToUpdate &update, m_projectsToUpdate) {
|
||||||
|
if (update.project == project)
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
ProjectToUpdate update;
|
||||||
|
update.project = project;
|
||||||
|
update.preferDebug = preferDebug;
|
||||||
|
m_projectsToUpdate += update;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool hasFailed() const
|
bool hasFailed() const
|
||||||
@@ -123,12 +131,13 @@ private slots:
|
|||||||
if (!modelManager)
|
if (!modelManager)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
typedef QPair<ProjectExplorer::Project *, bool> ProjectAndDebug;
|
foreach (const ProjectToUpdate &update, m_projectsToUpdate) {
|
||||||
foreach (ProjectAndDebug projectAndDebug, m_projectsToUpdate) {
|
if (!update.project)
|
||||||
QmlJS::ModelManagerInterface::ProjectInfo projectInfo = modelManager->projectInfo(projectAndDebug.first);
|
continue;
|
||||||
projectInfo.qmlDumpPath = version->qmlDumpTool(projectAndDebug.second);
|
QmlJS::ModelManagerInterface::ProjectInfo projectInfo = modelManager->projectInfo(update.project);
|
||||||
|
projectInfo.qmlDumpPath = version->qmlDumpTool(update.preferDebug);
|
||||||
if (projectInfo.qmlDumpPath.isEmpty())
|
if (projectInfo.qmlDumpPath.isEmpty())
|
||||||
projectInfo.qmlDumpPath = version->qmlDumpTool(!projectAndDebug.second);
|
projectInfo.qmlDumpPath = version->qmlDumpTool(!update.preferDebug);
|
||||||
projectInfo.qmlDumpEnvironment = version->qmlToolsEnvironment();
|
projectInfo.qmlDumpEnvironment = version->qmlToolsEnvironment();
|
||||||
modelManager->updateProjectInfo(projectInfo);
|
modelManager->updateProjectInfo(projectInfo);
|
||||||
}
|
}
|
||||||
@@ -139,7 +148,13 @@ private slots:
|
|||||||
}
|
}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
QSet<QPair<ProjectExplorer::Project *, bool> > m_projectsToUpdate;
|
class ProjectToUpdate {
|
||||||
|
public:
|
||||||
|
QPointer<ProjectExplorer::Project> project;
|
||||||
|
bool preferDebug;
|
||||||
|
};
|
||||||
|
|
||||||
|
QList<ProjectToUpdate> m_projectsToUpdate;
|
||||||
Internal::DebuggingHelperBuildTask *m_buildTask; // deletes itself after run()
|
Internal::DebuggingHelperBuildTask *m_buildTask; // deletes itself after run()
|
||||||
QtVersion m_version;
|
QtVersion m_version;
|
||||||
bool m_failed;
|
bool m_failed;
|
||||||
|
Reference in New Issue
Block a user