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

Side by Side Diff: cc/animation/scroll_offset_animations_impl.cc

Issue 2863103002: Reduce composited smooth scroll latency by a frame (also fixes latency UMAs). (Closed)
Patch Set: Cleanup. Created 3 years, 7 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
« no previous file with comments | « cc/animation/scroll_offset_animations_impl.h ('k') | cc/trees/layer_tree_host_impl.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 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 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/animation/scroll_offset_animations_impl.h" 5 #include "cc/animation/scroll_offset_animations_impl.h"
6 6
7 #include "cc/animation/animation_host.h" 7 #include "cc/animation/animation_host.h"
8 #include "cc/animation/animation_id_provider.h" 8 #include "cc/animation/animation_id_provider.h"
9 #include "cc/animation/animation_player.h" 9 #include "cc/animation/animation_player.h"
10 #include "cc/animation/animation_timeline.h" 10 #include "cc/animation/animation_timeline.h"
(...skipping 18 matching lines...) Expand all
29 29
30 ScrollOffsetAnimationsImpl::~ScrollOffsetAnimationsImpl() { 30 ScrollOffsetAnimationsImpl::~ScrollOffsetAnimationsImpl() {
31 scroll_offset_timeline_->DetachPlayer(scroll_offset_animation_player_.get()); 31 scroll_offset_timeline_->DetachPlayer(scroll_offset_animation_player_.get());
32 animation_host_->RemoveAnimationTimeline(scroll_offset_timeline_.get()); 32 animation_host_->RemoveAnimationTimeline(scroll_offset_timeline_.get());
33 } 33 }
34 34
35 void ScrollOffsetAnimationsImpl::ScrollAnimationCreate( 35 void ScrollOffsetAnimationsImpl::ScrollAnimationCreate(
36 ElementId element_id, 36 ElementId element_id,
37 const gfx::ScrollOffset& target_offset, 37 const gfx::ScrollOffset& target_offset,
38 const gfx::ScrollOffset& current_offset, 38 const gfx::ScrollOffset& current_offset,
39 base::TimeDelta delayed_by) { 39 base::TimeDelta delayed_by,
40 base::TimeDelta animation_start_offset) {
40 std::unique_ptr<ScrollOffsetAnimationCurve> curve = 41 std::unique_ptr<ScrollOffsetAnimationCurve> curve =
41 ScrollOffsetAnimationCurve::Create( 42 ScrollOffsetAnimationCurve::Create(
42 target_offset, CubicBezierTimingFunction::CreatePreset( 43 target_offset, CubicBezierTimingFunction::CreatePreset(
43 CubicBezierTimingFunction::EaseType::EASE_IN_OUT), 44 CubicBezierTimingFunction::EaseType::EASE_IN_OUT),
44 ScrollOffsetAnimationCurve::DurationBehavior::INVERSE_DELTA); 45 ScrollOffsetAnimationCurve::DurationBehavior::INVERSE_DELTA);
45 curve->SetInitialValue(current_offset, delayed_by); 46 curve->SetInitialValue(current_offset, delayed_by);
46 47
47 std::unique_ptr<Animation> animation = Animation::Create( 48 std::unique_ptr<Animation> animation = Animation::Create(
48 std::move(curve), AnimationIdProvider::NextAnimationId(), 49 std::move(curve), AnimationIdProvider::NextAnimationId(),
49 AnimationIdProvider::NextGroupId(), TargetProperty::SCROLL_OFFSET); 50 AnimationIdProvider::NextGroupId(), TargetProperty::SCROLL_OFFSET);
51 animation->set_time_offset(animation_start_offset);
50 animation->set_is_impl_only(true); 52 animation->set_is_impl_only(true);
51 53
52 DCHECK(scroll_offset_animation_player_); 54 DCHECK(scroll_offset_animation_player_);
53 DCHECK(scroll_offset_animation_player_->animation_timeline()); 55 DCHECK(scroll_offset_animation_player_->animation_timeline());
54 56
55 ReattachScrollOffsetPlayerIfNeeded(element_id); 57 ReattachScrollOffsetPlayerIfNeeded(element_id);
56 58
57 scroll_offset_animation_player_->AddAnimation(std::move(animation)); 59 scroll_offset_animation_player_->AddAnimation(std::move(animation));
58 } 60 }
59 61
(...skipping 97 matching lines...) Expand 10 before | Expand all | Expand 10 after
157 ElementId element_id) { 159 ElementId element_id) {
158 if (scroll_offset_animation_player_->element_id() != element_id) { 160 if (scroll_offset_animation_player_->element_id() != element_id) {
159 if (scroll_offset_animation_player_->element_id()) 161 if (scroll_offset_animation_player_->element_id())
160 scroll_offset_animation_player_->DetachElement(); 162 scroll_offset_animation_player_->DetachElement();
161 if (element_id) 163 if (element_id)
162 scroll_offset_animation_player_->AttachElement(element_id); 164 scroll_offset_animation_player_->AttachElement(element_id);
163 } 165 }
164 } 166 }
165 167
166 } // namespace cc 168 } // namespace cc
OLDNEW
« no previous file with comments | « cc/animation/scroll_offset_animations_impl.h ('k') | cc/trees/layer_tree_host_impl.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698