diff options
author | piman@chromium.org <piman@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-12-06 00:31:59 +0000 |
---|---|---|
committer | piman@chromium.org <piman@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-12-06 00:31:59 +0000 |
commit | c6b539db37e1bf28754cf8bbb71c301b35094487 (patch) | |
tree | caa4d13b336e4f02926265f49044f65359c1f67e /ui/compositor | |
parent | 4874d7b18524e3b7f36fc6ee07313dff3941db8c (diff) | |
download | chromium_src-c6b539db37e1bf28754cf8bbb71c301b35094487.zip chromium_src-c6b539db37e1bf28754cf8bbb71c301b35094487.tar.gz chromium_src-c6b539db37e1bf28754cf8bbb71c301b35094487.tar.bz2 |
fix leak in ui::Layer::SetExternalTexture
BUG=163730
Review URL: https://chromiumcodereview.appspot.com/11443021
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@171364 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'ui/compositor')
-rw-r--r-- | ui/compositor/layer.cc | 13 |
1 files changed, 7 insertions, 6 deletions
diff --git a/ui/compositor/layer.cc b/ui/compositor/layer.cc index 715b8e1..caf1af0 100644 --- a/ui/compositor/layer.cc +++ b/ui/compositor/layer.cc @@ -409,17 +409,18 @@ void Layer::SetFillsBoundsOpaquely(bool fills_bounds_opaquely) { void Layer::SetExternalTexture(Texture* texture) { DCHECK_EQ(type_, LAYER_TEXTURED); + DCHECK(!solid_color_layer_); layer_updated_externally_ = !!texture; texture_ = texture; if (cc_layer_is_accelerated_ != layer_updated_externally_) { // Switch to a different type of layer. cc_layer_->removeAllChildren(); - scoped_refptr<cc::ContentLayer> old_content_layer( - content_layer_.release()); - scoped_refptr<cc::SolidColorLayer> old_solid_layer( - solid_color_layer_.release()); - scoped_refptr<cc::TextureLayer> old_texture_layer( - texture_layer_.release()); + + scoped_refptr<cc::ContentLayer> old_content_layer; + old_content_layer.swap(content_layer_); + scoped_refptr<cc::TextureLayer> old_texture_layer; + old_texture_layer.swap(texture_layer_); + cc::Layer* new_layer = NULL; if (layer_updated_externally_) { texture_layer_ = cc::TextureLayer::create(this); |