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

Unified Diff: cc/layers/layer_impl.cc

Issue 19106007: cc: Allow the main thread to cancel commits (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Another test Created 7 years, 5 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « cc/layers/layer_impl.h ('k') | cc/layers/layer_impl_unittest.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: cc/layers/layer_impl.cc
diff --git a/cc/layers/layer_impl.cc b/cc/layers/layer_impl.cc
index 4865fe2bd2c4376e93b9248ac1f6e0bdb37a0780..95d1da7a61fb5c6a03a220a7355e591d0ea213e4 100644
--- a/cc/layers/layer_impl.cc
+++ b/cc/layers/layer_impl.cc
@@ -265,11 +265,24 @@ gfx::Vector2dF LayerImpl::ScrollBy(gfx::Vector2dF scroll) {
new_delta.SetToMax(min_delta);
new_delta.SetToMin(max_delta);
gfx::Vector2dF unscrolled = ScrollDelta() + scroll - new_delta;
-
SetScrollDelta(new_delta);
return unscrolled;
}
+void LayerImpl::ApplySentScrollDeltas() {
+ // Pending tree never has sent scroll deltas
+ DCHECK(layer_tree_impl()->IsActiveTree());
+
+ // Apply sent scroll deltas to scroll position / scroll delta as if the
+ // main thread had applied them and then committed those values.
+ gfx::Vector2dF previous_scroll_delta = ScrollDelta();
+ gfx::Vector2d previous_sent_scroll_delta = sent_scroll_delta_;
+
+ SetSentScrollDelta(gfx::Vector2d());
+ SetScrollOffset(scroll_offset_ + previous_sent_scroll_delta);
+ SetScrollDelta(previous_scroll_delta - previous_sent_scroll_delta);
+}
+
InputHandler::ScrollStatus LayerImpl::TryScroll(
gfx::PointF screen_space_point,
InputHandler::ScrollInputType type) const {
@@ -893,8 +906,13 @@ void LayerImpl::SetScrollDelta(gfx::Vector2dF scroll_delta) {
} else {
scroll_delta_ = scroll_delta;
}
- NoteLayerPropertyChangedForSubtree();
+ DCHECK_GE(TotalScrollOffset().x(), 0);
+ DCHECK_GE(TotalScrollOffset().y(), 0);
+ DCHECK_LE(TotalScrollOffset().x(), max_scroll_offset_.x());
+ DCHECK_LE(TotalScrollOffset().y(), max_scroll_offset_.y());
+
+ NoteLayerPropertyChangedForSubtree();
UpdateScrollbarPositions();
}
« no previous file with comments | « cc/layers/layer_impl.h ('k') | cc/layers/layer_impl_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698