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

Side by Side Diff: ui/android/delegated_frame_host_android.cc

Issue 2612083002: DirectCompositorFrameSink Uses CompositorFrameSinkSupport (Closed)
Patch Set: Addressed comments Created 3 years, 10 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 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 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 "ui/android/delegated_frame_host_android.h" 5 #include "ui/android/delegated_frame_host_android.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/logging.h" 8 #include "base/logging.h"
9 #include "base/memory/ptr_util.h" 9 #include "base/memory/ptr_util.h"
10 #include "cc/layers/solid_color_layer.h" 10 #include "cc/layers/solid_color_layer.h"
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
60 view_(view), 60 view_(view),
61 client_(client), 61 client_(client),
62 background_layer_(cc::SolidColorLayer::Create()) { 62 background_layer_(cc::SolidColorLayer::Create()) {
63 DCHECK(view_); 63 DCHECK(view_);
64 DCHECK(client_); 64 DCHECK(client_);
65 65
66 surface_manager_ = 66 surface_manager_ =
67 ui::ContextProviderFactory::GetInstance()->GetSurfaceManager(); 67 ui::ContextProviderFactory::GetInstance()->GetSurfaceManager();
68 surface_id_allocator_.reset(new cc::SurfaceIdAllocator()); 68 surface_id_allocator_.reset(new cc::SurfaceIdAllocator());
69 surface_manager_->RegisterFrameSinkId(frame_sink_id_); 69 surface_manager_->RegisterFrameSinkId(frame_sink_id_);
70 surface_manager_->RegisterSurfaceFactoryClient(frame_sink_id_, this);
70 surface_factory_ = base::WrapUnique( 71 surface_factory_ = base::WrapUnique(
71 new cc::SurfaceFactory(frame_sink_id_, surface_manager_, this)); 72 new cc::SurfaceFactory(frame_sink_id_, surface_manager_, this));
72 73
73 background_layer_->SetBackgroundColor(background_color); 74 background_layer_->SetBackgroundColor(background_color);
74 view_->GetLayer()->AddChild(background_layer_); 75 view_->GetLayer()->AddChild(background_layer_);
75 UpdateBackgroundLayer(); 76 UpdateBackgroundLayer();
76 } 77 }
77 78
78 DelegatedFrameHostAndroid::~DelegatedFrameHostAndroid() { 79 DelegatedFrameHostAndroid::~DelegatedFrameHostAndroid() {
79 DestroyDelegatedContent(); 80 DestroyDelegatedContent();
80 surface_factory_.reset(); 81 surface_factory_.reset();
81 UnregisterFrameSinkHierarchy(); 82 surface_manager_->UnregisterSurfaceFactoryClient(frame_sink_id_);
82 surface_manager_->InvalidateFrameSinkId(frame_sink_id_); 83 surface_manager_->InvalidateFrameSinkId(frame_sink_id_);
83 background_layer_->RemoveFromParent(); 84 background_layer_->RemoveFromParent();
84 } 85 }
85 86
86 DelegatedFrameHostAndroid::FrameData::FrameData() = default; 87 DelegatedFrameHostAndroid::FrameData::FrameData() = default;
87 88
88 DelegatedFrameHostAndroid::FrameData::~FrameData() = default; 89 DelegatedFrameHostAndroid::FrameData::~FrameData() = default;
89 90
90 void DelegatedFrameHostAndroid::SubmitCompositorFrame( 91 void DelegatedFrameHostAndroid::SubmitCompositorFrame(
91 cc::CompositorFrame frame, 92 cc::CompositorFrame frame,
(...skipping 104 matching lines...) Expand 10 before | Expand all | Expand 10 after
196 void DelegatedFrameHostAndroid::UpdateContainerSizeinDIP( 197 void DelegatedFrameHostAndroid::UpdateContainerSizeinDIP(
197 const gfx::Size& size_in_dip) { 198 const gfx::Size& size_in_dip) {
198 container_size_in_dip_ = size_in_dip; 199 container_size_in_dip_ = size_in_dip;
199 float device_scale_factor = display::Screen::GetScreen() 200 float device_scale_factor = display::Screen::GetScreen()
200 ->GetDisplayNearestWindow(view_).device_scale_factor(); 201 ->GetDisplayNearestWindow(view_).device_scale_factor();
201 background_layer_->SetBounds( 202 background_layer_->SetBounds(
202 gfx::ConvertSizeToPixel(device_scale_factor, container_size_in_dip_)); 203 gfx::ConvertSizeToPixel(device_scale_factor, container_size_in_dip_));
203 UpdateBackgroundLayer(); 204 UpdateBackgroundLayer();
204 } 205 }
205 206
206 void DelegatedFrameHostAndroid::RegisterFrameSinkHierarchy(
207 const cc::FrameSinkId& parent_id) {
208 if (registered_parent_frame_sink_id_.is_valid())
209 UnregisterFrameSinkHierarchy();
210 registered_parent_frame_sink_id_ = parent_id;
211 surface_manager_->RegisterSurfaceFactoryClient(frame_sink_id_, this);
212 surface_manager_->RegisterFrameSinkHierarchy(parent_id, frame_sink_id_);
213 }
214
215 void DelegatedFrameHostAndroid::UnregisterFrameSinkHierarchy() {
216 if (!registered_parent_frame_sink_id_.is_valid())
217 return;
218 surface_manager_->UnregisterSurfaceFactoryClient(frame_sink_id_);
219 surface_manager_->UnregisterFrameSinkHierarchy(
220 registered_parent_frame_sink_id_, frame_sink_id_);
221 registered_parent_frame_sink_id_ = cc::FrameSinkId();
222 }
223
224 void DelegatedFrameHostAndroid::ReturnResources( 207 void DelegatedFrameHostAndroid::ReturnResources(
225 const cc::ReturnedResourceArray& resources) { 208 const cc::ReturnedResourceArray& resources) {
226 client_->ReturnResources(resources); 209 client_->ReturnResources(resources);
227 } 210 }
228 211
229 void DelegatedFrameHostAndroid::SetBeginFrameSource( 212 void DelegatedFrameHostAndroid::SetBeginFrameSource(
230 cc::BeginFrameSource* begin_frame_source) { 213 cc::BeginFrameSource* begin_frame_source) {
231 client_->SetBeginFrameSource(begin_frame_source); 214 client_->SetBeginFrameSource(begin_frame_source);
232 } 215 }
233 216
(...skipping 13 matching lines...) Expand all
247 content_size_in_dip.width() < container_size_in_dip_.width() || 230 content_size_in_dip.width() < container_size_in_dip_.width() ||
248 content_size_in_dip.height() < container_size_in_dip_.height(); 231 content_size_in_dip.height() < container_size_in_dip_.height();
249 } else { 232 } else {
250 background_is_drawable = true; 233 background_is_drawable = true;
251 } 234 }
252 235
253 background_layer_->SetIsDrawable(background_is_drawable); 236 background_layer_->SetIsDrawable(background_is_drawable);
254 } 237 }
255 238
256 } // namespace ui 239 } // namespace ui
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698