flutter_flutter/compositor/surface_allocator.cc
Adam Barth 59f18e7ef2 Add a simple compositor for Sky
Currently we're only able to put up one frame and we can have only one layer, but
this is enough to draw a green circle in a sample app. A future CL will wire this
up to Sky and add support for drawing a second frame.

R=eseidel@chromium.org, ojan@chromium.org

Review URL: https://codereview.chromium.org/740923002
2014-11-20 14:10:40 -08:00

29 lines
906 B
C++

// 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