summaryrefslogtreecommitdiffstats
path: root/gpu/command_buffer/service/buffer_manager.cc
diff options
context:
space:
mode:
Diffstat (limited to 'gpu/command_buffer/service/buffer_manager.cc')
-rw-r--r--gpu/command_buffer/service/buffer_manager.cc19
1 files changed, 13 insertions, 6 deletions
diff --git a/gpu/command_buffer/service/buffer_manager.cc b/gpu/command_buffer/service/buffer_manager.cc
index 3509b86..2dfbc15 100644
--- a/gpu/command_buffer/service/buffer_manager.cc
+++ b/gpu/command_buffer/service/buffer_manager.cc
@@ -4,24 +4,31 @@
#include "gpu/command_buffer/service/buffer_manager.h"
#include "base/logging.h"
+#include "gpu/command_buffer/service/gles2_cmd_decoder.h"
namespace gpu {
namespace gles2 {
-void BufferManager::CreateBufferInfo(GLuint buffer) {
+void BufferManager::CreateBufferInfo(GLuint buffer_id) {
std::pair<BufferInfoMap::iterator, bool> result =
- buffer_infos_.insert(std::make_pair(buffer, BufferInfo()));
+ buffer_infos_.insert(
+ std::make_pair(buffer_id,
+ BufferInfo::Ref(new BufferInfo(buffer_id))));
DCHECK(result.second);
}
BufferManager::BufferInfo* BufferManager::GetBufferInfo(
- GLuint buffer) {
- BufferInfoMap::iterator it = buffer_infos_.find(buffer);
- return it != buffer_infos_.end() ? &it->second : NULL;
+ GLuint buffer_id) {
+ BufferInfoMap::iterator it = buffer_infos_.find(buffer_id);
+ return it != buffer_infos_.end() ? it->second : NULL;
}
void BufferManager::RemoveBufferInfo(GLuint buffer_id) {
- buffer_infos_.erase(buffer_id);
+ BufferInfoMap::iterator it = buffer_infos_.find(buffer_id);
+ if (it != buffer_infos_.end()) {
+ it->second->MarkAsDeleted();
+ buffer_infos_.erase(buffer_id);
+ }
}
GLuint BufferManager::BufferInfo::GetMaxValueForRange(