diff options
Diffstat (limited to 'gpu/command_buffer/common/id_allocator.cc')
| -rw-r--r-- | gpu/command_buffer/common/id_allocator.cc | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/gpu/command_buffer/common/id_allocator.cc b/gpu/command_buffer/common/id_allocator.cc new file mode 100644 index 0000000..22c55e3 --- /dev/null +++ b/gpu/command_buffer/common/id_allocator.cc @@ -0,0 +1,35 @@ +// Copyright (c) 2009 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. + +// This file contains the implementation of IdAllocator. + +#include "../common/id_allocator.h" +#include "../common/logging.h" + +namespace gpu { + +IdAllocator::IdAllocator() { +} + +ResourceId IdAllocator::FindFirstFree() const { + ResourceId id = 1; + for (ResourceIdSet::const_iterator it = used_ids_.begin(); + it != used_ids_.end(); ++it) { + if ((*it) != id) { + return id; + } + ++id; + } + return id; +} + +ResourceId IdAllocator::AllocateIDAtOrAbove(ResourceId desired_id) { + DCHECK_LT(static_cast<ResourceId>(used_ids_.size()), + static_cast<ResourceId>(-1)); + for (; InUse(desired_id); ++desired_id); + MarkAsUsed(desired_id); + return desired_id; +} + +} // namespace gpu |
