| Index: services/ui/ws/server_window_compositor_frame_sink_manager.cc
|
| diff --git a/services/ui/ws/server_window_compositor_frame_sink_manager.cc b/services/ui/ws/server_window_compositor_frame_sink_manager.cc
|
| index 1053fafad1f4b3ddf5d4d6d49694f7e7b98b6726..dc4404c9af7e440c6a2afcffad718772dab783f2 100644
|
| --- a/services/ui/ws/server_window_compositor_frame_sink_manager.cc
|
| +++ b/services/ui/ws/server_window_compositor_frame_sink_manager.cc
|
| @@ -29,25 +29,17 @@ void ServerWindowCompositorFrameSinkManager::CreateRootCompositorFrameSink(
|
| cc::FrameSinkId frame_sink_id(WindowIdToTransportId(window_->id()), 0);
|
|
|
| if (!frame_sink_data_)
|
| - frame_sink_data_ = base::MakeUnique<CompositorFrameSinkData>();
|
| + CreateCompositorFrameSinkData();
|
|
|
| frame_sink_data_->frame_sink_id = frame_sink_id;
|
| - cc::mojom::MojoCompositorFrameSinkPrivateRequest private_request;
|
| - if (frame_sink_data_->pending_compositor_frame_sink_request.is_pending()) {
|
| - private_request =
|
| - std::move(frame_sink_data_->pending_compositor_frame_sink_request);
|
| - } else {
|
| - private_request =
|
| - mojo::MakeRequest(&frame_sink_data_->compositor_frame_sink);
|
| - }
|
|
|
| // TODO(fsamuel): AcceleratedWidget cannot be transported over IPC for Mac
|
| // or Android. We should instead use GpuSurfaceTracker here on those
|
| // platforms.
|
| window_->delegate()->GetDisplayCompositor()->CreateRootCompositorFrameSink(
|
| frame_sink_id, widget, std::move(sink_request),
|
| - std::move(private_request), std::move(client),
|
| - std::move(display_request));
|
| + std::move(frame_sink_data_->pending_compositor_frame_sink_request),
|
| + std::move(client), std::move(display_request));
|
|
|
| if (window_->parent()) {
|
| ServerWindow* root_window = window_->GetRoot();
|
| @@ -64,20 +56,12 @@ void ServerWindowCompositorFrameSinkManager::CreateCompositorFrameSink(
|
| cc::FrameSinkId frame_sink_id(WindowIdToTransportId(window_->id()), 0);
|
|
|
| if (!frame_sink_data_)
|
| - frame_sink_data_ = base::MakeUnique<CompositorFrameSinkData>();
|
| + CreateCompositorFrameSinkData();
|
|
|
| frame_sink_data_->frame_sink_id = frame_sink_id;
|
| - cc::mojom::MojoCompositorFrameSinkPrivateRequest private_request;
|
| - if (frame_sink_data_->pending_compositor_frame_sink_request.is_pending()) {
|
| - private_request =
|
| - std::move(frame_sink_data_->pending_compositor_frame_sink_request);
|
| - } else {
|
| - private_request =
|
| - mojo::MakeRequest(&frame_sink_data_->compositor_frame_sink);
|
| - }
|
| -
|
| window_->delegate()->GetDisplayCompositor()->CreateCompositorFrameSink(
|
| - frame_sink_id, std::move(request), std::move(private_request),
|
| + frame_sink_id, std::move(request),
|
| + std::move(frame_sink_data_->pending_compositor_frame_sink_request),
|
| std::move(client));
|
|
|
| if (window_->parent()) {
|
| @@ -91,13 +75,8 @@ void ServerWindowCompositorFrameSinkManager::CreateCompositorFrameSink(
|
|
|
| void ServerWindowCompositorFrameSinkManager::AddChildFrameSinkId(
|
| const cc::FrameSinkId& frame_sink_id) {
|
| - if (frame_sink_data_) {
|
| - frame_sink_data_->compositor_frame_sink->AddChildFrameSink(frame_sink_id);
|
| - return;
|
| - }
|
| - frame_sink_data_ = base::MakeUnique<CompositorFrameSinkData>();
|
| - frame_sink_data_->pending_compositor_frame_sink_request =
|
| - mojo::MakeRequest(&frame_sink_data_->compositor_frame_sink);
|
| + if (!frame_sink_data_)
|
| + CreateCompositorFrameSinkData();
|
| frame_sink_data_->compositor_frame_sink->AddChildFrameSink(frame_sink_id);
|
| }
|
|
|
| @@ -107,6 +86,13 @@ void ServerWindowCompositorFrameSinkManager::RemoveChildFrameSinkId(
|
| frame_sink_data_->compositor_frame_sink->RemoveChildFrameSink(frame_sink_id);
|
| }
|
|
|
| +void ServerWindowCompositorFrameSinkManager::ClaimTemporaryReference(
|
| + const cc::SurfaceId& surface_id) {
|
| + if (!frame_sink_data_)
|
| + CreateCompositorFrameSinkData();
|
| + frame_sink_data_->compositor_frame_sink->ClaimTemporaryReference(surface_id);
|
| +}
|
| +
|
| void ServerWindowCompositorFrameSinkManager::OnRootChanged(
|
| ServerWindow* old_root,
|
| ServerWindow* new_root) {
|
| @@ -123,6 +109,13 @@ void ServerWindowCompositorFrameSinkManager::OnRootChanged(
|
| }
|
| }
|
|
|
| +void ServerWindowCompositorFrameSinkManager::CreateCompositorFrameSinkData() {
|
| + DCHECK(!frame_sink_data_);
|
| + frame_sink_data_ = base::MakeUnique<CompositorFrameSinkData>();
|
| + frame_sink_data_->pending_compositor_frame_sink_request =
|
| + mojo::MakeRequest(&frame_sink_data_->compositor_frame_sink);
|
| +}
|
| +
|
| CompositorFrameSinkData::CompositorFrameSinkData() {}
|
|
|
| CompositorFrameSinkData::~CompositorFrameSinkData() {}
|
|
|