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

Unified Diff: cc/trees/layer_tree_impl.cc

Issue 23922006: Plumb PinchVirtualViewport layers into CC. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Address comments, remove some pinchVirtualViewportEnabled checks. Created 7 years, 3 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
Index: cc/trees/layer_tree_impl.cc
diff --git a/cc/trees/layer_tree_impl.cc b/cc/trees/layer_tree_impl.cc
index faff70eb1bf074bc58ee764404d643c686f3c045..217e577ac88de3ae2282e41362ab1b435984d77e 100644
--- a/cc/trees/layer_tree_impl.cc
+++ b/cc/trees/layer_tree_impl.cc
@@ -9,6 +9,7 @@
#include "cc/animation/scrollbar_animation_controller.h"
#include "cc/debug/traced_value.h"
#include "cc/layers/heads_up_display_layer_impl.h"
+#include "cc/layers/layer.h"
#include "cc/layers/render_surface_impl.h"
#include "cc/layers/scrollbar_layer_impl_base.h"
#include "cc/trees/layer_tree_host_common.h"
@@ -27,6 +28,9 @@ LayerTreeImpl::LayerTreeImpl(LayerTreeHostImpl* layer_tree_host_impl)
root_layer_scroll_offset_delegate_(NULL),
background_color_(0),
has_transparent_background_(false),
+ page_scale_layer_(NULL),
+ inner_viewport_scroll_layer_(NULL),
+ outer_viewport_scroll_layer_(NULL),
page_scale_factor_(1),
page_scale_delta_(1),
sent_page_scale_delta_(1),
@@ -115,6 +119,13 @@ void LayerTreeImpl::PushPropertiesTo(LayerTreeImpl* target_tree) {
target_tree->page_scale_delta() / target_tree->sent_page_scale_delta());
target_tree->set_sent_page_scale_delta(1);
+ if (settings().use_pinch_virtual_viewport) {
+ target_tree->SetViewportLayersFromIds(
+ page_scale_layer_->id(),
+ inner_viewport_scroll_layer_->id(),
+ outer_viewport_scroll_layer_ ? outer_viewport_scroll_layer_->id()
+ : Layer::INVALID_ID);
+ }
// This should match the property synchronization in
// LayerTreeHost::finishCommitOnImplThread().
target_tree->set_source_frame_number(source_frame_number());
@@ -257,6 +268,29 @@ void LayerTreeImpl::ApplyScrollDeltasSinceBeginFrame() {
root_layer(), base::Bind(&ApplyScrollDeltasSinceBeginFrameTo));
}
+void LayerTreeImpl::SetViewportLayersFromIds(
+ int page_scale_layer_id,
+ int inner_viewport_scroll_layer_id,
+ int outer_viewport_scroll_layer_id) {
+ page_scale_layer_ = LayerById(page_scale_layer_id);
+ DCHECK(page_scale_layer_);
+
+ inner_viewport_scroll_layer_ =
+ LayerById(inner_viewport_scroll_layer_id);
+ DCHECK(inner_viewport_scroll_layer_);
+
+ outer_viewport_scroll_layer_ =
+ LayerById(outer_viewport_scroll_layer_id);
+ DCHECK(outer_viewport_scroll_layer_ ||
+ outer_viewport_scroll_layer_id == Layer::INVALID_ID);
+}
+
+void LayerTreeImpl::ClearViewportLayers() {
+ page_scale_layer_ = 0;
enne (OOO) 2013/09/12 18:57:02 s/0/NULL/g
wjmaclean 2013/09/12 19:06:17 Done.
+ inner_viewport_scroll_layer_ = 0;
+ outer_viewport_scroll_layer_ = 0;
+}
+
// TODO(wjmaclean) This needs to go away, and be replaced with a single core
// of login that works for both scrollbar layer types. This is already planned
// as part of the larger pinch-zoom re-factoring viewport.
@@ -316,13 +350,15 @@ void LayerTreeImpl::UpdateDrawProperties() {
IsActiveTree(),
"SourceFrameNumber",
source_frame_number_);
+ LayerImpl* page_scale_layer =
+ page_scale_layer_ ? page_scale_layer_ : RootContainerLayer();
LayerTreeHostCommon::CalcDrawPropsImplInputs inputs(
root_layer(),
DrawViewportSize(),
layer_tree_host_impl_->DrawTransform(),
device_scale_factor(),
total_page_scale_factor(),
- root_scroll_layer_ ? root_scroll_layer_->parent() : NULL,
+ page_scale_layer,
MaxTextureSize(),
settings().can_use_lcd_text,
settings().layer_transforms_should_scale_layer_contents,

Powered by Google App Engine
This is Rietveld 408576698