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

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

Issue 2579693004: GpuCompositorFrameSink implements cc::mojom::DisplayPrivate (Closed)
Patch Set: Added //ipc to public_deps in color_space.typemap 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::DisplayPrivatePtr display_private,
Fady Samuel 2016/12/16 05:29:39 don't pass this in
Alex Z. 2016/12/16 16:42:00 Done.
43 widget, std::move(request), 43 cc::mojom::DisplayPrivateRequest display_request) {
Fady Samuel 2016/12/16 05:29:39 display_private_request
Alex Z. 2016/12/16 16:42:00 Done.
44 std::move(client)); 44 display_private_ = std::move(display_private);
Fady Samuel 2016/12/16 05:29:39 don't store this.
Alex Z. 2016/12/16 16:42:00 Done.
45 CreateCompositorFrameSinkInternal(
46 mojom::CompositorFrameSinkType::DEFAULT, widget, std::move(request),
47 std::move(client), std::move(display_request));
45 } 48 }
46 49
47 void ServerWindowCompositorFrameSinkManager::CreateOffscreenCompositorFrameSink( 50 void ServerWindowCompositorFrameSinkManager::CreateOffscreenCompositorFrameSink(
48 mojom::CompositorFrameSinkType compositor_frame_sink_type, 51 mojom::CompositorFrameSinkType compositor_frame_sink_type,
49 cc::mojom::MojoCompositorFrameSinkRequest request, 52 cc::mojom::MojoCompositorFrameSinkRequest request,
50 cc::mojom::MojoCompositorFrameSinkClientPtr client) { 53 cc::mojom::MojoCompositorFrameSinkClientPtr client) {
51 CreateCompositorFrameSinkInternal(compositor_frame_sink_type, 54 CreateCompositorFrameSinkInternal(
52 gfx::kNullAcceleratedWidget, 55 compositor_frame_sink_type, gfx::kNullAcceleratedWidget,
53 std::move(request), std::move(client)); 56 std::move(request), std::move(client), nullptr);
54 } 57 }
55 58
56 void ServerWindowCompositorFrameSinkManager::AddChildFrameSinkId( 59 void ServerWindowCompositorFrameSinkManager::AddChildFrameSinkId(
57 mojom::CompositorFrameSinkType compositor_frame_sink_type, 60 mojom::CompositorFrameSinkType compositor_frame_sink_type,
58 const cc::FrameSinkId& frame_sink_id) { 61 const cc::FrameSinkId& frame_sink_id) {
59 auto it = type_to_compositor_frame_sink_map_.find(compositor_frame_sink_type); 62 auto it = type_to_compositor_frame_sink_map_.find(compositor_frame_sink_type);
60 if (it != type_to_compositor_frame_sink_map_.end()) { 63 if (it != type_to_compositor_frame_sink_map_.end()) {
61 it->second.compositor_frame_sink->AddChildFrameSink(frame_sink_id); 64 it->second.compositor_frame_sink->AddChildFrameSink(frame_sink_id);
62 return; 65 return;
63 } 66 }
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after
125 const gfx::Size& latest_submitted_frame_size = 128 const gfx::Size& latest_submitted_frame_size =
126 iter->second.latest_submitted_frame_size; 129 iter->second.latest_submitted_frame_size;
127 return latest_submitted_frame_size.width() >= window_->bounds().width() && 130 return latest_submitted_frame_size.width() >= window_->bounds().width() &&
128 latest_submitted_frame_size.height() >= window_->bounds().height(); 131 latest_submitted_frame_size.height() >= window_->bounds().height();
129 } 132 }
130 133
131 void ServerWindowCompositorFrameSinkManager::CreateCompositorFrameSinkInternal( 134 void ServerWindowCompositorFrameSinkManager::CreateCompositorFrameSinkInternal(
132 mojom::CompositorFrameSinkType compositor_frame_sink_type, 135 mojom::CompositorFrameSinkType compositor_frame_sink_type,
133 gfx::AcceleratedWidget widget, 136 gfx::AcceleratedWidget widget,
134 cc::mojom::MojoCompositorFrameSinkRequest request, 137 cc::mojom::MojoCompositorFrameSinkRequest request,
135 cc::mojom::MojoCompositorFrameSinkClientPtr client) { 138 cc::mojom::MojoCompositorFrameSinkClientPtr client,
139 cc::mojom::DisplayPrivateRequest display_request) {
136 cc::FrameSinkId frame_sink_id( 140 cc::FrameSinkId frame_sink_id(
137 WindowIdToTransportId(window_->id()), 141 WindowIdToTransportId(window_->id()),
138 static_cast<uint32_t>(compositor_frame_sink_type)); 142 static_cast<uint32_t>(compositor_frame_sink_type));
139 CompositorFrameSinkData& data = 143 CompositorFrameSinkData& data =
140 type_to_compositor_frame_sink_map_[compositor_frame_sink_type]; 144 type_to_compositor_frame_sink_map_[compositor_frame_sink_type];
141 cc::mojom::MojoCompositorFrameSinkPrivateRequest private_request; 145 cc::mojom::MojoCompositorFrameSinkPrivateRequest private_request;
142 if (data.pending_compositor_frame_sink_request.is_pending()) { 146 if (data.pending_compositor_frame_sink_request.is_pending()) {
143 private_request = std::move(data.pending_compositor_frame_sink_request); 147 private_request = std::move(data.pending_compositor_frame_sink_request);
144 } else { 148 } else {
145 private_request = mojo::GetProxy(&data.compositor_frame_sink); 149 private_request = mojo::GetProxy(&data.compositor_frame_sink);
146 } 150 }
147 151
148 if (widget != gfx::kNullAcceleratedWidget) { 152 if (widget != gfx::kNullAcceleratedWidget) {
149 // TODO(fsamuel): AcceleratedWidget cannot be transported over IPC for Mac 153 // TODO(fsamuel): AcceleratedWidget cannot be transported over IPC for Mac
150 // or Android. We should instead use GpuSurfaceTracker here on those 154 // or Android. We should instead use GpuSurfaceTracker here on those
151 // platforms. 155 // platforms.
152 window_->delegate() 156 window_->delegate()
153 ->GetDisplayCompositor() 157 ->GetDisplayCompositor()
154 ->CreateDisplayCompositorFrameSink( 158 ->CreateDisplayCompositorFrameSink(
155 frame_sink_id, widget, std::move(request), 159 frame_sink_id, widget, std::move(request),
156 std::move(private_request), std::move(client)); 160 std::move(private_request), std::move(client),
161 std::move(display_request));
Fady Samuel 2016/12/16 05:29:39 nit: display_private_request
Alex Z. 2016/12/16 16:42:00 Done.
157 } else { 162 } else {
158 window_->delegate() 163 window_->delegate()
159 ->GetDisplayCompositor() 164 ->GetDisplayCompositor()
160 ->CreateOffscreenCompositorFrameSink(frame_sink_id, std::move(request), 165 ->CreateOffscreenCompositorFrameSink(frame_sink_id, std::move(request),
161 std::move(private_request), 166 std::move(private_request),
162 std::move(client)); 167 std::move(client));
163 } 168 }
164 169
165 if (window_->parent()) { 170 if (window_->parent()) {
166 window_->delegate() 171 window_->delegate()
(...skipping 15 matching lines...) Expand all
182 187
183 CompositorFrameSinkData& CompositorFrameSinkData::operator=( 188 CompositorFrameSinkData& CompositorFrameSinkData::operator=(
184 CompositorFrameSinkData&& other) { 189 CompositorFrameSinkData&& other) {
185 latest_submitted_surface_id = other.latest_submitted_surface_id; 190 latest_submitted_surface_id = other.latest_submitted_surface_id;
186 compositor_frame_sink = std::move(other.compositor_frame_sink); 191 compositor_frame_sink = std::move(other.compositor_frame_sink);
187 return *this; 192 return *this;
188 } 193 }
189 194
190 } // namespace ws 195 } // namespace ws
191 } // namespace ui 196 } // namespace ui
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698