| Index: cc/layers/layer_impl.cc
|
| diff --git a/cc/layers/layer_impl.cc b/cc/layers/layer_impl.cc
|
| index 0e78ca8edff294bd29c2c38a63097e675ecf8736..55ffa7fb994122e462ab07fe5099fa0bef581e6c 100644
|
| --- a/cc/layers/layer_impl.cc
|
| +++ b/cc/layers/layer_impl.cc
|
| @@ -1083,13 +1083,18 @@ void LayerImpl::PushScrollOffsetFromMainThread(
|
| gfx::ScrollOffset LayerImpl::PullDeltaForMainThread() {
|
| RefreshFromScrollDelegate();
|
|
|
| - // TODO(aelias): Remove all this temporary flooring machinery when Blink
|
| - // fully supports fractional scrolls.
|
| - gfx::ScrollOffset current = CurrentScrollOffset();
|
| - gfx::ScrollOffset floored(floor(current.x()), floor(current.y()));
|
| - scroll_offset_->SetCurrent(floored);
|
| + // TODO(aelias, miletus): Remove all this temporary flooring machinery when
|
| + // Blink fully supports fractional scrolls.
|
| + gfx::ScrollOffset current_offset = CurrentScrollOffset();
|
| + gfx::Vector2dF current_delta = ScrollDelta();
|
| + gfx::Vector2dF floored_delta(floor(current_delta.x()),
|
| + floor(current_delta.y()));
|
| + gfx::Vector2dF diff_delta = floored_delta - current_delta;
|
| + gfx::ScrollOffset tmp_offset = ScrollOffsetWithDelta(current_offset,
|
| + diff_delta);
|
| + scroll_offset_->SetCurrent(tmp_offset);
|
| gfx::ScrollOffset delta = scroll_offset_->PullDeltaForMainThread();
|
| - scroll_offset_->SetCurrent(current);
|
| + scroll_offset_->SetCurrent(current_offset);
|
| return delta;
|
| }
|
|
|
|
|