Index: gpu/command_buffer/service/program_manager.cc |
diff --git a/gpu/command_buffer/service/program_manager.cc b/gpu/command_buffer/service/program_manager.cc |
index 754d5b0630b16d7d450787076dbbfbfd6b3fb257..032935b5419eae1dd55877fea9fdf7f49eda79de 100644 |
--- a/gpu/command_buffer/service/program_manager.cc |
+++ b/gpu/command_buffer/service/program_manager.cc |
@@ -28,6 +28,7 @@ |
#include "gpu/command_buffer/service/gles2_cmd_decoder.h" |
#include "gpu/command_buffer/service/gpu_preferences.h" |
#include "gpu/command_buffer/service/program_cache.h" |
+#include "gpu/command_buffer/service/progress_reporter.h" |
#include "gpu/command_buffer/service/shader_manager.h" |
#include "third_party/re2/src/re2/re2.h" |
#include "ui/gl/gl_version_info.h" |
@@ -2474,12 +2475,17 @@ ProgramManager::~ProgramManager() { |
DCHECK(programs_.empty()); |
} |
-void ProgramManager::Destroy(bool have_context) { |
+void ProgramManager::Destroy(bool have_context, |
+ ProgressReporter* progress_reporter) { |
have_context_ = have_context; |
ProgramDeletionScopedUmaTimeAndRate scoped_histogram( |
base::saturated_cast<int32_t>(programs_.size())); |
- programs_.clear(); |
+ while (!programs_.empty()) { |
+ programs_.erase(programs_.begin()); |
+ if (progress_reporter) |
danakj
2016/10/05 01:53:48
same, when is it null?
ericrk
2016/10/05 18:07:31
refactored/removed.
|
+ progress_reporter->ReportProgress(); |
+ } |
} |
void ProgramManager::StartTracking(Program* /* program */) { |