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

Unified Diff: cc/layers/layer.cc

Issue 465853004: Moving RenderSurface creation outside of CalcDrawProps (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Updated unit tests Created 6 years, 4 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/layers/layer.cc
diff --git a/cc/layers/layer.cc b/cc/layers/layer.cc
index 63b9990d65faf0e9cb34cac442e7a2c03c44e08a..8f1dd20e5651b26826fc873e55d5f37887cd9a4c 100644
--- a/cc/layers/layer.cc
+++ b/cc/layers/layer.cc
@@ -67,6 +67,7 @@ Layer::Layer()
draw_checkerboard_for_missing_tiles_(false),
force_render_surface_(false),
transform_is_invertible_(true),
+ should_have_render_surface_(false),
background_color_(0),
opacity_(1.f),
blend_mode_(SkXfermode::kSrcOver_Mode),
@@ -876,7 +877,6 @@ void Layer::PushPropertiesTo(LayerImpl* layer) {
layer->SetDoubleSided(double_sided_);
layer->SetDrawCheckerboardForMissingTiles(
draw_checkerboard_for_missing_tiles_);
- layer->SetForceRenderSurface(force_render_surface_);
layer->SetDrawsContent(DrawsContent());
layer->SetHideLayerAndSubtree(hide_layer_and_subtree_);
if (!layer->FilterIsAnimatingOnImplOnly() && !FilterIsAnimating())
@@ -910,6 +910,7 @@ void Layer::PushPropertiesTo(LayerImpl* layer) {
layer->SetScrollClipLayer(scroll_clip_layer_id_);
layer->set_user_scrollable_horizontal(user_scrollable_horizontal_);
layer->set_user_scrollable_vertical(user_scrollable_vertical_);
+ layer->SetShouldHaveRenderSurface(ShouldHaveRenderSurface());
danakj 2014/08/26 18:06:13 could this just create or destroy the render surfa
awoloszyn 2014/08/28 19:31:42 I changed the impl-side to just create/destroy it'
LayerImpl* scroll_parent = NULL;
if (scroll_parent_) {
@@ -1079,18 +1080,18 @@ scoped_refptr<base::debug::ConvertableToTraceFormat> Layer::TakeDebugInfo() {
}
void Layer::CreateRenderSurface() {
- DCHECK(!draw_properties_.render_surface);
- draw_properties_.render_surface = make_scoped_ptr(new RenderSurface(this));
+ DCHECK(!render_surface_);
+ render_surface_ = make_scoped_ptr(new RenderSurface(this));
draw_properties_.render_target = this;
danakj 2014/08/26 18:06:12 hm.... can this move to CalcDrawProps?
awoloszyn 2014/08/28 19:31:42 I moved setting draw_properties_.render_target int
}
void Layer::ClearRenderSurface() {
- draw_properties_.render_surface.reset();
+ render_surface_.reset();
}
void Layer::ClearRenderSurfaceLayerList() {
- if (draw_properties_.render_surface)
- draw_properties_.render_surface->layer_list().clear();
+ if (render_surface_)
+ render_surface_->layer_list().clear();
}
gfx::Vector2dF Layer::ScrollOffsetForAnimation() const {
@@ -1243,4 +1244,20 @@ bool Layer::HasDelegatedContent() const {
return false;
}
+void Layer::SetShouldHaveRenderSurface(bool should_have) {
+ if (should_have_render_surface_ == should_have)
+ return;
+ should_have_render_surface_ = should_have;
+ SetNeedsPushProperties();
danakj 2014/08/26 18:06:13 ITYM SetNeedsCommit() or else this will just stay
awoloszyn 2014/08/28 19:31:42 This functionality has moved, but I added comments
+}
+
+void Layer::SetRenderSurfaceActive(bool active) {
+ if (active) {
+ if (!render_surface_)
+ CreateRenderSurface();
+ return;
+ }
+ ClearRenderSurface();
+}
+
} // namespace cc

Powered by Google App Engine
This is Rietveld 408576698