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

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

Issue 2579693004: GpuCompositorFrameSink implements cc::mojom::DisplayPrivate (Closed)
Patch Set: Removed unrelated chagnes 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 76 matching lines...) Expand 10 before | Expand all | Expand 10 after
140 const gfx::Size& latest_submitted_frame_size = 141 const gfx::Size& latest_submitted_frame_size =
141 iter->second.latest_submitted_frame_size; 142 iter->second.latest_submitted_frame_size;
142 return latest_submitted_frame_size.width() >= window_->bounds().width() && 143 return latest_submitted_frame_size.width() >= window_->bounds().width() &&
143 latest_submitted_frame_size.height() >= window_->bounds().height(); 144 latest_submitted_frame_size.height() >= window_->bounds().height();
144 } 145 }
145 146
146 void ServerWindowCompositorFrameSinkManager::CreateCompositorFrameSinkInternal( 147 void ServerWindowCompositorFrameSinkManager::CreateCompositorFrameSinkInternal(
147 mojom::CompositorFrameSinkType compositor_frame_sink_type, 148 mojom::CompositorFrameSinkType compositor_frame_sink_type,
148 gfx::AcceleratedWidget widget, 149 gfx::AcceleratedWidget widget,
149 cc::mojom::MojoCompositorFrameSinkRequest request, 150 cc::mojom::MojoCompositorFrameSinkRequest request,
150 cc::mojom::MojoCompositorFrameSinkClientPtr client) { 151 cc::mojom::MojoCompositorFrameSinkClientPtr client,
152 cc::mojom::DisplayPrivateRequest display_private_request) {
151 cc::FrameSinkId frame_sink_id( 153 cc::FrameSinkId frame_sink_id(
152 WindowIdToTransportId(window_->id()), 154 WindowIdToTransportId(window_->id()),
153 static_cast<uint32_t>(compositor_frame_sink_type)); 155 static_cast<uint32_t>(compositor_frame_sink_type));
154 CompositorFrameSinkData& data = 156 CompositorFrameSinkData& data =
155 type_to_compositor_frame_sink_map_[compositor_frame_sink_type]; 157 type_to_compositor_frame_sink_map_[compositor_frame_sink_type];
156 data.frame_sink_id = frame_sink_id; 158 data.frame_sink_id = frame_sink_id;
157 cc::mojom::MojoCompositorFrameSinkPrivateRequest private_request; 159 cc::mojom::MojoCompositorFrameSinkPrivateRequest private_request;
158 if (data.pending_compositor_frame_sink_request.is_pending()) { 160 if (data.pending_compositor_frame_sink_request.is_pending()) {
159 private_request = std::move(data.pending_compositor_frame_sink_request); 161 private_request = std::move(data.pending_compositor_frame_sink_request);
160 } else { 162 } else {
161 private_request = mojo::GetProxy(&data.compositor_frame_sink); 163 private_request = mojo::GetProxy(&data.compositor_frame_sink);
162 } 164 }
163 165
164 if (widget != gfx::kNullAcceleratedWidget) { 166 if (widget != gfx::kNullAcceleratedWidget) {
165 // TODO(fsamuel): AcceleratedWidget cannot be transported over IPC for Mac 167 // TODO(fsamuel): AcceleratedWidget cannot be transported over IPC for Mac
166 // or Android. We should instead use GpuSurfaceTracker here on those 168 // or Android. We should instead use GpuSurfaceTracker here on those
167 // platforms. 169 // platforms.
168 window_->delegate() 170 window_->delegate()
169 ->GetDisplayCompositor() 171 ->GetDisplayCompositor()
170 ->CreateDisplayCompositorFrameSink( 172 ->CreateDisplayCompositorFrameSink(
171 frame_sink_id, widget, std::move(request), 173 frame_sink_id, widget, std::move(request),
172 std::move(private_request), std::move(client)); 174 std::move(private_request), std::move(client),
175 std::move(display_private_request));
msw 2016/12/19 20:18:11 q: Should the else case DCHECK(!display_private_re
Fady Samuel 2016/12/19 20:20:18 Sounds reasonable.
Alex Z. 2016/12/19 20:53:29 Done.
173 } else { 176 } else {
174 window_->delegate() 177 window_->delegate()
175 ->GetDisplayCompositor() 178 ->GetDisplayCompositor()
176 ->CreateOffscreenCompositorFrameSink(frame_sink_id, std::move(request), 179 ->CreateOffscreenCompositorFrameSink(frame_sink_id, std::move(request),
177 std::move(private_request), 180 std::move(private_request),
178 std::move(client)); 181 std::move(client));
179 } 182 }
180 183
181 if (window_->parent()) { 184 if (window_->parent()) {
182 ServerWindow* root_window = window_->GetRoot(); 185 ServerWindow* root_window = window_->GetRoot();
(...skipping 15 matching lines...) Expand all
198 201
199 CompositorFrameSinkData& CompositorFrameSinkData::operator=( 202 CompositorFrameSinkData& CompositorFrameSinkData::operator=(
200 CompositorFrameSinkData&& other) { 203 CompositorFrameSinkData&& other) {
201 latest_submitted_surface_id = other.latest_submitted_surface_id; 204 latest_submitted_surface_id = other.latest_submitted_surface_id;
202 compositor_frame_sink = std::move(other.compositor_frame_sink); 205 compositor_frame_sink = std::move(other.compositor_frame_sink);
203 return *this; 206 return *this;
204 } 207 }
205 208
206 } // namespace ws 209 } // namespace ws
207 } // namespace ui 210 } // namespace ui
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698