// 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(id_namespace_) << 32 | next_id_++; } } // namespace sky