Index: tools/gn/scheduler.cc |
diff --git a/tools/gn/scheduler.cc b/tools/gn/scheduler.cc |
index 72c310bb071d1072698e3bdee6cf18b56c793965..254de0d5a097d6a4b5e24e8b7898de09cae33ce8 100644 |
--- a/tools/gn/scheduler.cc |
+++ b/tools/gn/scheduler.cc |
@@ -7,7 +7,6 @@ |
#include "base/bind.h" |
#include "base/command_line.h" |
#include "base/strings/string_number_conversions.h" |
-#include "tools/gn/ninja_target_writer.h" |
#include "tools/gn/standard_out.h" |
Scheduler* g_scheduler = NULL; |
@@ -31,17 +30,22 @@ Scheduler::Scheduler() |
input_file_manager_(new InputFileManager), |
verbose_logging_(false), |
work_count_(0), |
- is_failed_(false) { |
+ is_failed_(false), |
+ has_been_shutdown_(false) { |
g_scheduler = this; |
} |
Scheduler::~Scheduler() { |
+ if (!has_been_shutdown_) |
+ pool_->Shutdown(); |
g_scheduler = NULL; |
} |
bool Scheduler::Run() { |
runner_.Run(); |
+ base::AutoLock lock(lock_); |
pool_->Shutdown(); |
+ has_been_shutdown_ = true; |
return !is_failed(); |
} |
@@ -86,13 +90,6 @@ void Scheduler::ScheduleWork(const base::Closure& work) { |
base::SequencedWorkerPool::BLOCK_SHUTDOWN); |
} |
-void Scheduler::ScheduleTargetFileWrite(const Target* target) { |
- pool_->PostWorkerTaskWithShutdownBehavior( |
- FROM_HERE, base::Bind(&Scheduler::DoTargetFileWrite, |
- base::Unretained(this), target), |
- base::SequencedWorkerPool::BLOCK_SHUTDOWN); |
-} |
- |
void Scheduler::AddGenDependency(const base::FilePath& file) { |
base::AutoLock lock(lock_); |
gen_dependencies_.push_back(file); |
@@ -130,10 +127,6 @@ void Scheduler::FailWithErrorOnMainThread(const Err& err) { |
runner_.Quit(); |
} |
-void Scheduler::DoTargetFileWrite(const Target* target) { |
- NinjaTargetWriter::RunAndWriteFile(target); |
-} |
- |
void Scheduler::DoWork(const base::Closure& closure) { |
closure.Run(); |
DecrementWorkCount(); |