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

Side by Side Diff: content/browser/renderer_host/render_widget_host_view_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 (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 delegated_frame_host_->AttachToCompositor(compositor);
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 if (delegated_frame_host_)
1522 delegated_frame_host_->UnregisterFrameSinkHierarchy(); 1520 delegated_frame_host_->DetachFromCompositor();
1523 DCHECK(!begin_frame_source_); 1521 DCHECK(!begin_frame_source_);
1524 } 1522 }
1525 1523
1526 void RenderWidgetHostViewAndroid::SendBeginFrame(cc::BeginFrameArgs args) { 1524 void RenderWidgetHostViewAndroid::SendBeginFrame(cc::BeginFrameArgs args) {
1527 TRACE_EVENT2("cc", "RenderWidgetHostViewAndroid::SendBeginFrame", 1525 TRACE_EVENT2("cc", "RenderWidgetHostViewAndroid::SendBeginFrame",
1528 "frame_number", args.sequence_number, "frame_time_us", 1526 "frame_number", args.sequence_number, "frame_time_us",
1529 args.frame_time.ToInternalValue()); 1527 args.frame_time.ToInternalValue());
1530 1528
1531 // Synchronous compositor does not use deadline-based scheduling. 1529 // Synchronous compositor does not use deadline-based scheduling.
1532 // TODO(brianderson): Replace this hardcoded deadline after Android 1530 // TODO(brianderson): Replace this hardcoded deadline after Android
(...skipping 362 matching lines...) Expand 10 before | Expand all | Expand 10 after
1895 1893
1896 void RenderWidgetHostViewAndroid::OnDetachedFromWindow() { 1894 void RenderWidgetHostViewAndroid::OnDetachedFromWindow() {
1897 StopObservingRootWindow(); 1895 StopObservingRootWindow();
1898 OnDetachCompositor(); 1896 OnDetachCompositor();
1899 } 1897 }
1900 1898
1901 void RenderWidgetHostViewAndroid::OnAttachCompositor() { 1899 void RenderWidgetHostViewAndroid::OnAttachCompositor() {
1902 DCHECK(content_view_core_); 1900 DCHECK(content_view_core_);
1903 CreateOverscrollControllerIfPossible(); 1901 CreateOverscrollControllerIfPossible();
1904 if (observing_root_window_) { 1902 if (observing_root_window_) {
1905 ui::WindowAndroidCompositor* compositor = 1903 CompositorImpl* compositor =
1906 view_.GetWindowAndroid()->GetCompositor(); 1904 static_cast<CompositorImpl*>(view_.GetWindowAndroid()->GetCompositor());
1907 delegated_frame_host_->RegisterFrameSinkHierarchy( 1905 delegated_frame_host_->AttachToCompositor(compositor);
1908 compositor->GetFrameSinkId());
1909 } 1906 }
1910 } 1907 }
1911 1908
1912 void RenderWidgetHostViewAndroid::OnDetachCompositor() { 1909 void RenderWidgetHostViewAndroid::OnDetachCompositor() {
1913 DCHECK(content_view_core_); 1910 DCHECK(content_view_core_);
1914 DCHECK(using_browser_compositor_); 1911 DCHECK(using_browser_compositor_);
1915 RunAckCallbacks(); 1912 RunAckCallbacks();
1916 overscroll_controller_.reset(); 1913 overscroll_controller_.reset();
1917 delegated_frame_host_->UnregisterFrameSinkHierarchy(); 1914 delegated_frame_host_->DetachFromCompositor();
1918 } 1915 }
1919 1916
1920 void RenderWidgetHostViewAndroid::OnBeginFrame(const cc::BeginFrameArgs& args) { 1917 void RenderWidgetHostViewAndroid::OnBeginFrame(const cc::BeginFrameArgs& args) {
1921 TRACE_EVENT0("cc,benchmark", "RenderWidgetHostViewAndroid::OnBeginFrame"); 1918 TRACE_EVENT0("cc,benchmark", "RenderWidgetHostViewAndroid::OnBeginFrame");
1922 if (!host_) 1919 if (!host_)
1923 return; 1920 return;
1924 1921
1925 // In sync mode, we disregard missed frame args to ensure that 1922 // In sync mode, we disregard missed frame args to ensure that
1926 // SynchronousCompositorBrowserFilter::SyncStateAfterVSync will be called 1923 // SynchronousCompositorBrowserFilter::SyncStateAfterVSync will be called
1927 // during WindowAndroid::WindowBeginFrameSource::OnVSync() observer iteration. 1924 // 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(); 2064 ui::WindowAndroidCompositor* compositor = window_android->GetCompositor();
2068 if (!compositor) 2065 if (!compositor)
2069 return; 2066 return;
2070 2067
2071 overscroll_controller_ = base::MakeUnique<OverscrollControllerAndroid>( 2068 overscroll_controller_ = base::MakeUnique<OverscrollControllerAndroid>(
2072 overscroll_refresh_handler, compositor, 2069 overscroll_refresh_handler, compositor,
2073 ui::GetScaleFactorForNativeView(GetNativeView())); 2070 ui::GetScaleFactorForNativeView(GetNativeView()));
2074 } 2071 }
2075 2072
2076 } // namespace content 2073 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698