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

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

Issue 2612083002: DirectCompositorFrameSink Uses CompositorFrameSinkSupport (Closed)
Patch Set: CompositorImpl::AddChildFrameSink() and CompositorImpl::RemoveChildFrameSink() replace DelegatedFra… 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 1472 matching lines...) Expand 10 before | Expand all | Expand 10 after
1483 return; 1483 return;
1484 1484
1485 observing_root_window_ = true; 1485 observing_root_window_ = true;
1486 if (host_) 1486 if (host_)
1487 host_->Send(new ViewMsg_SetBeginFramePaused(host_->GetRoutingID(), false)); 1487 host_->Send(new ViewMsg_SetBeginFramePaused(host_->GetRoutingID(), false));
1488 view_.GetWindowAndroid()->AddObserver(this); 1488 view_.GetWindowAndroid()->AddObserver(this);
1489 // When using browser compositor, DelegatedFrameHostAndroid provides the BFS. 1489 // When using browser compositor, DelegatedFrameHostAndroid provides the BFS.
1490 if (!using_browser_compositor_) 1490 if (!using_browser_compositor_)
1491 SetBeginFrameSource(view_.GetWindowAndroid()->GetBeginFrameSource()); 1491 SetBeginFrameSource(view_.GetWindowAndroid()->GetBeginFrameSource());
1492 1492
1493 ui::WindowAndroidCompositor* compositor = 1493 CompositorImpl* compositor =
1494 view_.GetWindowAndroid()->GetCompositor(); 1494 static_cast<CompositorImpl*>(view_.GetWindowAndroid()->GetCompositor());
1495 if (compositor) { 1495 if (compositor)
1496 delegated_frame_host_->RegisterFrameSinkHierarchy( 1496 compositor->AddChildFrameSink(delegated_frame_host_->GetFrameSinkId());
1497 compositor->GetFrameSinkId());
1498 }
1499 } 1497 }
1500 1498
1501 void RenderWidgetHostViewAndroid::StopObservingRootWindow() { 1499 void RenderWidgetHostViewAndroid::StopObservingRootWindow() {
1502 if (!(view_.GetWindowAndroid())) { 1500 if (!(view_.GetWindowAndroid())) {
1503 DCHECK(!observing_root_window_); 1501 DCHECK(!observing_root_window_);
1504 return; 1502 return;
1505 } 1503 }
1506 1504
1507 if (!observing_root_window_) 1505 if (!observing_root_window_)
1508 return; 1506 return;
1509 1507
1510 // Reset window state variables to their defaults. 1508 // Reset window state variables to their defaults.
1511 is_window_activity_started_ = true; 1509 is_window_activity_started_ = true;
1512 is_window_visible_ = true; 1510 is_window_visible_ = true;
1513 observing_root_window_ = false; 1511 observing_root_window_ = false;
1514 if (host_) 1512 if (host_)
1515 host_->Send(new ViewMsg_SetBeginFramePaused(host_->GetRoutingID(), true)); 1513 host_->Send(new ViewMsg_SetBeginFramePaused(host_->GetRoutingID(), true));
1516 view_.GetWindowAndroid()->RemoveObserver(this); 1514 view_.GetWindowAndroid()->RemoveObserver(this);
1517 if (!using_browser_compositor_) 1515 if (!using_browser_compositor_)
1518 SetBeginFrameSource(nullptr); 1516 SetBeginFrameSource(nullptr);
1519 // If the DFH has already been destroyed, it will have cleaned itself up. 1517 // If the DFH has already been destroyed, it will have cleaned itself up.
1520 // This happens in some WebView cases. 1518 // This happens in some WebView cases.
1521 if (delegated_frame_host_) 1519 CompositorImpl* compositor =
1522 delegated_frame_host_->UnregisterFrameSinkHierarchy(); 1520 static_cast<CompositorImpl*>(view_.GetWindowAndroid()->GetCompositor());
1521 if (delegated_frame_host_ && compositor)
boliu 2017/01/30 21:13:51 delegated_frame_host_ check is redundant if you ch
Alex Z. 2017/01/30 21:32:18 Done.
1522 compositor->RemoveChildFrameSink(delegated_frame_host_->GetFrameSinkId());
1523 DCHECK(!begin_frame_source_); 1523 DCHECK(!begin_frame_source_);
1524 } 1524 }
1525 1525
1526 void RenderWidgetHostViewAndroid::SendBeginFrame(cc::BeginFrameArgs args) { 1526 void RenderWidgetHostViewAndroid::SendBeginFrame(cc::BeginFrameArgs args) {
1527 TRACE_EVENT2("cc", "RenderWidgetHostViewAndroid::SendBeginFrame", 1527 TRACE_EVENT2("cc", "RenderWidgetHostViewAndroid::SendBeginFrame",
1528 "frame_number", args.sequence_number, "frame_time_us", 1528 "frame_number", args.sequence_number, "frame_time_us",
1529 args.frame_time.ToInternalValue()); 1529 args.frame_time.ToInternalValue());
1530 1530
1531 // Synchronous compositor does not use deadline-based scheduling. 1531 // Synchronous compositor does not use deadline-based scheduling.
1532 // TODO(brianderson): Replace this hardcoded deadline after Android 1532 // TODO(brianderson): Replace this hardcoded deadline after Android
(...skipping 362 matching lines...) Expand 10 before | Expand all | Expand 10 after
1895 1895
1896 void RenderWidgetHostViewAndroid::OnDetachedFromWindow() { 1896 void RenderWidgetHostViewAndroid::OnDetachedFromWindow() {
1897 StopObservingRootWindow(); 1897 StopObservingRootWindow();
1898 OnDetachCompositor(); 1898 OnDetachCompositor();
1899 } 1899 }
1900 1900
1901 void RenderWidgetHostViewAndroid::OnAttachCompositor() { 1901 void RenderWidgetHostViewAndroid::OnAttachCompositor() {
1902 DCHECK(content_view_core_); 1902 DCHECK(content_view_core_);
1903 CreateOverscrollControllerIfPossible(); 1903 CreateOverscrollControllerIfPossible();
1904 if (observing_root_window_) { 1904 if (observing_root_window_) {
1905 ui::WindowAndroidCompositor* compositor = 1905 CompositorImpl* compositor =
1906 view_.GetWindowAndroid()->GetCompositor(); 1906 static_cast<CompositorImpl*>(view_.GetWindowAndroid()->GetCompositor());
1907 delegated_frame_host_->RegisterFrameSinkHierarchy( 1907 compositor->AddChildFrameSink(delegated_frame_host_->GetFrameSinkId());
1908 compositor->GetFrameSinkId());
1909 } 1908 }
1910 } 1909 }
1911 1910
1912 void RenderWidgetHostViewAndroid::OnDetachCompositor() { 1911 void RenderWidgetHostViewAndroid::OnDetachCompositor() {
1913 DCHECK(content_view_core_); 1912 DCHECK(content_view_core_);
1914 DCHECK(using_browser_compositor_); 1913 DCHECK(using_browser_compositor_);
1915 RunAckCallbacks(); 1914 RunAckCallbacks();
1916 overscroll_controller_.reset(); 1915 overscroll_controller_.reset();
1917 delegated_frame_host_->UnregisterFrameSinkHierarchy(); 1916 CompositorImpl* compositor =
1917 static_cast<CompositorImpl*>(view_.GetWindowAndroid()->GetCompositor());
1918 compositor->RemoveChildFrameSink(delegated_frame_host_->GetFrameSinkId());
1918 } 1919 }
1919 1920
1920 void RenderWidgetHostViewAndroid::OnBeginFrame(const cc::BeginFrameArgs& args) { 1921 void RenderWidgetHostViewAndroid::OnBeginFrame(const cc::BeginFrameArgs& args) {
1921 TRACE_EVENT0("cc,benchmark", "RenderWidgetHostViewAndroid::OnBeginFrame"); 1922 TRACE_EVENT0("cc,benchmark", "RenderWidgetHostViewAndroid::OnBeginFrame");
1922 if (!host_) 1923 if (!host_)
1923 return; 1924 return;
1924 1925
1925 // In sync mode, we disregard missed frame args to ensure that 1926 // In sync mode, we disregard missed frame args to ensure that
1926 // SynchronousCompositorBrowserFilter::SyncStateAfterVSync will be called 1927 // SynchronousCompositorBrowserFilter::SyncStateAfterVSync will be called
1927 // during WindowAndroid::WindowBeginFrameSource::OnVSync() observer iteration. 1928 // during WindowAndroid::WindowBeginFrameSource::OnVSync() observer iteration.
(...skipping 139 matching lines...) Expand 10 before | Expand all | Expand 10 after
2067 ui::WindowAndroidCompositor* compositor = window_android->GetCompositor(); 2068 ui::WindowAndroidCompositor* compositor = window_android->GetCompositor();
2068 if (!compositor) 2069 if (!compositor)
2069 return; 2070 return;
2070 2071
2071 overscroll_controller_ = base::MakeUnique<OverscrollControllerAndroid>( 2072 overscroll_controller_ = base::MakeUnique<OverscrollControllerAndroid>(
2072 overscroll_refresh_handler, compositor, 2073 overscroll_refresh_handler, compositor,
2073 ui::GetScaleFactorForNativeView(GetNativeView())); 2074 ui::GetScaleFactorForNativeView(GetNativeView()));
2074 } 2075 }
2075 2076
2076 } // namespace content 2077 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698