// Copyright (c) 2010 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #include "gpu/command_buffer/service/id_manager.h" #include "base/logging.h" namespace gpu { namespace gles2 { bool IdManager::AddMapping(GLuint client_id, GLuint service_id) { std::pair result = id_map_.insert( std::make_pair(client_id, service_id)); return result.second; } bool IdManager::RemoveMapping(GLuint client_id, GLuint service_id) { MapType::iterator iter = id_map_.find(client_id); if (iter != id_map_.end() && iter->second == service_id) { id_map_.erase(iter); return true; } return false; } bool IdManager::GetServiceId(GLuint client_id, GLuint* service_id) { DCHECK(service_id); MapType::iterator iter = id_map_.find(client_id); if (iter != id_map_.end()) { *service_id = iter->second; return true; } return false; } bool IdManager::GetClientId(GLuint service_id, GLuint* client_id) { DCHECK(client_id); MapType::iterator end(id_map_.end()); for (MapType::iterator iter(id_map_.begin()); iter != end; ++iter) { if (iter->second == service_id) { *client_id = iter->first; return true; } } return false; } } // namespace gles2 } // namespace gpu