From 92c067ba362ce612b35484a8b5a5153aaaf9db51 Mon Sep 17 00:00:00 2001 From: Orgad Shaneh Date: Mon, 7 Oct 2019 14:29:03 +0300 Subject: [PATCH] ProjectExplorer: Add a setting for low build priority MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Default is false. Task-number: QTCREATORBUG-23048 Change-Id: I0f0cc787229456aad2ddf47e4ef37bad58af2038 Reviewed-by: André Hartmann Reviewed-by: Christian Kandeler --- src/plugins/cmakeprojectmanager/cmakebuildstep.cpp | 2 +- src/plugins/projectexplorer/abstractprocessstep.cpp | 7 +++++-- src/plugins/projectexplorer/abstractprocessstep.h | 2 +- src/plugins/projectexplorer/makestep.cpp | 2 +- src/plugins/projectexplorer/projectexplorer.cpp | 5 +++++ src/plugins/projectexplorer/projectexplorersettings.h | 2 ++ .../projectexplorer/projectexplorersettingspage.cpp | 2 ++ .../projectexplorer/projectexplorersettingspage.ui | 11 +++++++++++ src/plugins/qmakeprojectmanager/qmakestep.cpp | 2 +- 9 files changed, 29 insertions(+), 6 deletions(-) diff --git a/src/plugins/cmakeprojectmanager/cmakebuildstep.cpp b/src/plugins/cmakeprojectmanager/cmakebuildstep.cpp index 68b514d6f13..581adade966 100644 --- a/src/plugins/cmakeprojectmanager/cmakebuildstep.cpp +++ b/src/plugins/cmakeprojectmanager/cmakebuildstep.cpp @@ -87,7 +87,7 @@ CMakeBuildStep::CMakeBuildStep(BuildStepList *bsl) : if (m_buildTarget.isEmpty()) setBuildTarget(defaultBuildTarget()); - setLowPriority(); + setLowPriorityIfConfigured(); connect(target(), &Target::kitChanged, this, &CMakeBuildStep::cmakeCommandChanged); connect(project(), &Project::parsingFinished, diff --git a/src/plugins/projectexplorer/abstractprocessstep.cpp b/src/plugins/projectexplorer/abstractprocessstep.cpp index de80337d55e..ce16dea25f7 100644 --- a/src/plugins/projectexplorer/abstractprocessstep.cpp +++ b/src/plugins/projectexplorer/abstractprocessstep.cpp @@ -30,6 +30,8 @@ #include "ioutputparser.h" #include "processparameters.h" #include "project.h" +#include "projectexplorer.h" +#include "projectexplorersettings.h" #include "target.h" #include "task.h" @@ -249,9 +251,10 @@ void AbstractProcessStep::doRun() processStarted(); } -void AbstractProcessStep::setLowPriority() +void AbstractProcessStep::setLowPriorityIfConfigured() { - d->m_lowPriority = true; + if (ProjectExplorerPlugin::projectExplorerSettings().lowBuildPriority) + d->m_lowPriority = true; } void AbstractProcessStep::doCancel() diff --git a/src/plugins/projectexplorer/abstractprocessstep.h b/src/plugins/projectexplorer/abstractprocessstep.h index 3cc7aa8bf50..a4a0350b20c 100644 --- a/src/plugins/projectexplorer/abstractprocessstep.h +++ b/src/plugins/projectexplorer/abstractprocessstep.h @@ -57,7 +57,7 @@ protected: ~AbstractProcessStep() override; bool init() override; void doRun() override; - void setLowPriority(); + void setLowPriorityIfConfigured(); virtual void finish(bool success); virtual void processStarted(); diff --git a/src/plugins/projectexplorer/makestep.cpp b/src/plugins/projectexplorer/makestep.cpp index 7bfcc0655be..d4acb5629d8 100644 --- a/src/plugins/projectexplorer/makestep.cpp +++ b/src/plugins/projectexplorer/makestep.cpp @@ -65,7 +65,7 @@ MakeStep::MakeStep(BuildStepList *parent, Core::Id id) m_userJobCount(defaultJobCount()) { setDefaultDisplayName(defaultDisplayName()); - setLowPriority(); + setLowPriorityIfConfigured(); } void MakeStep::setBuildTarget(const QString &buildTarget) diff --git a/src/plugins/projectexplorer/projectexplorer.cpp b/src/plugins/projectexplorer/projectexplorer.cpp index be4a5b65cbd..6c33f24370a 100644 --- a/src/plugins/projectexplorer/projectexplorer.cpp +++ b/src/plugins/projectexplorer/projectexplorer.cpp @@ -256,6 +256,7 @@ const char CLOSE_FILES_WITH_PROJECT_SETTINGS_KEY[] const char CLEAR_ISSUES_ON_REBUILD_SETTINGS_KEY[] = "ProjectExplorer/Settings/ClearIssuesOnRebuild"; const char ABORT_BUILD_ALL_ON_ERROR_SETTINGS_KEY[] = "ProjectExplorer/Settings/AbortBuildAllOnError"; +const char LOW_BUILD_PRIORITY_SETTINGS_KEY[] = "ProjectExplorer/Settings/LowBuildPriority"; } // namespace Constants @@ -1395,6 +1396,8 @@ bool ProjectExplorerPlugin::initialize(const QStringList &arguments, QString *er = s->value(Constants::CLEAR_ISSUES_ON_REBUILD_SETTINGS_KEY, true).toBool(); dd->m_projectExplorerSettings.abortBuildAllOnError = s->value(Constants::ABORT_BUILD_ALL_ON_ERROR_SETTINGS_KEY, true).toBool(); + dd->m_projectExplorerSettings.lowBuildPriority + = s->value(Constants::LOW_BUILD_PRIORITY_SETTINGS_KEY, false).toBool(); dd->m_projectExplorerSettings.buildDirectoryTemplate = s->value(Constants::DEFAULT_BUILD_DIRECTORY_TEMPLATE_KEY).toString(); if (dd->m_projectExplorerSettings.buildDirectoryTemplate.isEmpty()) @@ -2002,6 +2005,8 @@ void ProjectExplorerPluginPrivate::savePersistentSettings() dd->m_projectExplorerSettings.clearIssuesOnRebuild); s->setValue(Constants::ABORT_BUILD_ALL_ON_ERROR_SETTINGS_KEY, dd->m_projectExplorerSettings.abortBuildAllOnError); + s->setValue(Constants::LOW_BUILD_PRIORITY_SETTINGS_KEY, + dd->m_projectExplorerSettings.lowBuildPriority); s->setValue(QLatin1String("ProjectExplorer/Settings/AutomaticallyCreateRunConfigurations"), dd->m_projectExplorerSettings.automaticallyCreateRunConfigurations); s->setValue(QLatin1String("ProjectExplorer/Settings/EnvironmentId"), dd->m_projectExplorerSettings.environmentId.toByteArray()); diff --git a/src/plugins/projectexplorer/projectexplorersettings.h b/src/plugins/projectexplorer/projectexplorersettings.h index 6472725db6b..920f849fe11 100644 --- a/src/plugins/projectexplorer/projectexplorersettings.h +++ b/src/plugins/projectexplorer/projectexplorersettings.h @@ -52,6 +52,7 @@ public: bool closeSourceFilesWithProject = true; bool clearIssuesOnRebuild = true; bool abortBuildAllOnError = true; + bool lowBuildPriority = false; StopBeforeBuild stopBeforeBuild = StopBeforeBuild::StopNone; TerminalMode terminalMode = TerminalMode::Smart; QString buildDirectoryTemplate; @@ -78,6 +79,7 @@ inline bool operator==(const ProjectExplorerSettings &p1, const ProjectExplorerS && p1.closeSourceFilesWithProject == p2.closeSourceFilesWithProject && p1.clearIssuesOnRebuild == p2.clearIssuesOnRebuild && p1.abortBuildAllOnError == p2.abortBuildAllOnError + && p1.lowBuildPriority == p2.lowBuildPriority && p1.buildDirectoryTemplate == p2.buildDirectoryTemplate; } diff --git a/src/plugins/projectexplorer/projectexplorersettingspage.cpp b/src/plugins/projectexplorer/projectexplorersettingspage.cpp index 78727aa08b6..5251eff14c8 100644 --- a/src/plugins/projectexplorer/projectexplorersettingspage.cpp +++ b/src/plugins/projectexplorer/projectexplorersettingspage.cpp @@ -109,6 +109,7 @@ ProjectExplorerSettings ProjectExplorerSettingsWidget::settings() const m_settings.closeSourceFilesWithProject = m_ui.closeSourceFilesCheckBox->isChecked(); m_settings.clearIssuesOnRebuild = m_ui.clearIssuesCheckBox->isChecked(); m_settings.abortBuildAllOnError = m_ui.abortBuildAllOnErrorCheckBox->isChecked(); + m_settings.lowBuildPriority = m_ui.lowBuildPriorityCheckBox->isChecked(); m_settings.buildDirectoryTemplate = buildDirectoryTemplate(); return m_settings; } @@ -128,6 +129,7 @@ void ProjectExplorerSettingsWidget::setSettings(const ProjectExplorerSettings & m_ui.closeSourceFilesCheckBox->setChecked(m_settings.closeSourceFilesWithProject); m_ui.clearIssuesCheckBox->setChecked(m_settings.clearIssuesOnRebuild); m_ui.abortBuildAllOnErrorCheckBox->setChecked(m_settings.abortBuildAllOnError); + m_ui.lowBuildPriorityCheckBox->setChecked(m_settings.lowBuildPriority); setBuildDirectoryTemplate(pes.buildDirectoryTemplate); } diff --git a/src/plugins/projectexplorer/projectexplorersettingspage.ui b/src/plugins/projectexplorer/projectexplorersettingspage.ui index dc826601127..80520451138 100644 --- a/src/plugins/projectexplorer/projectexplorersettingspage.ui +++ b/src/plugins/projectexplorer/projectexplorersettingspage.ui @@ -148,6 +148,16 @@ + + + + Enable this if your system becomes unresponsive while building. + + + Start build processes with low priority + + + @@ -310,6 +320,7 @@ addLibraryPathsToRunEnvCheckBox clearIssuesCheckBox abortBuildAllOnErrorCheckBox + lowBuildPriorityCheckBox diff --git a/src/plugins/qmakeprojectmanager/qmakestep.cpp b/src/plugins/qmakeprojectmanager/qmakestep.cpp index 84b756012f3..44b96519fdd 100644 --- a/src/plugins/qmakeprojectmanager/qmakestep.cpp +++ b/src/plugins/qmakeprojectmanager/qmakestep.cpp @@ -76,7 +76,7 @@ QMakeStep::QMakeStep(BuildStepList *bsl) : AbstractProcessStep(bsl, Constants::Q { //: QMakeStep default display name setDefaultDisplayName(tr("qmake")); - setLowPriority(); + setLowPriorityIfConfigured(); } QmakeBuildConfiguration *QMakeStep::qmakeBuildConfiguration() const