| OLD | NEW |
| 1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "services/ui/ws/server_window_compositor_frame_sink_manager.h" | 5 #include "services/ui/ws/server_window_compositor_frame_sink_manager.h" |
| 6 | 6 |
| 7 #include <utility> | 7 #include <utility> |
| 8 | 8 |
| 9 #include "cc/ipc/display_compositor.mojom.h" | |
| 10 #include "mojo/public/cpp/bindings/strong_binding.h" | 9 #include "mojo/public/cpp/bindings/strong_binding.h" |
| 11 #include "services/ui/ws/ids.h" | 10 #include "services/ui/ws/ids.h" |
| 12 #include "services/ui/ws/server_window.h" | 11 #include "services/ui/ws/server_window.h" |
| 13 #include "services/ui/ws/server_window_delegate.h" | 12 #include "services/ui/ws/server_window_delegate.h" |
| 14 | 13 |
| 15 namespace ui { | 14 namespace ui { |
| 16 namespace ws { | 15 namespace ws { |
| 17 | 16 |
| 18 ServerWindowCompositorFrameSinkManager::ServerWindowCompositorFrameSinkManager( | 17 ServerWindowCompositorFrameSinkManager::ServerWindowCompositorFrameSinkManager( |
| 19 ServerWindow* window) | 18 ServerWindow* window) |
| 20 : window_(window) {} | 19 : window_(window) {} |
| 21 | 20 |
| 22 ServerWindowCompositorFrameSinkManager:: | 21 ServerWindowCompositorFrameSinkManager:: |
| 23 ~ServerWindowCompositorFrameSinkManager() { | 22 ~ServerWindowCompositorFrameSinkManager() { |
| 24 } | 23 } |
| 25 | 24 |
| 26 void ServerWindowCompositorFrameSinkManager::CreateRootCompositorFrameSink( | 25 void ServerWindowCompositorFrameSinkManager::CreateRootCompositorFrameSink( |
| 27 gfx::AcceleratedWidget widget, | 26 gfx::AcceleratedWidget widget, |
| 28 cc::mojom::MojoCompositorFrameSinkAssociatedRequest sink_request, | 27 cc::mojom::MojoCompositorFrameSinkAssociatedRequest sink_request, |
| 29 cc::mojom::MojoCompositorFrameSinkClientPtr client, | 28 cc::mojom::MojoCompositorFrameSinkClientPtr client, |
| 30 cc::mojom::DisplayPrivateAssociatedRequest display_request) { | 29 cc::mojom::DisplayPrivateAssociatedRequest display_request) { |
| 31 if (!pending_compositor_frame_sink_request_.is_pending()) { | 30 if (!pending_compositor_frame_sink_request_.is_pending()) { |
| 32 pending_compositor_frame_sink_request_ = | 31 pending_compositor_frame_sink_request_ = |
| 33 mojo::MakeRequest(&compositor_frame_sink_); | 32 mojo::MakeRequest(&compositor_frame_sink_); |
| 34 } | 33 } |
| 35 | 34 |
| 36 // TODO(fsamuel): AcceleratedWidget cannot be transported over IPC for Mac | 35 // TODO(fsamuel): AcceleratedWidget cannot be transported over IPC for Mac |
| 37 // or Android. We should instead use GpuSurfaceTracker here on those | 36 // or Android. We should instead use GpuSurfaceTracker here on those |
| 38 // platforms. | 37 // platforms. |
| 39 window_->delegate()->GetDisplayCompositor()->CreateRootCompositorFrameSink( | 38 window_->delegate()->GetFrameSinkManager()->CreateRootCompositorFrameSink( |
| 40 window_->frame_sink_id(), widget, std::move(sink_request), | 39 window_->frame_sink_id(), widget, std::move(sink_request), |
| 41 std::move(pending_compositor_frame_sink_request_), std::move(client), | 40 std::move(pending_compositor_frame_sink_request_), std::move(client), |
| 42 std::move(display_request)); | 41 std::move(display_request)); |
| 43 } | 42 } |
| 44 | 43 |
| 45 void ServerWindowCompositorFrameSinkManager::CreateCompositorFrameSink( | 44 void ServerWindowCompositorFrameSinkManager::CreateCompositorFrameSink( |
| 46 cc::mojom::MojoCompositorFrameSinkRequest request, | 45 cc::mojom::MojoCompositorFrameSinkRequest request, |
| 47 cc::mojom::MojoCompositorFrameSinkClientPtr client) { | 46 cc::mojom::MojoCompositorFrameSinkClientPtr client) { |
| 48 if (!pending_compositor_frame_sink_request_.is_pending()) { | 47 if (!pending_compositor_frame_sink_request_.is_pending()) { |
| 49 pending_compositor_frame_sink_request_ = | 48 pending_compositor_frame_sink_request_ = |
| 50 mojo::MakeRequest(&compositor_frame_sink_); | 49 mojo::MakeRequest(&compositor_frame_sink_); |
| 51 } | 50 } |
| 52 | 51 |
| 53 window_->delegate()->GetDisplayCompositor()->CreateCompositorFrameSink( | 52 window_->delegate()->GetFrameSinkManager()->CreateCompositorFrameSink( |
| 54 window_->frame_sink_id(), std::move(request), | 53 window_->frame_sink_id(), std::move(request), |
| 55 std::move(pending_compositor_frame_sink_request_), std::move(client)); | 54 std::move(pending_compositor_frame_sink_request_), std::move(client)); |
| 56 } | 55 } |
| 57 | 56 |
| 58 void ServerWindowCompositorFrameSinkManager::ClaimTemporaryReference( | 57 void ServerWindowCompositorFrameSinkManager::ClaimTemporaryReference( |
| 59 const cc::SurfaceId& surface_id) { | 58 const cc::SurfaceId& surface_id) { |
| 60 if (!compositor_frame_sink_.is_bound()) { | 59 if (!compositor_frame_sink_.is_bound()) { |
| 61 pending_compositor_frame_sink_request_ = | 60 pending_compositor_frame_sink_request_ = |
| 62 mojo::MakeRequest(&compositor_frame_sink_); | 61 mojo::MakeRequest(&compositor_frame_sink_); |
| 63 } | 62 } |
| 64 compositor_frame_sink_->ClaimTemporaryReference(surface_id); | 63 compositor_frame_sink_->ClaimTemporaryReference(surface_id); |
| 65 } | 64 } |
| 66 | 65 |
| 67 } // namespace ws | 66 } // namespace ws |
| 68 } // namespace ui | 67 } // namespace ui |
| OLD | NEW |