blob: c02486e67bc8dc264c0b60c5097fb384dde08cf4 [file] [log] [blame]
// Copyright 2015 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 "services/gfx/compositor/scene_impl.h"
#include "base/bind.h"
#include "base/bind_helpers.h"
namespace compositor {
namespace {
void RunScheduleFrameCallback(const SceneImpl::ScheduleFrameCallback& callback,
mojo::gfx::composition::FrameInfoPtr info) {
callback.Run(info.Pass());
}
} // namespace
SceneImpl::SceneImpl(
CompositorEngine* engine,
SceneState* state,
mojo::InterfaceRequest<mojo::gfx::composition::Scene> scene_request)
: engine_(engine),
state_(state),
scene_binding_(this, scene_request.Pass()) {}
SceneImpl::~SceneImpl() {}
void SceneImpl::SetListener(mojo::gfx::composition::SceneListenerPtr listener) {
engine_->SetListener(state_, listener.Pass());
}
void SceneImpl::Update(mojo::gfx::composition::SceneUpdatePtr update) {
engine_->Update(state_, update.Pass());
}
void SceneImpl::Publish(mojo::gfx::composition::SceneMetadataPtr metadata) {
engine_->Publish(state_, metadata.Pass());
}
void SceneImpl::GetScheduler(
mojo::InterfaceRequest<mojo::gfx::composition::SceneScheduler>
scheduler_request) {
scheduler_bindings_.AddBinding(this, scheduler_request.Pass());
}
void SceneImpl::ScheduleFrame(const ScheduleFrameCallback& callback) {
engine_->ScheduleFrame(state_,
base::Bind(&RunScheduleFrameCallback, callback));
}
} // namespace compositor