X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=src%2Fgpu%2Fcommand_buffer%2Fservice%2Fimage_manager.cc;h=46438c7058a6efc48a8ab119c18530ed02f06359;hb=4a1a0bdd01eef90b0826a0e761d3379d3715c10f;hp=a3ac4350c875fabb11f6e53375bfeef68d158e6f;hpb=b1be5ca53587d23e7aeb77b26861fdc0a181ffd8;p=platform%2Fframework%2Fweb%2Fcrosswalk.git diff --git a/src/gpu/command_buffer/service/image_manager.cc b/src/gpu/command_buffer/service/image_manager.cc index a3ac435..46438c7 100644 --- a/src/gpu/command_buffer/service/image_manager.cc +++ b/src/gpu/command_buffer/service/image_manager.cc @@ -4,68 +4,44 @@ #include "gpu/command_buffer/service/image_manager.h" +#include "base/logging.h" #include "ui/gl/gl_image.h" namespace gpu { namespace gles2 { -ImageManager::ImageManager() : release_after_use_(false) { +ImageManager::ImageManager() { } ImageManager::~ImageManager() { } -void ImageManager::RegisterGpuMemoryBuffer(int32 id, - gfx::GpuMemoryBufferHandle buffer, - size_t width, - size_t height, - unsigned internalformat) { - if (id <= 0) { - DVLOG(0) << "Cannot register GPU memory buffer with non-positive ID."; - return; - } - - if (LookupImage(id)) { - DVLOG(0) << "GPU memory buffer ID already in use."; - return; - } - - scoped_refptr gl_image = - gfx::GLImage::CreateGLImageForGpuMemoryBuffer(buffer, - gfx::Size(width, height), - internalformat); - if (!gl_image) - return; - - if (release_after_use_) - gl_image->SetReleaseAfterUse(); - - AddImage(gl_image.get(), id); -} - -void ImageManager::UnregisterGpuMemoryBuffer(int32 id) { - RemoveImage(id); +void ImageManager::Destroy(bool have_context) { + for (GLImageMap::const_iterator iter = images_.begin(); iter != images_.end(); + ++iter) + iter->second.get()->Destroy(have_context); + images_.clear(); } void ImageManager::AddImage(gfx::GLImage* image, int32 service_id) { - gl_images_[service_id] = image; + DCHECK(images_.find(service_id) == images_.end()); + images_[service_id] = image; } void ImageManager::RemoveImage(int32 service_id) { - gl_images_.erase(service_id); + GLImageMap::iterator iter = images_.find(service_id); + DCHECK(iter != images_.end()); + iter->second.get()->Destroy(true); + images_.erase(iter); } gfx::GLImage* ImageManager::LookupImage(int32 service_id) { - GLImageMap::const_iterator iter = gl_images_.find(service_id); - if (iter != gl_images_.end()) + GLImageMap::const_iterator iter = images_.find(service_id); + if (iter != images_.end()) return iter->second.get(); return NULL; } -void ImageManager::SetReleaseAfterUse() { - release_after_use_ = true; -} - } // namespace gles2 } // namespace gpu