OLD | NEW |
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 "base/android/build_info.h" | 9 #include "base/android/build_info.h" |
10 #include "base/basictypes.h" | 10 #include "base/basictypes.h" |
(...skipping 729 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
740 SkColor color) { | 740 SkColor color) { |
741 if (cached_background_color_ == color) | 741 if (cached_background_color_ == color) |
742 return; | 742 return; |
743 | 743 |
744 cached_background_color_ = color; | 744 cached_background_color_ = color; |
745 if (content_view_core_) | 745 if (content_view_core_) |
746 content_view_core_->OnBackgroundColorChanged(color); | 746 content_view_core_->OnBackgroundColorChanged(color); |
747 } | 747 } |
748 | 748 |
749 void RenderWidgetHostViewAndroid::OnSetNeedsBeginFrames(bool enabled) { | 749 void RenderWidgetHostViewAndroid::OnSetNeedsBeginFrames(bool enabled) { |
750 DCHECK(using_browser_compositor_); | |
751 TRACE_EVENT1("cc", "RenderWidgetHostViewAndroid::OnSetNeedsBeginFrames", | 750 TRACE_EVENT1("cc", "RenderWidgetHostViewAndroid::OnSetNeedsBeginFrames", |
752 "enabled", enabled); | 751 "enabled", enabled); |
753 if (enabled) | 752 if (enabled) |
754 RequestVSyncUpdate(PERSISTENT_BEGIN_FRAME); | 753 RequestVSyncUpdate(PERSISTENT_BEGIN_FRAME); |
755 else | 754 else |
756 outstanding_vsync_requests_ &= ~PERSISTENT_BEGIN_FRAME; | 755 outstanding_vsync_requests_ &= ~PERSISTENT_BEGIN_FRAME; |
757 } | 756 } |
758 | 757 |
759 void RenderWidgetHostViewAndroid::OnStartContentIntent( | 758 void RenderWidgetHostViewAndroid::OnStartContentIntent( |
760 const GURL& content_url) { | 759 const GURL& content_url) { |
(...skipping 609 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1370 | 1369 |
1371 if (!layer_.get()) | 1370 if (!layer_.get()) |
1372 return; | 1371 return; |
1373 | 1372 |
1374 content_view_core_->RemoveLayer(layer_); | 1373 content_view_core_->RemoveLayer(layer_); |
1375 if (overscroll_controller_) | 1374 if (overscroll_controller_) |
1376 overscroll_controller_->Disable(); | 1375 overscroll_controller_->Disable(); |
1377 } | 1376 } |
1378 | 1377 |
1379 void RenderWidgetHostViewAndroid::RequestVSyncUpdate(uint32 requests) { | 1378 void RenderWidgetHostViewAndroid::RequestVSyncUpdate(uint32 requests) { |
1380 // The synchronous compositor does not requre BeginFrame messages. | |
1381 if (!using_browser_compositor_) | |
1382 requests &= FLUSH_INPUT; | |
1383 | |
1384 bool should_request_vsync = !outstanding_vsync_requests_ && requests; | 1379 bool should_request_vsync = !outstanding_vsync_requests_ && requests; |
1385 outstanding_vsync_requests_ |= requests; | 1380 outstanding_vsync_requests_ |= requests; |
1386 // Note that if we're not currently observing the root window, outstanding | 1381 // Note that if we're not currently observing the root window, outstanding |
1387 // vsync requests will be pushed if/when we resume observing in | 1382 // vsync requests will be pushed if/when we resume observing in |
1388 // |StartObservingRootWindow()|. | 1383 // |StartObservingRootWindow()|. |
1389 if (observing_root_window_ && should_request_vsync) | 1384 if (observing_root_window_ && should_request_vsync) |
1390 content_view_core_->GetWindowAndroid()->RequestVSyncUpdate(); | 1385 content_view_core_->GetWindowAndroid()->RequestVSyncUpdate(); |
1391 } | 1386 } |
1392 | 1387 |
1393 void RenderWidgetHostViewAndroid::StartObservingRootWindow() { | 1388 void RenderWidgetHostViewAndroid::StartObservingRootWindow() { |
(...skipping 20 matching lines...) Expand all Loading... |
1414 return; | 1409 return; |
1415 | 1410 |
1416 observing_root_window_ = false; | 1411 observing_root_window_ = false; |
1417 content_view_core_->GetWindowAndroid()->RemoveObserver(this); | 1412 content_view_core_->GetWindowAndroid()->RemoveObserver(this); |
1418 } | 1413 } |
1419 | 1414 |
1420 void RenderWidgetHostViewAndroid::SendBeginFrame(base::TimeTicks frame_time, | 1415 void RenderWidgetHostViewAndroid::SendBeginFrame(base::TimeTicks frame_time, |
1421 base::TimeDelta vsync_period) { | 1416 base::TimeDelta vsync_period) { |
1422 TRACE_EVENT1("cc", "RenderWidgetHostViewAndroid::SendBeginFrame", | 1417 TRACE_EVENT1("cc", "RenderWidgetHostViewAndroid::SendBeginFrame", |
1423 "frame_time_us", frame_time.ToInternalValue()); | 1418 "frame_time_us", frame_time.ToInternalValue()); |
1424 base::TimeTicks display_time = frame_time + vsync_period; | |
1425 | 1419 |
1426 base::TimeTicks deadline = | 1420 if (using_browser_compositor_) { |
1427 display_time - host_->GetEstimatedBrowserCompositeTime(); | 1421 base::TimeTicks display_time = frame_time + vsync_period; |
1428 | 1422 |
1429 host_->Send(new ViewMsg_BeginFrame( | 1423 base::TimeTicks deadline = |
1430 host_->GetRoutingID(), | 1424 display_time - host_->GetEstimatedBrowserCompositeTime(); |
1431 cc::BeginFrameArgs::Create(BEGINFRAME_FROM_HERE, frame_time, deadline, | 1425 |
1432 vsync_period, cc::BeginFrameArgs::NORMAL))); | 1426 host_->Send(new ViewMsg_BeginFrame( |
| 1427 host_->GetRoutingID(), |
| 1428 cc::BeginFrameArgs::Create(BEGINFRAME_FROM_HERE, frame_time, deadline, |
| 1429 vsync_period, cc::BeginFrameArgs::NORMAL))); |
| 1430 } else { |
| 1431 SynchronousCompositorImpl* compositor = SynchronousCompositorImpl::FromID( |
| 1432 host_->GetProcess()->GetID(), host_->GetRoutingID()); |
| 1433 |
| 1434 compositor->SendBeginFrame(cc::BeginFrameArgs::Create( |
| 1435 BEGINFRAME_FROM_HERE, frame_time, base::TimeTicks(), vsync_period, |
| 1436 cc::BeginFrameArgs::NORMAL)); |
| 1437 } |
1433 } | 1438 } |
1434 | 1439 |
1435 bool RenderWidgetHostViewAndroid::Animate(base::TimeTicks frame_time) { | 1440 bool RenderWidgetHostViewAndroid::Animate(base::TimeTicks frame_time) { |
1436 bool needs_animate = false; | 1441 bool needs_animate = false; |
1437 if (overscroll_controller_) { | 1442 if (overscroll_controller_) { |
1438 needs_animate |= overscroll_controller_->Animate( | 1443 needs_animate |= overscroll_controller_->Animate( |
1439 frame_time, content_view_core_->GetLayer().get()); | 1444 frame_time, content_view_core_->GetLayer().get()); |
1440 } | 1445 } |
1441 if (selection_controller_) | 1446 if (selection_controller_) |
1442 needs_animate |= selection_controller_->Animate(frame_time); | 1447 needs_animate |= selection_controller_->Animate(frame_time); |
(...skipping 468 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1911 results->orientationAngle = display.RotationAsDegree(); | 1916 results->orientationAngle = display.RotationAsDegree(); |
1912 results->orientationType = | 1917 results->orientationType = |
1913 RenderWidgetHostViewBase::GetOrientationTypeForMobile(display); | 1918 RenderWidgetHostViewBase::GetOrientationTypeForMobile(display); |
1914 gfx::DeviceDisplayInfo info; | 1919 gfx::DeviceDisplayInfo info; |
1915 results->depth = info.GetBitsPerPixel(); | 1920 results->depth = info.GetBitsPerPixel(); |
1916 results->depthPerComponent = info.GetBitsPerComponent(); | 1921 results->depthPerComponent = info.GetBitsPerComponent(); |
1917 results->isMonochrome = (results->depthPerComponent == 0); | 1922 results->isMonochrome = (results->depthPerComponent == 0); |
1918 } | 1923 } |
1919 | 1924 |
1920 } // namespace content | 1925 } // namespace content |
OLD | NEW |