| 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..570e9257bc982a86a71f1720402d74142d298079 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) {
|
| + DCHECK(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());
|
| + progress_reporter->ReportProgress();
|
| + }
|
| }
|
|
|
| void ProgramManager::StartTracking(Program* /* program */) {
|
|
|