blob: 1dea3d0811217a7c69a6e1639d847b575b0b4b21 [file] [log] [blame]
// Copyright 2016 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/ui/gpu/display_compositor/compositor_frame_sink_factory_impl.h"
#include "base/memory/ptr_util.h"
#include "cc/surfaces/surface_id.h"
#include "services/ui/gpu/display_compositor/compositor_frame_sink_impl.h"
namespace ui {
namespace gpu {
CompositorFrameSinkFactoryImpl::CompositorFrameSinkFactoryImpl(
uint32_t client_id,
mojo::InterfaceRequest<mojom::CompositorFrameSinkFactory> request,
const scoped_refptr<SurfacesState>& surfaces_state)
: client_id_(client_id),
surfaces_state_(surfaces_state),
allocator_(client_id),
binding_(this, std::move(request)) {}
CompositorFrameSinkFactoryImpl::~CompositorFrameSinkFactoryImpl() {}
void CompositorFrameSinkFactoryImpl::CompositorFrameSinkConnectionLost(
int local_id) {
sinks_.erase(local_id);
}
cc::SurfaceId CompositorFrameSinkFactoryImpl::GenerateSurfaceId() {
return allocator_.GenerateId();
}
void CompositorFrameSinkFactoryImpl::CreateCompositorFrameSink(
uint32_t local_id,
uint64_t nonce,
mojo::InterfaceRequest<mojom::CompositorFrameSink> sink,
mojom::CompositorFrameSinkClientPtr client) {
// TODO(fsamuel): Use nonce once patch lands:
// https://codereview.chromium.org/1996783002/
sinks_[local_id] = base::MakeUnique<CompositorFrameSinkImpl>(
this, local_id, surfaces_state_, std::move(sink), std::move(client));
}
} // namespace gpu
} // namespace ui