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

Side by Side Diff: content/browser/renderer_host/render_widget_host_view_android.cc

Issue 2612083002: DirectCompositorFrameSink Uses CompositorFrameSinkSupport (Closed)
Patch Set: Set NeedsBeginFrame to false before resetting support_ 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 (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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 "content/browser/renderer_host/render_widget_host_view_android.h" 5 #include "content/browser/renderer_host/render_widget_host_view_android.h"
6 6
7 #include <android/bitmap.h> 7 #include <android/bitmap.h>
8 8
9 #include <utility> 9 #include <utility>
10 10
(...skipping 1392 matching lines...) Expand 10 before | Expand all | Expand 10 after
1403 return; 1403 return;
1404 1404
1405 observing_root_window_ = true; 1405 observing_root_window_ = true;
1406 if (host_) 1406 if (host_)
1407 host_->Send(new ViewMsg_SetBeginFramePaused(host_->GetRoutingID(), false)); 1407 host_->Send(new ViewMsg_SetBeginFramePaused(host_->GetRoutingID(), false));
1408 view_.GetWindowAndroid()->AddObserver(this); 1408 view_.GetWindowAndroid()->AddObserver(this);
1409 // When using browser compositor, DelegatedFrameHostAndroid provides the BFS. 1409 // When using browser compositor, DelegatedFrameHostAndroid provides the BFS.
1410 if (!using_browser_compositor_) 1410 if (!using_browser_compositor_)
1411 SetBeginFrameSource(view_.GetWindowAndroid()->GetBeginFrameSource()); 1411 SetBeginFrameSource(view_.GetWindowAndroid()->GetBeginFrameSource());
1412 1412
1413 ui::WindowAndroidCompositor* compositor = 1413 CompositorImpl* compositor =
1414 view_.GetWindowAndroid()->GetCompositor(); 1414 static_cast<CompositorImpl*>(view_.GetWindowAndroid()->GetCompositor());
1415 if (compositor) { 1415 if (compositor)
1416 delegated_frame_host_->RegisterFrameSinkHierarchy( 1416 delegated_frame_host_->AttachToCompositor(compositor);
1417 compositor->GetFrameSinkId());
1418 }
1419 } 1417 }
1420 1418
1421 void RenderWidgetHostViewAndroid::StopObservingRootWindow() { 1419 void RenderWidgetHostViewAndroid::StopObservingRootWindow() {
1422 if (!(view_.GetWindowAndroid())) { 1420 if (!(view_.GetWindowAndroid())) {
1423 DCHECK(!observing_root_window_); 1421 DCHECK(!observing_root_window_);
1424 return; 1422 return;
1425 } 1423 }
1426 1424
1427 if (!observing_root_window_) 1425 if (!observing_root_window_)
1428 return; 1426 return;
1429 1427
1430 // Reset window state variables to their defaults. 1428 // Reset window state variables to their defaults.
1431 is_window_activity_started_ = true; 1429 is_window_activity_started_ = true;
1432 is_window_visible_ = true; 1430 is_window_visible_ = true;
1433 observing_root_window_ = false; 1431 observing_root_window_ = false;
1434 if (host_) 1432 if (host_)
1435 host_->Send(new ViewMsg_SetBeginFramePaused(host_->GetRoutingID(), true)); 1433 host_->Send(new ViewMsg_SetBeginFramePaused(host_->GetRoutingID(), true));
1436 view_.GetWindowAndroid()->RemoveObserver(this); 1434 view_.GetWindowAndroid()->RemoveObserver(this);
1437 if (!using_browser_compositor_) 1435 if (!using_browser_compositor_)
1438 SetBeginFrameSource(nullptr); 1436 SetBeginFrameSource(nullptr);
1439 // If the DFH has already been destroyed, it will have cleaned itself up. 1437 // If the DFH has already been destroyed, it will have cleaned itself up.
1440 // This happens in some WebView cases. 1438 // This happens in some WebView cases.
1441 if (delegated_frame_host_) 1439 if (delegated_frame_host_)
1442 delegated_frame_host_->UnregisterFrameSinkHierarchy(); 1440 delegated_frame_host_->DetachFromCompositor();
1443 DCHECK(!begin_frame_source_); 1441 DCHECK(!begin_frame_source_);
1444 } 1442 }
1445 1443
1446 void RenderWidgetHostViewAndroid::SendBeginFrame(cc::BeginFrameArgs args) { 1444 void RenderWidgetHostViewAndroid::SendBeginFrame(cc::BeginFrameArgs args) {
1447 TRACE_EVENT2("cc", "RenderWidgetHostViewAndroid::SendBeginFrame", 1445 TRACE_EVENT2("cc", "RenderWidgetHostViewAndroid::SendBeginFrame",
1448 "frame_number", args.sequence_number, "frame_time_us", 1446 "frame_number", args.sequence_number, "frame_time_us",
1449 args.frame_time.ToInternalValue()); 1447 args.frame_time.ToInternalValue());
1450 1448
1451 // Synchronous compositor does not use deadline-based scheduling. 1449 // Synchronous compositor does not use deadline-based scheduling.
1452 // TODO(brianderson): Replace this hardcoded deadline after Android 1450 // TODO(brianderson): Replace this hardcoded deadline after Android
(...skipping 362 matching lines...) Expand 10 before | Expand all | Expand 10 after
1815 1813
1816 void RenderWidgetHostViewAndroid::OnDetachedFromWindow() { 1814 void RenderWidgetHostViewAndroid::OnDetachedFromWindow() {
1817 StopObservingRootWindow(); 1815 StopObservingRootWindow();
1818 OnDetachCompositor(); 1816 OnDetachCompositor();
1819 } 1817 }
1820 1818
1821 void RenderWidgetHostViewAndroid::OnAttachCompositor() { 1819 void RenderWidgetHostViewAndroid::OnAttachCompositor() {
1822 DCHECK(content_view_core_); 1820 DCHECK(content_view_core_);
1823 CreateOverscrollControllerIfPossible(); 1821 CreateOverscrollControllerIfPossible();
1824 if (observing_root_window_) { 1822 if (observing_root_window_) {
1825 ui::WindowAndroidCompositor* compositor = 1823 CompositorImpl* compositor =
1826 view_.GetWindowAndroid()->GetCompositor(); 1824 static_cast<CompositorImpl*>(view_.GetWindowAndroid()->GetCompositor());
1827 delegated_frame_host_->RegisterFrameSinkHierarchy( 1825 delegated_frame_host_->AttachToCompositor(compositor);
1828 compositor->GetFrameSinkId());
1829 } 1826 }
1830 } 1827 }
1831 1828
1832 void RenderWidgetHostViewAndroid::OnDetachCompositor() { 1829 void RenderWidgetHostViewAndroid::OnDetachCompositor() {
1833 DCHECK(content_view_core_); 1830 DCHECK(content_view_core_);
1834 DCHECK(using_browser_compositor_); 1831 DCHECK(using_browser_compositor_);
1835 RunAckCallbacks(); 1832 RunAckCallbacks();
1836 overscroll_controller_.reset(); 1833 overscroll_controller_.reset();
1837 delegated_frame_host_->UnregisterFrameSinkHierarchy(); 1834 delegated_frame_host_->DetachFromCompositor();
1838 } 1835 }
1839 1836
1840 void RenderWidgetHostViewAndroid::OnBeginFrame(const cc::BeginFrameArgs& args) { 1837 void RenderWidgetHostViewAndroid::OnBeginFrame(const cc::BeginFrameArgs& args) {
1841 TRACE_EVENT0("cc,benchmark", "RenderWidgetHostViewAndroid::OnBeginFrame"); 1838 TRACE_EVENT0("cc,benchmark", "RenderWidgetHostViewAndroid::OnBeginFrame");
1842 if (!host_) 1839 if (!host_)
1843 return; 1840 return;
1844 1841
1845 // In sync mode, we disregard missed frame args to ensure that 1842 // In sync mode, we disregard missed frame args to ensure that
1846 // SynchronousCompositorBrowserFilter::SyncStateAfterVSync will be called 1843 // SynchronousCompositorBrowserFilter::SyncStateAfterVSync will be called
1847 // during WindowAndroid::WindowBeginFrameSource::OnVSync() observer iteration. 1844 // during WindowAndroid::WindowBeginFrameSource::OnVSync() observer iteration.
(...skipping 138 matching lines...) Expand 10 before | Expand all | Expand 10 after
1986 ui::WindowAndroidCompositor* compositor = window_android->GetCompositor(); 1983 ui::WindowAndroidCompositor* compositor = window_android->GetCompositor();
1987 if (!compositor) 1984 if (!compositor)
1988 return; 1985 return;
1989 1986
1990 overscroll_controller_ = base::MakeUnique<OverscrollControllerAndroid>( 1987 overscroll_controller_ = base::MakeUnique<OverscrollControllerAndroid>(
1991 overscroll_refresh_handler, compositor, 1988 overscroll_refresh_handler, compositor,
1992 ui::GetScaleFactorForNativeView(GetNativeView())); 1989 ui::GetScaleFactorForNativeView(GetNativeView()));
1993 } 1990 }
1994 1991
1995 } // namespace content 1992 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698