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

Unified Diff: cc/layers/layer_impl.cc

Issue 1736073002: cc: Move SyncedScrollOffset to scroll tree (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebase and add comment Created 4 years, 10 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 3bbbb08980e0860ebc84015fafdd2ae96171090b..3c0725a7669dc9df309940701a124e124059408c 100644
--- a/cc/layers/layer_impl.cc
+++ b/cc/layers/layer_impl.cc
@@ -43,13 +43,7 @@
#include "ui/gfx/geometry/vector2d_conversions.h"
namespace cc {
-LayerImpl::LayerImpl(LayerTreeImpl* layer_impl, int id)
- : LayerImpl(layer_impl, id, new LayerImpl::SyncedScrollOffset) {
-}
-
-LayerImpl::LayerImpl(LayerTreeImpl* tree_impl,
- int id,
- scoped_refptr<SyncedScrollOffset> scroll_offset)
+LayerImpl::LayerImpl(LayerTreeImpl* tree_impl, int id)
: parent_(nullptr),
scroll_parent_(nullptr),
clip_parent_(nullptr),
@@ -57,7 +51,6 @@ LayerImpl::LayerImpl(LayerTreeImpl* tree_impl,
replica_layer_id_(-1),
layer_id_(id),
layer_tree_impl_(tree_impl),
- scroll_offset_(scroll_offset),
scroll_clip_layer_id_(Layer::INVALID_ID),
main_thread_scrolling_reasons_(
MainThreadScrollingReason::kNotScrollingOnMain),
@@ -490,17 +483,12 @@ bool LayerImpl::user_scrollable(ScrollbarOrientation orientation) const {
: user_scrollable_vertical_;
}
-void LayerImpl::ApplySentScrollDeltasFromAbortedCommit() {
- DCHECK(layer_tree_impl()->IsActiveTree());
- scroll_offset_->AbortCommit();
-}
-
skia::RefPtr<SkPicture> LayerImpl::GetPicture() {
return skia::RefPtr<SkPicture>();
}
scoped_ptr<LayerImpl> LayerImpl::CreateLayerImpl(LayerTreeImpl* tree_impl) {
- return LayerImpl::Create(tree_impl, layer_id_, scroll_offset_);
+ return LayerImpl::Create(tree_impl, layer_id_);
}
void LayerImpl::set_main_thread_scrolling_reasons(
@@ -573,8 +561,6 @@ void LayerImpl::PushPropertiesTo(LayerImpl* layer) {
layer->SetScrollCompensationAdjustment(scroll_compensation_adjustment_);
- layer->PushScrollOffset(nullptr);
-
layer->Set3dSortingContextId(sorting_context_id_);
layer->SetNumDescendantsThatDrawContent(num_descendants_that_draw_content_);
@@ -1302,6 +1288,16 @@ void LayerImpl::GatherFrameTimingRequestIds(std::vector<int64_t>* request_ids) {
request_ids->push_back(request.id());
}
+const SyncedScrollOffset* LayerImpl::synced_scroll_offset() const {
+ return layer_tree_impl()->property_trees()->scroll_tree.synced_scroll_offset(
+ id());
+}
+
+SyncedScrollOffset* LayerImpl::synced_scroll_offset() {
+ return layer_tree_impl()->property_trees()->scroll_tree.synced_scroll_offset(
+ id());
+}
+
void LayerImpl::SetTransform(const gfx::Transform& transform) {
if (transform_ == transform)
return;
@@ -1446,74 +1442,45 @@ void LayerImpl::AddDamageRect(const gfx::Rect& damage_rect) {
void LayerImpl::SetCurrentScrollOffset(const gfx::ScrollOffset& scroll_offset) {
DCHECK(IsActive());
- if (scroll_offset_->SetCurrent(scroll_offset))
+ if (synced_scroll_offset()->SetCurrent(scroll_offset))
DidUpdateScrollOffset();
}
-void LayerImpl::PushScrollOffsetFromMainThread(
- const gfx::ScrollOffset& scroll_offset) {
- PushScrollOffset(&scroll_offset);
-}
-
-void LayerImpl::PushScrollOffsetFromMainThreadAndClobberActiveValue(
- const gfx::ScrollOffset& scroll_offset) {
- scroll_offset_->set_clobber_active_value();
- PushScrollOffset(&scroll_offset);
-}
-
-gfx::ScrollOffset LayerImpl::PullDeltaForMainThread() {
- // TODO(miletus): Remove all this temporary flooring machinery when
- // Blink fully supports fractional scrolls.
- gfx::ScrollOffset current_offset = CurrentScrollOffset();
- gfx::ScrollOffset current_delta = IsActive()
- ? scroll_offset_->Delta()
- : scroll_offset_->PendingDelta().get();
- gfx::ScrollOffset floored_delta(floor(current_delta.x()),
- floor(current_delta.y()));
- gfx::ScrollOffset diff_delta = floored_delta - current_delta;
- gfx::ScrollOffset tmp_offset = current_offset + diff_delta;
- scroll_offset_->SetCurrent(tmp_offset);
- gfx::ScrollOffset delta = scroll_offset_->PullDeltaForMainThread();
- scroll_offset_->SetCurrent(current_offset);
- return delta;
-}
-
gfx::ScrollOffset LayerImpl::CurrentScrollOffset() const {
- return scroll_offset_->Current(IsActive());
+ return synced_scroll_offset()->Current(IsActive());
}
gfx::Vector2dF LayerImpl::ScrollDelta() const {
if (IsActive())
- return gfx::Vector2dF(scroll_offset_->Delta().x(),
- scroll_offset_->Delta().y());
+ return gfx::Vector2dF(synced_scroll_offset()->Delta().x(),
+ synced_scroll_offset()->Delta().y());
else
- return gfx::Vector2dF(scroll_offset_->PendingDelta().get().x(),
- scroll_offset_->PendingDelta().get().y());
+ return gfx::Vector2dF(synced_scroll_offset()->PendingDelta().get().x(),
+ synced_scroll_offset()->PendingDelta().get().y());
}
void LayerImpl::SetScrollDelta(const gfx::Vector2dF& delta) {
DCHECK(IsActive());
DCHECK(scrollable() || delta.IsZero());
- SetCurrentScrollOffset(scroll_offset_->ActiveBase() +
+ SetCurrentScrollOffset(synced_scroll_offset()->ActiveBase() +
gfx::ScrollOffset(delta));
}
gfx::ScrollOffset LayerImpl::BaseScrollOffset() const {
if (IsActive())
- return scroll_offset_->ActiveBase();
+ return synced_scroll_offset()->ActiveBase();
else
- return scroll_offset_->PendingBase();
+ return synced_scroll_offset()->PendingBase();
}
-void LayerImpl::PushScrollOffset(const gfx::ScrollOffset* scroll_offset) {
- DCHECK(scroll_offset || IsActive());
+void LayerImpl::PushScrollOffsetFromMainThread(
+ const gfx::ScrollOffset& scroll_offset) {
bool changed = false;
- if (scroll_offset) {
- DCHECK(!IsActive() || !layer_tree_impl_->FindPendingTreeLayerById(id()));
- changed |= scroll_offset_->PushFromMainThread(*scroll_offset);
- }
+ DCHECK(!IsActive() || !layer_tree_impl_->FindPendingTreeLayerById(id()));
+ changed |= synced_scroll_offset()->PushFromMainThread(scroll_offset);
+
if (IsActive()) {
- changed |= scroll_offset_->PushPendingToActive();
+ changed |= synced_scroll_offset()->PushPendingToActive();
}
if (changed)
@@ -1527,7 +1494,8 @@ void LayerImpl::UpdatePropertyTreeScrollOffset() {
TransformTree& transform_tree =
layer_tree_impl()->property_trees()->transform_tree;
TransformNode* node = transform_tree.Node(transform_tree_index_);
- gfx::ScrollOffset current_offset = scroll_offset_->Current(IsActive());
+ gfx::ScrollOffset current_offset =
+ synced_scroll_offset()->Current(IsActive());
if (node->data.scroll_offset != current_offset) {
node->data.scroll_offset = current_offset;
node->data.needs_local_transform_update = true;
@@ -1537,8 +1505,6 @@ void LayerImpl::UpdatePropertyTreeScrollOffset() {
}
void LayerImpl::DidUpdateScrollOffset() {
- DCHECK(scroll_offset_);
-
layer_tree_impl()->DidUpdateScrollState(id());
if (transform_tree_index_ != -1) {
@@ -1653,10 +1619,11 @@ void LayerImpl::AsValueInto(base::trace_event::TracedValue* state) const {
state->SetInteger("mutable_properties", mutable_properties_);
}
- MathUtil::AddToTracedValue(
- "scroll_offset", scroll_offset_ ? scroll_offset_->Current(IsActive())
- : gfx::ScrollOffset(),
- state);
+ MathUtil::AddToTracedValue("scroll_offset",
+ synced_scroll_offset()
+ ? synced_scroll_offset()->Current(IsActive())
+ : gfx::ScrollOffset(),
+ state);
MathUtil::AddToTracedValue("transform_origin", transform_origin_, state);
« 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