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

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

Issue 2612083002: DirectCompositorFrameSink Uses CompositorFrameSinkSupport (Closed)
Patch Set: Restored DelegatedFrameHostAndroid::RegisterFrameSinkHierarchy() and UnregisterFrameSinkHierarchy()… 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"
11 #include "cc/layers/surface_layer.h" 11 #include "cc/layers/surface_layer.h"
12 #include "cc/output/compositor_frame.h" 12 #include "cc/output/compositor_frame.h"
13 #include "cc/output/copy_output_result.h" 13 #include "cc/output/copy_output_result.h"
14 #include "cc/surfaces/surface.h" 14 #include "cc/surfaces/surface.h"
15 #include "cc/surfaces/surface_id.h" 15 #include "cc/surfaces/surface_id.h"
16 #include "cc/surfaces/surface_id_allocator.h" 16 #include "cc/surfaces/surface_id_allocator.h"
17 #include "cc/surfaces/surface_manager.h" 17 #include "cc/surfaces/surface_manager.h"
18 #include "content/browser/renderer_host/compositor_impl_android.h"
18 #include "ui/android/context_provider_factory.h" 19 #include "ui/android/context_provider_factory.h"
19 #include "ui/android/view_android.h" 20 #include "ui/android/view_android.h"
20 #include "ui/android/window_android_compositor.h" 21 #include "ui/android/window_android_compositor.h"
21 #include "ui/display/display.h" 22 #include "ui/display/display.h"
22 #include "ui/display/screen.h" 23 #include "ui/display/screen.h"
23 #include "ui/gfx/geometry/dip_util.h" 24 #include "ui/gfx/geometry/dip_util.h"
24 25
25 namespace ui { 26 namespace ui {
26 27
27 namespace { 28 namespace {
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
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 DetachFromCompositor();
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 void DelegatedFrameHostAndroid::AttachToCompositor(
207 const cc::FrameSinkId& parent_id) { 208 content::CompositorImpl* compositor) {
208 if (registered_parent_frame_sink_id_.is_valid()) 209 if (parent_compositor_impl_)
209 UnregisterFrameSinkHierarchy(); 210 DetachFromCompositor();
210 registered_parent_frame_sink_id_ = parent_id;
211 surface_manager_->RegisterSurfaceFactoryClient(frame_sink_id_, this); 211 surface_manager_->RegisterSurfaceFactoryClient(frame_sink_id_, this);
212 surface_manager_->RegisterFrameSinkHierarchy(parent_id, frame_sink_id_); 212 compositor->AddChildFrameSink(frame_sink_id_);
213 parent_compositor_impl_ = compositor;
213 } 214 }
214 215
215 void DelegatedFrameHostAndroid::UnregisterFrameSinkHierarchy() { 216 void DelegatedFrameHostAndroid::DetachFromCompositor() {
216 if (!registered_parent_frame_sink_id_.is_valid()) 217 if (!parent_compositor_impl_)
217 return; 218 return;
218 surface_manager_->UnregisterSurfaceFactoryClient(frame_sink_id_); 219 surface_manager_->UnregisterSurfaceFactoryClient(frame_sink_id_);
219 surface_manager_->UnregisterFrameSinkHierarchy( 220 parent_compositor_impl_->RemoveChildFrameSink(frame_sink_id_);
220 registered_parent_frame_sink_id_, frame_sink_id_); 221 parent_compositor_impl_ = nullptr;
221 registered_parent_frame_sink_id_ = cc::FrameSinkId();
222 } 222 }
223 223
224 void DelegatedFrameHostAndroid::ReturnResources( 224 void DelegatedFrameHostAndroid::ReturnResources(
225 const cc::ReturnedResourceArray& resources) { 225 const cc::ReturnedResourceArray& resources) {
226 client_->ReturnResources(resources); 226 client_->ReturnResources(resources);
227 } 227 }
228 228
229 void DelegatedFrameHostAndroid::SetBeginFrameSource( 229 void DelegatedFrameHostAndroid::SetBeginFrameSource(
230 cc::BeginFrameSource* begin_frame_source) { 230 cc::BeginFrameSource* begin_frame_source) {
231 client_->SetBeginFrameSource(begin_frame_source); 231 client_->SetBeginFrameSource(begin_frame_source);
(...skipping 15 matching lines...) Expand all
247 content_size_in_dip.width() < container_size_in_dip_.width() || 247 content_size_in_dip.width() < container_size_in_dip_.width() ||
248 content_size_in_dip.height() < container_size_in_dip_.height(); 248 content_size_in_dip.height() < container_size_in_dip_.height();
249 } else { 249 } else {
250 background_is_drawable = true; 250 background_is_drawable = true;
251 } 251 }
252 252
253 background_layer_->SetIsDrawable(background_is_drawable); 253 background_layer_->SetIsDrawable(background_is_drawable);
254 } 254 }
255 255
256 } // namespace ui 256 } // namespace ui
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698