Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(372)

Side by Side Diff: services/ui/ws/server_window_compositor_frame_sink_manager.cc

Issue 2710703005: GpuDisplayCompositorFrameSink => GpuRootCompositorFrameSink (Closed)
Patch Set: Addressed Dana's comments Created 3 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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 "cc/ipc/display_compositor.mojom.h" 7 #include "cc/ipc/display_compositor.mojom.h"
8 #include "mojo/public/cpp/bindings/strong_binding.h" 8 #include "mojo/public/cpp/bindings/strong_binding.h"
9 #include "services/ui/ws/ids.h" 9 #include "services/ui/ws/ids.h"
10 #include "services/ui/ws/server_window.h" 10 #include "services/ui/ws/server_window.h"
11 #include "services/ui/ws/server_window_delegate.h" 11 #include "services/ui/ws/server_window_delegate.h"
12 12
13 namespace ui { 13 namespace ui {
14 namespace ws { 14 namespace ws {
15 15
16 ServerWindowCompositorFrameSinkManager::ServerWindowCompositorFrameSinkManager( 16 ServerWindowCompositorFrameSinkManager::ServerWindowCompositorFrameSinkManager(
17 ServerWindow* window) 17 ServerWindow* window)
18 : window_(window) {} 18 : window_(window) {}
19 19
20 ServerWindowCompositorFrameSinkManager:: 20 ServerWindowCompositorFrameSinkManager::
21 ~ServerWindowCompositorFrameSinkManager() { 21 ~ServerWindowCompositorFrameSinkManager() {
22 } 22 }
23 23
24 void ServerWindowCompositorFrameSinkManager::CreateDisplayCompositorFrameSink( 24 void ServerWindowCompositorFrameSinkManager::CreateRootCompositorFrameSink(
25 gfx::AcceleratedWidget widget, 25 gfx::AcceleratedWidget widget,
26 cc::mojom::MojoCompositorFrameSinkAssociatedRequest sink_request, 26 cc::mojom::MojoCompositorFrameSinkAssociatedRequest sink_request,
27 cc::mojom::MojoCompositorFrameSinkClientPtr client, 27 cc::mojom::MojoCompositorFrameSinkClientPtr client,
28 cc::mojom::DisplayPrivateAssociatedRequest display_request) { 28 cc::mojom::DisplayPrivateAssociatedRequest display_request) {
29 cc::FrameSinkId frame_sink_id(WindowIdToTransportId(window_->id()), 0); 29 cc::FrameSinkId frame_sink_id(WindowIdToTransportId(window_->id()), 0);
30 30
31 if (!frame_sink_data_) 31 if (!frame_sink_data_)
32 frame_sink_data_ = base::MakeUnique<CompositorFrameSinkData>(); 32 frame_sink_data_ = base::MakeUnique<CompositorFrameSinkData>();
33 33
34 frame_sink_data_->frame_sink_id = frame_sink_id; 34 frame_sink_data_->frame_sink_id = frame_sink_id;
35 cc::mojom::MojoCompositorFrameSinkPrivateRequest private_request; 35 cc::mojom::MojoCompositorFrameSinkPrivateRequest private_request;
36 if (frame_sink_data_->pending_compositor_frame_sink_request.is_pending()) { 36 if (frame_sink_data_->pending_compositor_frame_sink_request.is_pending()) {
37 private_request = 37 private_request =
38 std::move(frame_sink_data_->pending_compositor_frame_sink_request); 38 std::move(frame_sink_data_->pending_compositor_frame_sink_request);
39 } else { 39 } else {
40 private_request = 40 private_request =
41 mojo::MakeRequest(&frame_sink_data_->compositor_frame_sink); 41 mojo::MakeRequest(&frame_sink_data_->compositor_frame_sink);
42 } 42 }
43 43
44 // TODO(fsamuel): AcceleratedWidget cannot be transported over IPC for Mac 44 // TODO(fsamuel): AcceleratedWidget cannot be transported over IPC for Mac
45 // or Android. We should instead use GpuSurfaceTracker here on those 45 // or Android. We should instead use GpuSurfaceTracker here on those
46 // platforms. 46 // platforms.
47 window_->delegate()->GetDisplayCompositor()->CreateDisplayCompositorFrameSink( 47 window_->delegate()->GetDisplayCompositor()->CreateRootCompositorFrameSink(
48 frame_sink_id, widget, std::move(sink_request), 48 frame_sink_id, widget, std::move(sink_request),
49 std::move(private_request), std::move(client), 49 std::move(private_request), std::move(client),
50 std::move(display_request)); 50 std::move(display_request));
51 51
52 if (window_->parent()) { 52 if (window_->parent()) {
53 ServerWindow* root_window = window_->GetRoot(); 53 ServerWindow* root_window = window_->GetRoot();
54 if (root_window) { 54 if (root_window) {
55 root_window->GetOrCreateCompositorFrameSinkManager()->AddChildFrameSinkId( 55 root_window->GetOrCreateCompositorFrameSinkManager()->AddChildFrameSinkId(
56 frame_sink_id); 56 frame_sink_id);
57 } 57 }
58 } 58 }
59 } 59 }
60 60
61 void ServerWindowCompositorFrameSinkManager::CreateOffscreenCompositorFrameSink( 61 void ServerWindowCompositorFrameSinkManager::CreateCompositorFrameSink(
62 cc::mojom::MojoCompositorFrameSinkRequest request, 62 cc::mojom::MojoCompositorFrameSinkRequest request,
63 cc::mojom::MojoCompositorFrameSinkClientPtr client) { 63 cc::mojom::MojoCompositorFrameSinkClientPtr client) {
64 cc::FrameSinkId frame_sink_id(WindowIdToTransportId(window_->id()), 0); 64 cc::FrameSinkId frame_sink_id(WindowIdToTransportId(window_->id()), 0);
65 65
66 if (!frame_sink_data_) 66 if (!frame_sink_data_)
67 frame_sink_data_ = base::MakeUnique<CompositorFrameSinkData>(); 67 frame_sink_data_ = base::MakeUnique<CompositorFrameSinkData>();
68 68
69 frame_sink_data_->frame_sink_id = frame_sink_id; 69 frame_sink_data_->frame_sink_id = frame_sink_id;
70 cc::mojom::MojoCompositorFrameSinkPrivateRequest private_request; 70 cc::mojom::MojoCompositorFrameSinkPrivateRequest private_request;
71 if (frame_sink_data_->pending_compositor_frame_sink_request.is_pending()) { 71 if (frame_sink_data_->pending_compositor_frame_sink_request.is_pending()) {
72 private_request = 72 private_request =
73 std::move(frame_sink_data_->pending_compositor_frame_sink_request); 73 std::move(frame_sink_data_->pending_compositor_frame_sink_request);
74 } else { 74 } else {
75 private_request = 75 private_request =
76 mojo::MakeRequest(&frame_sink_data_->compositor_frame_sink); 76 mojo::MakeRequest(&frame_sink_data_->compositor_frame_sink);
77 } 77 }
78 78
79 window_->delegate() 79 window_->delegate()->GetDisplayCompositor()->CreateCompositorFrameSink(
80 ->GetDisplayCompositor() 80 frame_sink_id, std::move(request), std::move(private_request),
81 ->CreateOffscreenCompositorFrameSink(frame_sink_id, std::move(request), 81 std::move(client));
82 std::move(private_request),
83 std::move(client));
84 82
85 if (window_->parent()) { 83 if (window_->parent()) {
86 ServerWindow* root_window = window_->GetRoot(); 84 ServerWindow* root_window = window_->GetRoot();
87 if (root_window) { 85 if (root_window) {
88 root_window->GetOrCreateCompositorFrameSinkManager()->AddChildFrameSinkId( 86 root_window->GetOrCreateCompositorFrameSinkManager()->AddChildFrameSinkId(
89 frame_sink_id); 87 frame_sink_id);
90 } 88 }
91 } 89 }
92 } 90 }
93 91
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
134 : compositor_frame_sink(std::move(other.compositor_frame_sink)) {} 132 : compositor_frame_sink(std::move(other.compositor_frame_sink)) {}
135 133
136 CompositorFrameSinkData& CompositorFrameSinkData::operator=( 134 CompositorFrameSinkData& CompositorFrameSinkData::operator=(
137 CompositorFrameSinkData&& other) { 135 CompositorFrameSinkData&& other) {
138 compositor_frame_sink = std::move(other.compositor_frame_sink); 136 compositor_frame_sink = std::move(other.compositor_frame_sink);
139 return *this; 137 return *this;
140 } 138 }
141 139
142 } // namespace ws 140 } // namespace ws
143 } // namespace ui 141 } // namespace ui
OLDNEW
« no previous file with comments | « services/ui/ws/server_window_compositor_frame_sink_manager.h ('k') | services/ui/ws/window_tree.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698