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

Unified Diff: ui/compositor/layer.cc

Issue 25961002: Retain tray bubble's rounded corners when the bubble animates out (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Addressed feedback Created 7 years, 2 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: ui/compositor/layer.cc
diff --git a/ui/compositor/layer.cc b/ui/compositor/layer.cc
index 2da468a5b48ca5f69c8ebe98ead61cfa42ba8b11..dd1900964658b720836d31986a7247d07f982b85 100644
--- a/ui/compositor/layer.cc
+++ b/ui/compositor/layer.cc
@@ -56,8 +56,6 @@ Layer::Layer()
layer_brightness_(0.0f),
layer_grayscale_(0.0f),
layer_inverted_(false),
- layer_mask_(NULL),
- layer_mask_back_link_(NULL),
zoom_(1),
zoom_inset_(0),
delegate_(NULL),
@@ -80,8 +78,6 @@ Layer::Layer(LayerType type)
layer_brightness_(0.0f),
layer_grayscale_(0.0f),
layer_inverted_(false),
- layer_mask_(NULL),
- layer_mask_back_link_(NULL),
zoom_(1),
zoom_inset_(0),
delegate_(NULL),
@@ -102,12 +98,10 @@ Layer::~Layer() {
compositor_->SetRootLayer(NULL);
if (parent_)
parent_->Remove(this);
- if (layer_mask_)
- SetMaskLayer(NULL);
- if (layer_mask_back_link_)
- layer_mask_back_link_->SetMaskLayer(NULL);
for (size_t i = 0; i < children_.size(); ++i)
children_[i]->parent_ = NULL;
+ if (layer_mask_.get())
+ cc_layer_->SetMaskLayer(NULL);
michaelpg 2013/10/04 05:56:41 in lieu of calling SetMaskLayer with an empty scop
cc_layer_->RemoveLayerAnimationEventObserver(this);
cc_layer_->RemoveFromParent();
}
@@ -280,28 +274,19 @@ void Layer::SetLayerInverted(bool inverted) {
SetLayerFilters();
}
-void Layer::SetMaskLayer(Layer* layer_mask) {
+void Layer::SetMaskLayer(scoped_ptr<Layer> layer_mask) {
// The provided mask should not have a layer mask itself.
- DCHECK(!layer_mask ||
+ DCHECK(!layer_mask.get() ||
(!layer_mask->layer_mask_layer() &&
- layer_mask->children().empty() &&
- !layer_mask->layer_mask_back_link_));
- DCHECK(!layer_mask_back_link_);
- if (layer_mask_ == layer_mask)
- return;
- // We need to de-reference the currently linked object so that no problem
- // arises if the mask layer gets deleted before this object.
- if (layer_mask_)
- layer_mask_->layer_mask_back_link_ = NULL;
- layer_mask_ = layer_mask;
+ layer_mask->children().empty()));
+
cc_layer_->SetMaskLayer(
- layer_mask ? layer_mask->cc_layer() : NULL);
- // We need to reference the linked object so that it can properly break the
- // link to us when it gets deleted.
- if (layer_mask) {
- layer_mask->layer_mask_back_link_ = this;
+ layer_mask.get() ? layer_mask->cc_layer() : NULL);
+
+ if (layer_mask)
layer_mask->OnDeviceScaleFactorChanged(device_scale_factor_);
- }
+
+ layer_mask_.reset(layer_mask.release());
michaelpg 2013/10/04 05:56:41 layer_mask is a scoped_ptr that now owns the layer
piman 2013/10/04 18:05:33 Yes, layer_mask_ = layer_mask.Pass(); is more idio
michaelpg 2013/12/10 02:04:03 Ok, thanks.
}
void Layer::SetBackgroundZoom(float zoom, int inset) {
@@ -623,7 +608,7 @@ void Layer::OnDeviceScaleFactorChanged(float device_scale_factor) {
delegate_->OnDeviceScaleFactorChanged(device_scale_factor);
for (size_t i = 0; i < children_.size(); ++i)
children_[i]->OnDeviceScaleFactorChanged(device_scale_factor);
- if (layer_mask_)
+ if (layer_mask_.get())
layer_mask_->OnDeviceScaleFactorChanged(device_scale_factor);
}

Powered by Google App Engine
This is Rietveld 408576698