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

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

Issue 2579693004: GpuCompositorFrameSink implements cc::mojom::DisplayPrivate (Closed)
Patch Set: Addressed comments Created 4 years 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"
(...skipping 20 matching lines...) Expand all
31 waiting_for_initial_frames_ = !IsCompositorFrameSinkReadyAndNonEmpty( 31 waiting_for_initial_frames_ = !IsCompositorFrameSinkReadyAndNonEmpty(
32 mojom::CompositorFrameSinkType::DEFAULT) || 32 mojom::CompositorFrameSinkType::DEFAULT) ||
33 !IsCompositorFrameSinkReadyAndNonEmpty( 33 !IsCompositorFrameSinkReadyAndNonEmpty(
34 mojom::CompositorFrameSinkType::UNDERLAY); 34 mojom::CompositorFrameSinkType::UNDERLAY);
35 return !waiting_for_initial_frames_; 35 return !waiting_for_initial_frames_;
36 } 36 }
37 37
38 void ServerWindowCompositorFrameSinkManager::CreateDisplayCompositorFrameSink( 38 void ServerWindowCompositorFrameSinkManager::CreateDisplayCompositorFrameSink(
39 gfx::AcceleratedWidget widget, 39 gfx::AcceleratedWidget widget,
40 cc::mojom::MojoCompositorFrameSinkRequest request, 40 cc::mojom::MojoCompositorFrameSinkRequest request,
41 cc::mojom::MojoCompositorFrameSinkClientPtr client) { 41 cc::mojom::MojoCompositorFrameSinkClientPtr client,
42 CreateCompositorFrameSinkInternal(mojom::CompositorFrameSinkType::DEFAULT, 42 cc::mojom::DisplayPrivateRequest display_private_request) {
43 widget, std::move(request), 43 CreateCompositorFrameSinkInternal(
44 std::move(client)); 44 mojom::CompositorFrameSinkType::DEFAULT, widget, std::move(request),
45 std::move(client), std::move(display_private_request));
45 } 46 }
46 47
47 void ServerWindowCompositorFrameSinkManager::CreateOffscreenCompositorFrameSink( 48 void ServerWindowCompositorFrameSinkManager::CreateOffscreenCompositorFrameSink(
48 mojom::CompositorFrameSinkType compositor_frame_sink_type, 49 mojom::CompositorFrameSinkType compositor_frame_sink_type,
49 cc::mojom::MojoCompositorFrameSinkRequest request, 50 cc::mojom::MojoCompositorFrameSinkRequest request,
50 cc::mojom::MojoCompositorFrameSinkClientPtr client) { 51 cc::mojom::MojoCompositorFrameSinkClientPtr client) {
51 CreateCompositorFrameSinkInternal(compositor_frame_sink_type, 52 CreateCompositorFrameSinkInternal(
52 gfx::kNullAcceleratedWidget, 53 compositor_frame_sink_type, gfx::kNullAcceleratedWidget,
53 std::move(request), std::move(client)); 54 std::move(request), std::move(client), nullptr);
54 } 55 }
55 56
56 void ServerWindowCompositorFrameSinkManager::AddChildFrameSinkId( 57 void ServerWindowCompositorFrameSinkManager::AddChildFrameSinkId(
57 mojom::CompositorFrameSinkType compositor_frame_sink_type, 58 mojom::CompositorFrameSinkType compositor_frame_sink_type,
58 const cc::FrameSinkId& frame_sink_id) { 59 const cc::FrameSinkId& frame_sink_id) {
59 auto it = type_to_compositor_frame_sink_map_.find(compositor_frame_sink_type); 60 auto it = type_to_compositor_frame_sink_map_.find(compositor_frame_sink_type);
60 if (it != type_to_compositor_frame_sink_map_.end()) { 61 if (it != type_to_compositor_frame_sink_map_.end()) {
61 it->second.compositor_frame_sink->AddChildFrameSink(frame_sink_id); 62 it->second.compositor_frame_sink->AddChildFrameSink(frame_sink_id);
62 return; 63 return;
63 } 64 }
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after
125 const gfx::Size& latest_submitted_frame_size = 126 const gfx::Size& latest_submitted_frame_size =
126 iter->second.latest_submitted_frame_size; 127 iter->second.latest_submitted_frame_size;
127 return latest_submitted_frame_size.width() >= window_->bounds().width() && 128 return latest_submitted_frame_size.width() >= window_->bounds().width() &&
128 latest_submitted_frame_size.height() >= window_->bounds().height(); 129 latest_submitted_frame_size.height() >= window_->bounds().height();
129 } 130 }
130 131
131 void ServerWindowCompositorFrameSinkManager::CreateCompositorFrameSinkInternal( 132 void ServerWindowCompositorFrameSinkManager::CreateCompositorFrameSinkInternal(
132 mojom::CompositorFrameSinkType compositor_frame_sink_type, 133 mojom::CompositorFrameSinkType compositor_frame_sink_type,
133 gfx::AcceleratedWidget widget, 134 gfx::AcceleratedWidget widget,
134 cc::mojom::MojoCompositorFrameSinkRequest request, 135 cc::mojom::MojoCompositorFrameSinkRequest request,
135 cc::mojom::MojoCompositorFrameSinkClientPtr client) { 136 cc::mojom::MojoCompositorFrameSinkClientPtr client,
137 cc::mojom::DisplayPrivateRequest display_private_request) {
136 cc::FrameSinkId frame_sink_id( 138 cc::FrameSinkId frame_sink_id(
137 WindowIdToTransportId(window_->id()), 139 WindowIdToTransportId(window_->id()),
138 static_cast<uint32_t>(compositor_frame_sink_type)); 140 static_cast<uint32_t>(compositor_frame_sink_type));
139 CompositorFrameSinkData& data = 141 CompositorFrameSinkData& data =
140 type_to_compositor_frame_sink_map_[compositor_frame_sink_type]; 142 type_to_compositor_frame_sink_map_[compositor_frame_sink_type];
141 cc::mojom::MojoCompositorFrameSinkPrivateRequest private_request; 143 cc::mojom::MojoCompositorFrameSinkPrivateRequest private_request;
142 if (data.pending_compositor_frame_sink_request.is_pending()) { 144 if (data.pending_compositor_frame_sink_request.is_pending()) {
143 private_request = std::move(data.pending_compositor_frame_sink_request); 145 private_request = std::move(data.pending_compositor_frame_sink_request);
144 } else { 146 } else {
145 private_request = mojo::GetProxy(&data.compositor_frame_sink); 147 private_request = mojo::GetProxy(&data.compositor_frame_sink);
146 } 148 }
147 149
148 if (widget != gfx::kNullAcceleratedWidget) { 150 if (widget != gfx::kNullAcceleratedWidget) {
149 // TODO(fsamuel): AcceleratedWidget cannot be transported over IPC for Mac 151 // TODO(fsamuel): AcceleratedWidget cannot be transported over IPC for Mac
150 // or Android. We should instead use GpuSurfaceTracker here on those 152 // or Android. We should instead use GpuSurfaceTracker here on those
151 // platforms. 153 // platforms.
152 window_->delegate() 154 window_->delegate()
153 ->GetDisplayCompositor() 155 ->GetDisplayCompositor()
154 ->CreateDisplayCompositorFrameSink( 156 ->CreateDisplayCompositorFrameSink(
155 frame_sink_id, widget, std::move(request), 157 frame_sink_id, widget, std::move(request),
156 std::move(private_request), std::move(client)); 158 std::move(private_request), std::move(client),
159 std::move(display_private_request));
157 } else { 160 } else {
158 window_->delegate() 161 window_->delegate()
159 ->GetDisplayCompositor() 162 ->GetDisplayCompositor()
160 ->CreateOffscreenCompositorFrameSink(frame_sink_id, std::move(request), 163 ->CreateOffscreenCompositorFrameSink(frame_sink_id, std::move(request),
161 std::move(private_request), 164 std::move(private_request),
162 std::move(client)); 165 std::move(client));
163 } 166 }
164 167
165 if (window_->parent()) { 168 if (window_->parent()) {
166 window_->delegate() 169 window_->delegate()
(...skipping 15 matching lines...) Expand all
182 185
183 CompositorFrameSinkData& CompositorFrameSinkData::operator=( 186 CompositorFrameSinkData& CompositorFrameSinkData::operator=(
184 CompositorFrameSinkData&& other) { 187 CompositorFrameSinkData&& other) {
185 latest_submitted_surface_id = other.latest_submitted_surface_id; 188 latest_submitted_surface_id = other.latest_submitted_surface_id;
186 compositor_frame_sink = std::move(other.compositor_frame_sink); 189 compositor_frame_sink = std::move(other.compositor_frame_sink);
187 return *this; 190 return *this;
188 } 191 }
189 192
190 } // namespace ws 193 } // namespace ws
191 } // namespace ui 194 } // namespace ui
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698