diff options
author | gman@chromium.org <gman@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-07-01 22:41:16 +0000 |
---|---|---|
committer | gman@chromium.org <gman@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-07-01 22:41:16 +0000 |
commit | d304cbdeccf3db7330c09cb218096a45a2bdc746 (patch) | |
tree | d0b939398f1fe3f4beb1def5fbede824d1dea94d /gpu/command_buffer/service/texture_manager.cc | |
parent | e7f7509f4ab3672f61e6fc5ec6b5ce0b5eefb4a8 (diff) | |
download | chromium_src-d304cbdeccf3db7330c09cb218096a45a2bdc746.zip chromium_src-d304cbdeccf3db7330c09cb218096a45a2bdc746.tar.gz chromium_src-d304cbdeccf3db7330c09cb218096a45a2bdc746.tar.bz2 |
Free the resources used by a context group.
TEST=unit tests
BUG=none
Review URL: http://codereview.chromium.org/2880013
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@51441 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'gpu/command_buffer/service/texture_manager.cc')
-rw-r--r-- | gpu/command_buffer/service/texture_manager.cc | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/gpu/command_buffer/service/texture_manager.cc b/gpu/command_buffer/service/texture_manager.cc index 73c3480..da4b8a561 100644 --- a/gpu/command_buffer/service/texture_manager.cc +++ b/gpu/command_buffer/service/texture_manager.cc @@ -58,6 +58,24 @@ static size_t FaceIndexToGLTarget(size_t index) { } } +TextureManager::~TextureManager() { + DCHECK(texture_infos_.empty()); +} + +void TextureManager::Destroy(bool have_context) { + while (!texture_infos_.empty()) { + if (have_context) { + TextureInfo* info = texture_infos_.begin()->second; + if (!info->IsDeleted()) { + GLuint service_id = info->service_id(); + glDeleteTextures(1, &service_id); + info->MarkAsDeleted(); + } + } + texture_infos_.erase(texture_infos_.begin()); + } +} + bool TextureManager::TextureInfo::CanRender() const { if (target_ == 0 || IsDeleted()) { return false; |