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

Side by Side Diff: cc/trees/layer_tree_host_impl.cc

Issue 754433003: Update from https://crrev.com/305340 (Closed) Base URL: git@github.com:domokit/mojo.git@master
Patch Set: Created 6 years, 1 month 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
« no previous file with comments | « cc/trees/layer_tree_host_impl.h ('k') | cc/trees/layer_tree_host_impl_unittest.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2011 The Chromium Authors. All rights reserved. 1 // Copyright 2011 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 "cc/trees/layer_tree_host_impl.h" 5 #include "cc/trees/layer_tree_host_impl.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <limits> 8 #include <limits>
9 9
10 #include "base/basictypes.h" 10 #include "base/basictypes.h"
(...skipping 396 matching lines...) Expand 10 before | Expand all | Expand 10 after
407 return; 407 return;
408 if (!tile_priorities_dirty_) 408 if (!tile_priorities_dirty_)
409 return; 409 return;
410 410
411 tile_priorities_dirty_ = false; 411 tile_priorities_dirty_ = false;
412 tile_manager_->ManageTiles(global_tile_state_); 412 tile_manager_->ManageTiles(global_tile_state_);
413 413
414 client_->DidManageTiles(); 414 client_->DidManageTiles();
415 } 415 }
416 416
417 void LayerTreeHostImpl::StartPageScaleAnimation(
418 const gfx::Vector2d& target_offset,
419 bool anchor_point,
420 float page_scale,
421 base::TimeDelta duration) {
422 if (!InnerViewportScrollLayer())
423 return;
424
425 gfx::ScrollOffset scroll_total = active_tree_->TotalScrollOffset();
426 gfx::SizeF scaled_scrollable_size = active_tree_->ScrollableSize();
427 gfx::SizeF viewport_size =
428 active_tree_->InnerViewportContainerLayer()->bounds();
429
430 // Easing constants experimentally determined.
431 scoped_ptr<TimingFunction> timing_function =
432 CubicBezierTimingFunction::Create(.8, 0, .3, .9);
433
434 // TODO(miletus) : Pass in ScrollOffset.
435 page_scale_animation_ =
436 PageScaleAnimation::Create(ScrollOffsetToVector2dF(scroll_total),
437 active_tree_->total_page_scale_factor(),
438 viewport_size,
439 scaled_scrollable_size,
440 timing_function.Pass());
441
442 if (anchor_point) {
443 gfx::Vector2dF anchor(target_offset);
444 page_scale_animation_->ZoomWithAnchor(anchor,
445 page_scale,
446 duration.InSecondsF());
447 } else {
448 gfx::Vector2dF scaled_target_offset = target_offset;
449 page_scale_animation_->ZoomTo(scaled_target_offset,
450 page_scale,
451 duration.InSecondsF());
452 }
453
454 SetNeedsAnimate();
455 client_->SetNeedsCommitOnImplThread();
456 client_->RenewTreePriority();
457 }
458
417 bool LayerTreeHostImpl::IsCurrentlyScrollingLayerAt( 459 bool LayerTreeHostImpl::IsCurrentlyScrollingLayerAt(
418 const gfx::Point& viewport_point, 460 const gfx::Point& viewport_point,
419 InputHandler::ScrollInputType type) { 461 InputHandler::ScrollInputType type) {
420 if (!CurrentlyScrollingLayer()) 462 if (!CurrentlyScrollingLayer())
421 return false; 463 return false;
422 464
423 gfx::PointF device_viewport_point = 465 gfx::PointF device_viewport_point =
424 gfx::ScalePoint(viewport_point, device_scale_factor_); 466 gfx::ScalePoint(viewport_point, device_scale_factor_);
425 467
426 LayerImpl* layer_impl = 468 LayerImpl* layer_impl =
(...skipping 1080 matching lines...) Expand 10 before | Expand all | Expand 10 after
1507 TRACE_EVENT0("cc", "DrawLayers.UpdateHudTexture"); 1549 TRACE_EVENT0("cc", "DrawLayers.UpdateHudTexture");
1508 active_tree_->hud_layer()->UpdateHudTexture(draw_mode, 1550 active_tree_->hud_layer()->UpdateHudTexture(draw_mode,
1509 resource_provider_.get()); 1551 resource_provider_.get());
1510 } 1552 }
1511 1553
1512 if (draw_mode == DRAW_MODE_RESOURCELESS_SOFTWARE) { 1554 if (draw_mode == DRAW_MODE_RESOURCELESS_SOFTWARE) {
1513 bool disable_picture_quad_image_filtering = 1555 bool disable_picture_quad_image_filtering =
1514 IsActivelyScrolling() || needs_animate_layers(); 1556 IsActivelyScrolling() || needs_animate_layers();
1515 1557
1516 scoped_ptr<SoftwareRenderer> temp_software_renderer = 1558 scoped_ptr<SoftwareRenderer> temp_software_renderer =
1517 SoftwareRenderer::Create(this, &settings_, output_surface_.get(), NULL); 1559 SoftwareRenderer::Create(this, &settings_.renderer_settings,
1560 output_surface_.get(), NULL);
1518 temp_software_renderer->DrawFrame(&frame->render_passes, 1561 temp_software_renderer->DrawFrame(&frame->render_passes,
1519 device_scale_factor_, 1562 device_scale_factor_,
1520 DeviceViewport(), 1563 DeviceViewport(),
1521 DeviceClip(), 1564 DeviceClip(),
1522 disable_picture_quad_image_filtering); 1565 disable_picture_quad_image_filtering);
1523 } else { 1566 } else {
1524 renderer_->DrawFrame(&frame->render_passes, 1567 renderer_->DrawFrame(&frame->render_passes,
1525 device_scale_factor_, 1568 device_scale_factor_,
1526 DeviceViewport(), 1569 DeviceViewport(),
1527 DeviceClip(), 1570 DeviceClip(),
(...skipping 272 matching lines...) Expand 10 before | Expand all | Expand 10 after
1800 if (debug_state_.continuous_painting) { 1843 if (debug_state_.continuous_painting) {
1801 const RenderingStats& stats = 1844 const RenderingStats& stats =
1802 rendering_stats_instrumentation_->GetRenderingStats(); 1845 rendering_stats_instrumentation_->GetRenderingStats();
1803 // TODO(hendrikw): This requires a different metric when we commit directly 1846 // TODO(hendrikw): This requires a different metric when we commit directly
1804 // to the active tree. See crbug.com/429311. 1847 // to the active tree. See crbug.com/429311.
1805 paint_time_counter_->SavePaintTime( 1848 paint_time_counter_->SavePaintTime(
1806 stats.commit_to_activate_duration.GetLastTimeDelta() + 1849 stats.commit_to_activate_duration.GetLastTimeDelta() +
1807 stats.draw_duration.GetLastTimeDelta()); 1850 stats.draw_duration.GetLastTimeDelta());
1808 } 1851 }
1809 1852
1810 scoped_ptr<PageScaleAnimation> page_scale_animation = 1853 scoped_ptr<PendingPageScaleAnimation> pending_page_scale_animation =
1811 active_tree_->TakePageScaleAnimation(); 1854 active_tree_->TakePendingPageScaleAnimation();
1812 if (page_scale_animation) { 1855 if (pending_page_scale_animation) {
1813 page_scale_animation_ = page_scale_animation.Pass(); 1856 StartPageScaleAnimation(
1814 SetNeedsAnimate(); 1857 pending_page_scale_animation->target_offset,
1815 client_->SetNeedsCommitOnImplThread(); 1858 pending_page_scale_animation->use_anchor,
1816 client_->RenewTreePriority(); 1859 pending_page_scale_animation->scale,
1860 pending_page_scale_animation->duration);
1817 } 1861 }
1818 } 1862 }
1819 1863
1820 void LayerTreeHostImpl::SetVisible(bool visible) { 1864 void LayerTreeHostImpl::SetVisible(bool visible) {
1821 DCHECK(proxy_->IsImplThread()); 1865 DCHECK(proxy_->IsImplThread());
1822 1866
1823 if (visible_ == visible) 1867 if (visible_ == visible)
1824 return; 1868 return;
1825 visible_ = visible; 1869 visible_ = visible;
1826 DidVisibilityChange(this, visible_); 1870 DidVisibilityChange(this, visible_);
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after
1889 1933
1890 EvictAllUIResources(); 1934 EvictAllUIResources();
1891 } 1935 }
1892 1936
1893 void LayerTreeHostImpl::CreateAndSetRenderer() { 1937 void LayerTreeHostImpl::CreateAndSetRenderer() {
1894 DCHECK(!renderer_); 1938 DCHECK(!renderer_);
1895 DCHECK(output_surface_); 1939 DCHECK(output_surface_);
1896 DCHECK(resource_provider_); 1940 DCHECK(resource_provider_);
1897 1941
1898 if (output_surface_->capabilities().delegated_rendering) { 1942 if (output_surface_->capabilities().delegated_rendering) {
1899 renderer_ = DelegatingRenderer::Create( 1943 renderer_ = DelegatingRenderer::Create(this, &settings_.renderer_settings,
1900 this, &settings_, output_surface_.get(), resource_provider_.get()); 1944 output_surface_.get(),
1945 resource_provider_.get());
1901 } else if (output_surface_->context_provider()) { 1946 } else if (output_surface_->context_provider()) {
1902 renderer_ = GLRenderer::Create(this, 1947 renderer_ = GLRenderer::Create(
1903 &settings_, 1948 this, &settings_.renderer_settings, output_surface_.get(),
1904 output_surface_.get(), 1949 resource_provider_.get(), texture_mailbox_deleter_.get(),
1905 resource_provider_.get(), 1950 settings_.renderer_settings.highp_threshold_min);
1906 texture_mailbox_deleter_.get(),
1907 settings_.highp_threshold_min);
1908 } else if (output_surface_->software_device()) { 1951 } else if (output_surface_->software_device()) {
1909 renderer_ = SoftwareRenderer::Create( 1952 renderer_ = SoftwareRenderer::Create(this, &settings_.renderer_settings,
1910 this, &settings_, output_surface_.get(), resource_provider_.get()); 1953 output_surface_.get(),
1954 resource_provider_.get());
1911 } 1955 }
1912 DCHECK(renderer_); 1956 DCHECK(renderer_);
1913 1957
1914 renderer_->SetVisible(visible_); 1958 renderer_->SetVisible(visible_);
1915 SetFullRootLayerDamage(); 1959 SetFullRootLayerDamage();
1916 1960
1917 // See note in LayerTreeImpl::UpdateDrawProperties. Renderer needs to be 1961 // See note in LayerTreeImpl::UpdateDrawProperties. Renderer needs to be
1918 // initialized to get max texture size. Also, after releasing resources, 1962 // initialized to get max texture size. Also, after releasing resources,
1919 // trees need another update to generate new ones. 1963 // trees need another update to generate new ones.
1920 active_tree_->set_needs_update_draw_properties(); 1964 active_tree_->set_needs_update_draw_properties();
(...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after
2019 context_provider, 2063 context_provider,
2020 resource_provider_.get(), 2064 resource_provider_.get(),
2021 staging_resource_pool_.get()); 2065 staging_resource_pool_.get());
2022 } else { 2066 } else {
2023 *resource_pool = ResourcePool::Create( 2067 *resource_pool = ResourcePool::Create(
2024 resource_provider_.get(), 2068 resource_provider_.get(),
2025 GL_TEXTURE_2D, 2069 GL_TEXTURE_2D,
2026 resource_provider_->memory_efficient_texture_format()); 2070 resource_provider_->memory_efficient_texture_format());
2027 2071
2028 *raster_worker_pool = PixelBufferRasterWorkerPool::Create( 2072 *raster_worker_pool = PixelBufferRasterWorkerPool::Create(
2029 task_runner, 2073 task_runner, RasterWorkerPool::GetTaskGraphRunner(), context_provider,
2030 RasterWorkerPool::GetTaskGraphRunner(),
2031 context_provider,
2032 resource_provider_.get(), 2074 resource_provider_.get(),
2033 GetMaxTransferBufferUsageBytes(context_provider->ContextCapabilities(), 2075 GetMaxTransferBufferUsageBytes(
2034 settings_.refresh_rate)); 2076 context_provider->ContextCapabilities(),
2077 settings_.renderer_settings.refresh_rate));
2035 } 2078 }
2036 } 2079 }
2037 2080
2038 void LayerTreeHostImpl::DestroyTileManager() { 2081 void LayerTreeHostImpl::DestroyTileManager() {
2039 tile_manager_ = nullptr; 2082 tile_manager_ = nullptr;
2040 resource_pool_ = nullptr; 2083 resource_pool_ = nullptr;
2041 staging_resource_pool_ = nullptr; 2084 staging_resource_pool_ = nullptr;
2042 raster_worker_pool_ = nullptr; 2085 raster_worker_pool_ = nullptr;
2043 single_thread_synchronous_task_graph_runner_ = nullptr; 2086 single_thread_synchronous_task_graph_runner_ = nullptr;
2044 } 2087 }
2045 2088
2046 bool LayerTreeHostImpl::UsePendingTreeForSync() const { 2089 bool LayerTreeHostImpl::UsePendingTreeForSync() const {
2047 // In impl-side painting, synchronize to the pending tree so that it has 2090 // In impl-side painting, synchronize to the pending tree so that it has
2048 // time to raster before being displayed. 2091 // time to raster before being displayed.
2049 return settings_.impl_side_painting; 2092 return settings_.impl_side_painting;
2050 } 2093 }
2051 2094
2052 bool LayerTreeHostImpl::IsSynchronousSingleThreaded() const { 2095 bool LayerTreeHostImpl::IsSynchronousSingleThreaded() const {
2053 return !proxy_->HasImplThread() && !settings_.single_thread_proxy_scheduler; 2096 return !proxy_->HasImplThread() && !settings_.single_thread_proxy_scheduler;
2054 } 2097 }
2055 2098
2056 bool LayerTreeHostImpl::CanUseZeroCopyRasterizer() const { 2099 bool LayerTreeHostImpl::CanUseZeroCopyRasterizer() const {
2057 return GetRendererCapabilities().using_image; 2100 return GetRendererCapabilities().using_image;
2058 } 2101 }
2059 2102
2060 bool LayerTreeHostImpl::CanUseOneCopyRasterizer() const { 2103 bool LayerTreeHostImpl::CanUseOneCopyRasterizer() const {
2061 // Sync query support is required by one-copy rasterizer. 2104 return GetRendererCapabilities().using_image;
2062 return GetRendererCapabilities().using_image &&
2063 resource_provider_->use_sync_query();
2064 } 2105 }
2065 2106
2066 void LayerTreeHostImpl::EnforceZeroBudget(bool zero_budget) { 2107 void LayerTreeHostImpl::EnforceZeroBudget(bool zero_budget) {
2067 SetManagedMemoryPolicy(cached_managed_memory_policy_, zero_budget); 2108 SetManagedMemoryPolicy(cached_managed_memory_policy_, zero_budget);
2068 } 2109 }
2069 2110
2070 bool LayerTreeHostImpl::InitializeRenderer( 2111 bool LayerTreeHostImpl::InitializeRenderer(
2071 scoped_ptr<OutputSurface> output_surface) { 2112 scoped_ptr<OutputSurface> output_surface) {
2072 TRACE_EVENT0("cc", "LayerTreeHostImpl::InitializeRenderer"); 2113 TRACE_EVENT0("cc", "LayerTreeHostImpl::InitializeRenderer");
2073 2114
2074 // Since we will create a new resource provider, we cannot continue to use 2115 // Since we will create a new resource provider, we cannot continue to use
2075 // the old resources (i.e. render_surfaces and texture IDs). Clear them 2116 // the old resources (i.e. render_surfaces and texture IDs). Clear them
2076 // before we destroy the old resource provider. 2117 // before we destroy the old resource provider.
2077 ReleaseTreeResources(); 2118 ReleaseTreeResources();
2078 2119
2079 // Note: order is important here. 2120 // Note: order is important here.
2080 renderer_ = nullptr; 2121 renderer_ = nullptr;
2081 DestroyTileManager(); 2122 DestroyTileManager();
2082 resource_provider_ = nullptr; 2123 resource_provider_ = nullptr;
2083 output_surface_ = nullptr; 2124 output_surface_ = nullptr;
2084 2125
2085 if (!output_surface->BindToClient(this)) 2126 if (!output_surface->BindToClient(this))
2086 return false; 2127 return false;
2087 2128
2088 output_surface_ = output_surface.Pass(); 2129 output_surface_ = output_surface.Pass();
2089 resource_provider_ = 2130 resource_provider_ = ResourceProvider::Create(
2090 ResourceProvider::Create(output_surface_.get(), 2131 output_surface_.get(), shared_bitmap_manager_, gpu_memory_buffer_manager_,
2091 shared_bitmap_manager_, 2132 proxy_->blocking_main_thread_task_runner(),
2092 gpu_memory_buffer_manager_, 2133 settings_.renderer_settings.highp_threshold_min,
2093 proxy_->blocking_main_thread_task_runner(), 2134 settings_.renderer_settings.use_rgba_4444_textures,
2094 settings_.highp_threshold_min, 2135 settings_.renderer_settings.texture_id_allocation_chunk_size);
2095 settings_.use_rgba_4444_textures,
2096 settings_.texture_id_allocation_chunk_size);
2097 2136
2098 if (output_surface_->capabilities().deferred_gl_initialization) 2137 if (output_surface_->capabilities().deferred_gl_initialization)
2099 EnforceZeroBudget(true); 2138 EnforceZeroBudget(true);
2100 2139
2101 CreateAndSetRenderer(); 2140 CreateAndSetRenderer();
2102 2141
2103 if (settings_.impl_side_painting) 2142 if (settings_.impl_side_painting)
2104 CreateAndSetTileManager(); 2143 CreateAndSetTileManager();
2105 2144
2106 // Initialize vsync parameters to sane values. 2145 // Initialize vsync parameters to sane values.
2107 const base::TimeDelta display_refresh_interval = 2146 const base::TimeDelta display_refresh_interval =
2108 base::TimeDelta::FromMicroseconds(base::Time::kMicrosecondsPerSecond / 2147 base::TimeDelta::FromMicroseconds(
2109 settings_.refresh_rate); 2148 base::Time::kMicrosecondsPerSecond /
2149 settings_.renderer_settings.refresh_rate);
2110 CommitVSyncParameters(base::TimeTicks(), display_refresh_interval); 2150 CommitVSyncParameters(base::TimeTicks(), display_refresh_interval);
2111 2151
2112 // TODO(brianderson): Don't use a hard-coded parent draw time. 2152 // TODO(brianderson): Don't use a hard-coded parent draw time.
2113 base::TimeDelta parent_draw_time = 2153 base::TimeDelta parent_draw_time =
2114 (!settings_.use_external_begin_frame_source && 2154 (!settings_.use_external_begin_frame_source &&
2115 output_surface_->capabilities().adjust_deadline_for_parent) 2155 output_surface_->capabilities().adjust_deadline_for_parent)
2116 ? BeginFrameArgs::DefaultEstimatedParentDrawTime() 2156 ? BeginFrameArgs::DefaultEstimatedParentDrawTime()
2117 : base::TimeDelta(); 2157 : base::TimeDelta();
2118 client_->SetEstimatedParentDrawTime(parent_draw_time); 2158 client_->SetEstimatedParentDrawTime(parent_draw_time);
2119 2159
(...skipping 506 matching lines...) Expand 10 before | Expand all | Expand 10 after
2626 if (settings_.report_overscroll_only_for_scrollable_axes) { 2666 if (settings_.report_overscroll_only_for_scrollable_axes) {
2627 if (std::abs(active_tree_->TotalMaxScrollOffset().x()) <= kEpsilon || 2667 if (std::abs(active_tree_->TotalMaxScrollOffset().x()) <= kEpsilon ||
2628 !layer_impl->user_scrollable_horizontal()) 2668 !layer_impl->user_scrollable_horizontal())
2629 unused_root_delta.set_x(0.0f); 2669 unused_root_delta.set_x(0.0f);
2630 if (std::abs(active_tree_->TotalMaxScrollOffset().y()) <= kEpsilon || 2670 if (std::abs(active_tree_->TotalMaxScrollOffset().y()) <= kEpsilon ||
2631 !layer_impl->user_scrollable_vertical()) 2671 !layer_impl->user_scrollable_vertical())
2632 unused_root_delta.set_y(0.0f); 2672 unused_root_delta.set_y(0.0f);
2633 } 2673 }
2634 } 2674 }
2635 2675
2676 // Scrolls should bubble perfectly between the outer and inner viewports.
2677 bool allow_unrestricted_bubbling_for_current_layer =
2678 layer_impl == OuterViewportScrollLayer();
2679 bool allow_bubbling_for_current_layer =
2680 allow_unrestricted_bubbling_for_current_layer || should_bubble_scrolls_;
2681
2636 // If the layer wasn't able to move, try the next one in the hierarchy. 2682 // If the layer wasn't able to move, try the next one in the hierarchy.
2637 bool did_move_layer_x = std::abs(applied_delta.x()) > kEpsilon; 2683 bool did_move_layer_x = std::abs(applied_delta.x()) > kEpsilon;
2638 bool did_move_layer_y = std::abs(applied_delta.y()) > kEpsilon; 2684 bool did_move_layer_y = std::abs(applied_delta.y()) > kEpsilon;
2639 did_scroll_x |= did_move_layer_x; 2685 did_scroll_x |= did_move_layer_x;
2640 did_scroll_y |= did_move_layer_y; 2686 did_scroll_y |= did_move_layer_y;
2641 if (!did_move_layer_x && !did_move_layer_y) { 2687 if (!did_move_layer_x && !did_move_layer_y) {
2642 // Scrolls should always bubble between the outer and inner viewports 2688 if (allow_bubbling_for_current_layer || !did_lock_scrolling_layer_)
2643 if (should_bubble_scrolls_ || !did_lock_scrolling_layer_ ||
2644 layer_impl == OuterViewportScrollLayer())
2645 continue; 2689 continue;
2646 else 2690 else
2647 break; 2691 break;
2648 } 2692 }
2649 2693
2650 did_lock_scrolling_layer_ = true; 2694 did_lock_scrolling_layer_ = true;
2651 if (!should_bubble_scrolls_) { 2695 if (!allow_bubbling_for_current_layer) {
2652 active_tree_->SetCurrentlyScrollingLayer(layer_impl); 2696 active_tree_->SetCurrentlyScrollingLayer(layer_impl);
2653 break; 2697 break;
2654 } 2698 }
2655 2699
2656 // If the applied delta is within 45 degrees of the input delta, bail out to 2700 if (allow_unrestricted_bubbling_for_current_layer) {
2657 // make it easier to scroll just one layer in one direction without 2701 pending_delta -= applied_delta;
2658 // affecting any of its parents. 2702 } else {
2659 float angle_threshold = 45; 2703 // If the applied delta is within 45 degrees of the input delta, bail out
2660 if (MathUtil::SmallestAngleBetweenVectors( 2704 // to make it easier to scroll just one layer in one direction without
2661 applied_delta, pending_delta) < angle_threshold) { 2705 // affecting any of its parents.
2662 pending_delta = gfx::Vector2dF(); 2706 float angle_threshold = 45;
2663 break; 2707 if (MathUtil::SmallestAngleBetweenVectors(applied_delta, pending_delta) <
2708 angle_threshold) {
2709 pending_delta = gfx::Vector2dF();
2710 break;
2711 }
2712
2713 // Allow further movement only on an axis perpendicular to the direction
2714 // in which the layer moved.
2715 gfx::Vector2dF perpendicular_axis(-applied_delta.y(), applied_delta.x());
2716 pending_delta =
2717 MathUtil::ProjectVector(pending_delta, perpendicular_axis);
2664 } 2718 }
2665 2719
2666 // Allow further movement only on an axis perpendicular to the direction in
2667 // which the layer moved.
2668 gfx::Vector2dF perpendicular_axis(-applied_delta.y(), applied_delta.x());
2669 pending_delta = MathUtil::ProjectVector(pending_delta, perpendicular_axis);
2670
2671 if (gfx::ToRoundedVector2d(pending_delta).IsZero()) 2720 if (gfx::ToRoundedVector2d(pending_delta).IsZero())
2672 break; 2721 break;
2673 } 2722 }
2674 2723
2675 bool did_scroll_content = did_scroll_x || did_scroll_y; 2724 bool did_scroll_content = did_scroll_x || did_scroll_y;
2676 if (did_scroll_content) { 2725 if (did_scroll_content) {
2677 // If we are scrolling with an active scroll handler, forward latency 2726 // If we are scrolling with an active scroll handler, forward latency
2678 // tracking information to the main thread so the delay introduced by the 2727 // tracking information to the main thread so the delay introduced by the
2679 // handler is accounted for. 2728 // handler is accounted for.
2680 if (scroll_affects_scroll_handler()) 2729 if (scroll_affects_scroll_handler())
(...skipping 514 matching lines...) Expand 10 before | Expand all | Expand 10 after
3195 void LayerTreeHostImpl::ResetCurrentBeginFrameArgsForNextFrame() { 3244 void LayerTreeHostImpl::ResetCurrentBeginFrameArgsForNextFrame() {
3196 current_begin_frame_args_ = BeginFrameArgs(); 3245 current_begin_frame_args_ = BeginFrameArgs();
3197 } 3246 }
3198 3247
3199 BeginFrameArgs LayerTreeHostImpl::CurrentBeginFrameArgs() const { 3248 BeginFrameArgs LayerTreeHostImpl::CurrentBeginFrameArgs() const {
3200 // Try to use the current frame time to keep animations non-jittery. But if 3249 // Try to use the current frame time to keep animations non-jittery. But if
3201 // we're not in a frame (because this is during an input event or a delayed 3250 // we're not in a frame (because this is during an input event or a delayed
3202 // task), fall back to physical time. This should still be monotonic. 3251 // task), fall back to physical time. This should still be monotonic.
3203 if (current_begin_frame_args_.IsValid()) 3252 if (current_begin_frame_args_.IsValid())
3204 return current_begin_frame_args_; 3253 return current_begin_frame_args_;
3205 return BeginFrameArgs::Create(gfx::FrameTime::Now(), 3254 return BeginFrameArgs::Create(gfx::FrameTime::Now(), base::TimeTicks(),
3206 base::TimeTicks(), 3255 BeginFrameArgs::DefaultInterval(),
3207 BeginFrameArgs::DefaultInterval()); 3256 BeginFrameArgs::NORMAL);
3208 } 3257 }
3209 3258
3210 scoped_refptr<base::debug::ConvertableToTraceFormat> 3259 scoped_refptr<base::debug::ConvertableToTraceFormat>
3211 LayerTreeHostImpl::AsValue() const { 3260 LayerTreeHostImpl::AsValue() const {
3212 return AsValueWithFrame(NULL); 3261 return AsValueWithFrame(NULL);
3213 } 3262 }
3214 3263
3215 scoped_refptr<base::debug::ConvertableToTraceFormat> 3264 scoped_refptr<base::debug::ConvertableToTraceFormat>
3216 LayerTreeHostImpl::AsValueWithFrame(FrameData* frame) const { 3265 LayerTreeHostImpl::AsValueWithFrame(FrameData* frame) const {
3217 scoped_refptr<base::debug::TracedValue> state = 3266 scoped_refptr<base::debug::TracedValue> state =
(...skipping 224 matching lines...) Expand 10 before | Expand all | Expand 10 after
3442 } 3491 }
3443 3492
3444 void LayerTreeHostImpl::UnregisterPictureLayerImpl(PictureLayerImpl* layer) { 3493 void LayerTreeHostImpl::UnregisterPictureLayerImpl(PictureLayerImpl* layer) {
3445 std::vector<PictureLayerImpl*>::iterator it = 3494 std::vector<PictureLayerImpl*>::iterator it =
3446 std::find(picture_layers_.begin(), picture_layers_.end(), layer); 3495 std::find(picture_layers_.begin(), picture_layers_.end(), layer);
3447 DCHECK(it != picture_layers_.end()); 3496 DCHECK(it != picture_layers_.end());
3448 picture_layers_.erase(it); 3497 picture_layers_.erase(it);
3449 } 3498 }
3450 3499
3451 } // namespace cc 3500 } // namespace cc
OLDNEW
« no previous file with comments | « cc/trees/layer_tree_host_impl.h ('k') | cc/trees/layer_tree_host_impl_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698