| Index: sky/compositor/surface_allocator.cc
|
| diff --git a/sky/compositor/surface_allocator.cc b/sky/compositor/surface_allocator.cc
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..80cc7a1e1d04ef582537508bc7fd6d673a20cb1e
|
| --- /dev/null
|
| +++ b/sky/compositor/surface_allocator.cc
|
| @@ -0,0 +1,28 @@
|
| +// Copyright 2014 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 "sky/compositor/surface_allocator.h"
|
| +
|
| +#include "base/logging.h"
|
| +
|
| +namespace sky {
|
| +
|
| +SurfaceAllocator::SurfaceAllocator(uint32_t id_namespace)
|
| + : id_namespace_(id_namespace), next_id_(1) {
|
| + DCHECK(id_namespace);
|
| +}
|
| +
|
| +SurfaceAllocator::~SurfaceAllocator() {
|
| +}
|
| +
|
| +uint64_t SurfaceAllocator::CreateSurfaceId() {
|
| + // Surface IDs are 64 integers. The high 32 bits are the namespace of the ID,
|
| + // which is assigned to us by the surfaces service. The lower 32 bits are ours
|
| + // to allocate as we see fit. For simplicity, we just allocate them
|
| + // sequentially. In principle, we could run out, but at 60 Hz, it takes
|
| + // several years to run out.
|
| + return static_cast<uint64_t>(id_namespace_) << 32 | next_id_++;
|
| +}
|
| +
|
| +} // namespace sky
|
|
|