From 994ab55247e7e0dbf6d47847e30f2222411e1060 Mon Sep 17 00:00:00 2001 From: ed Date: Thu, 19 Oct 2017 12:19:57 +0100 Subject: [PATCH] Projucer: Made some usability and reliability improvements to the live-build engine --- .../LiveBuildEngine/jucer_CompileEngineClient.cpp | 6 +++++- .../LiveBuildEngine/jucer_CompileEngineClient.h | 4 +--- .../Project/UI/jucer_ProjectContentComponent.cpp | 15 +++++++++------ .../Project/UI/jucer_ProjectContentComponent.h | 2 +- 4 files changed, 16 insertions(+), 11 deletions(-) diff --git a/extras/Projucer/Source/LiveBuildEngine/jucer_CompileEngineClient.cpp b/extras/Projucer/Source/LiveBuildEngine/jucer_CompileEngineClient.cpp index 1f9f612de1..846a3c4d44 100644 --- a/extras/Projucer/Source/LiveBuildEngine/jucer_CompileEngineClient.cpp +++ b/extras/Projucer/Source/LiveBuildEngine/jucer_CompileEngineClient.cpp @@ -264,7 +264,11 @@ private: void* server; #endif - void timerCallback() { owner.handleCrash (String()); } + void timerCallback() + { + stopTimer(); + owner.handleCrash (String()); + } }; //============================================================================== diff --git a/extras/Projucer/Source/LiveBuildEngine/jucer_CompileEngineClient.h b/extras/Projucer/Source/LiveBuildEngine/jucer_CompileEngineClient.h index 1af265e37c..4acf4f4ab7 100644 --- a/extras/Projucer/Source/LiveBuildEngine/jucer_CompileEngineClient.h +++ b/extras/Projucer/Source/LiveBuildEngine/jucer_CompileEngineClient.h @@ -144,9 +144,7 @@ struct ChildProcessCache void removeOrphans() { - for (int i = processes.size(); --i >= 0;) - if (processes.getObjectPointerUnchecked (i)->getReferenceCount() <= 1) - processes.remove (i); + processes.clear(); } private: diff --git a/extras/Projucer/Source/Project/UI/jucer_ProjectContentComponent.cpp b/extras/Projucer/Source/Project/UI/jucer_ProjectContentComponent.cpp index a10a6eb80b..dab399aaff 100644 --- a/extras/Projucer/Source/Project/UI/jucer_ProjectContentComponent.cpp +++ b/extras/Projucer/Source/Project/UI/jucer_ProjectContentComponent.cpp @@ -1129,16 +1129,19 @@ void ProjectContentComponent::killChildProcess() } } -void ProjectContentComponent::setBuildEnabled (bool b) +void ProjectContentComponent::setBuildEnabled (bool isEnabled, bool displayError) { - if (project != nullptr && b != isBuildEnabled()) + if (project != nullptr && isEnabled != isBuildEnabled()) { - LiveBuildProjectSettings::setBuildDisabled (*project, ! b); + if (! displayError) + lastCrashMessage = {}; + + LiveBuildProjectSettings::setBuildDisabled (*project, ! isEnabled); killChildProcess(); refreshTabsIfBuildStatusChanged(); if (auto* h = dynamic_cast (header.get())) - h->updateBuildButtons (b, isContinuousRebuildEnabled()); + h->updateBuildButtons (isEnabled, isContinuousRebuildEnabled()); } } @@ -1159,7 +1162,7 @@ void ProjectContentComponent::handleCrash (const String& message) if (project != nullptr) { - setBuildEnabled (false); + setBuildEnabled (false, true); showBuildTab(); } } @@ -1316,7 +1319,7 @@ void ProjectContentComponent::handleMissingSystemHeaders() const String alertWindowMessage = "Missing system headers\nPlease do sudo apt-get install ..."; #endif - setBuildEnabled (false); + setBuildEnabled (false, true); deleteProjectTabs(); createProjectTabs(); diff --git a/extras/Projucer/Source/Project/UI/jucer_ProjectContentComponent.h b/extras/Projucer/Source/Project/UI/jucer_ProjectContentComponent.h index ab3e859a7d..b1cf8fc800 100644 --- a/extras/Projucer/Source/Project/UI/jucer_ProjectContentComponent.h +++ b/extras/Projucer/Source/Project/UI/jucer_ProjectContentComponent.h @@ -118,7 +118,7 @@ public: void cleanAll(); void handleMissingSystemHeaders(); bool isBuildTabEnabled() const; - void setBuildEnabled (bool); + void setBuildEnabled (bool enabled, bool displayError = false); bool isBuildEnabled() const; bool areWarningsEnabled() const;