diff options
Diffstat (limited to 'gpu/command_buffer/service/program_manager.cc')
-rw-r--r-- | gpu/command_buffer/service/program_manager.cc | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/gpu/command_buffer/service/program_manager.cc b/gpu/command_buffer/service/program_manager.cc index 66605b3..55d1268 100644 --- a/gpu/command_buffer/service/program_manager.cc +++ b/gpu/command_buffer/service/program_manager.cc @@ -307,6 +307,23 @@ bool ProgramManager::ProgramInfo::CanLink() const { return true; } +ProgramManager::~ProgramManager() { + DCHECK(program_infos_.empty()); +} + +void ProgramManager::Destroy(bool have_context) { + while (!program_infos_.empty()) { + if (have_context) { + ProgramInfo* info = program_infos_.begin()->second; + if (!info->IsDeleted()) { + glDeleteProgram(info->service_id()); + info->MarkAsDeleted(); + } + } + program_infos_.erase(program_infos_.begin()); + } +} + void ProgramManager::CreateProgramInfo(GLuint client_id, GLuint service_id) { std::pair<ProgramInfoMap::iterator, bool> result = program_infos_.insert( |