Index: gpu/command_buffer/service/renderbuffer_manager.cc |
diff --git a/gpu/command_buffer/service/renderbuffer_manager.cc b/gpu/command_buffer/service/renderbuffer_manager.cc |
index a12d66e1f4e09088a1c996d841d43d0c1ddb5344..5c9ca304e94afd82bb83c7976570f786b5c1d33f 100644 |
--- a/gpu/command_buffer/service/renderbuffer_manager.cc |
+++ b/gpu/command_buffer/service/renderbuffer_manager.cc |
@@ -13,7 +13,8 @@ namespace gles2 { |
RenderbufferManager::RenderbufferManager( |
GLint max_renderbuffer_size, GLint max_samples) |
: max_renderbuffer_size_(max_renderbuffer_size), |
- max_samples_(max_samples) { |
+ max_samples_(max_samples), |
+ num_uncleared_renderbuffers_(0) { |
} |
RenderbufferManager::~RenderbufferManager() { |
@@ -34,14 +35,39 @@ void RenderbufferManager::Destroy(bool have_context) { |
} |
} |
+void RenderbufferManager::SetInfo( |
+ RenderbufferInfo* renderbuffer, |
+ GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height) { |
+ DCHECK(renderbuffer); |
+ if (!renderbuffer->cleared()) { |
+ --num_uncleared_renderbuffers_; |
+ } |
+ renderbuffer->SetInfo(samples, internalformat, width, height); |
+ if (!renderbuffer->cleared()) { |
+ ++num_uncleared_renderbuffers_; |
+ } |
+} |
+ |
+void RenderbufferManager::SetCleared(RenderbufferInfo* renderbuffer) { |
+ DCHECK(renderbuffer); |
+ if (!renderbuffer->cleared()) { |
+ --num_uncleared_renderbuffers_; |
+ } |
+ renderbuffer->set_cleared(); |
+ if (!renderbuffer->cleared()) { |
+ ++num_uncleared_renderbuffers_; |
+ } |
+} |
+ |
void RenderbufferManager::CreateRenderbufferInfo( |
GLuint client_id, GLuint service_id) { |
+ RenderbufferInfo::Ref info(new RenderbufferInfo(service_id)); |
std::pair<RenderbufferInfoMap::iterator, bool> result = |
- renderbuffer_infos_.insert( |
- std::make_pair( |
- client_id, |
- RenderbufferInfo::Ref(new RenderbufferInfo(service_id)))); |
+ renderbuffer_infos_.insert(std::make_pair(client_id, info)); |
DCHECK(result.second); |
+ if (!info->cleared()) { |
+ ++num_uncleared_renderbuffers_; |
+ } |
} |
RenderbufferManager::RenderbufferInfo* RenderbufferManager::GetRenderbufferInfo( |
@@ -53,7 +79,11 @@ RenderbufferManager::RenderbufferInfo* RenderbufferManager::GetRenderbufferInfo( |
void RenderbufferManager::RemoveRenderbufferInfo(GLuint client_id) { |
RenderbufferInfoMap::iterator it = renderbuffer_infos_.find(client_id); |
if (it != renderbuffer_infos_.end()) { |
- it->second->MarkAsDeleted(); |
+ RenderbufferInfo* info = it->second; |
+ if (!info->cleared()) { |
+ --num_uncleared_renderbuffers_; |
+ } |
+ info->MarkAsDeleted(); |
renderbuffer_infos_.erase(it); |
} |
} |