| 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..f09417f2fdde20161fdfcc9bbb7d6a4bb083ea40 100644
|
| --- a/gpu/command_buffer/service/program_manager.cc
|
| +++ b/gpu/command_buffer/service/program_manager.cc
|
| @@ -2482,6 +2482,23 @@ void ProgramManager::Destroy(bool have_context) {
|
| programs_.clear();
|
| }
|
|
|
| +bool ProgramManager::PreDestroyWithTimeout(bool have_context,
|
| + const base::TimeTicks& timeout) {
|
| + have_context_ = have_context;
|
| + for (auto it = programs_.begin(); it != programs_.end();) {
|
| + if (it->second->InUse()) {
|
| + // Can't delete in-use programs.
|
| + ++it;
|
| + continue;
|
| + }
|
| + if (base::TimeTicks::Now() > timeout)
|
| + return false;
|
| +
|
| + it = programs_.erase(it);
|
| + }
|
| + return true;
|
| +}
|
| +
|
| void ProgramManager::StartTracking(Program* /* program */) {
|
| ++program_count_;
|
| }
|
|
|