summaryrefslogtreecommitdiffstats
path: root/ui/compositor
diff options
context:
space:
mode:
authorpiman@chromium.org <piman@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-12-06 00:31:59 +0000
committerpiman@chromium.org <piman@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-12-06 00:31:59 +0000
commitc6b539db37e1bf28754cf8bbb71c301b35094487 (patch)
treecaa4d13b336e4f02926265f49044f65359c1f67e /ui/compositor
parent4874d7b18524e3b7f36fc6ee07313dff3941db8c (diff)
downloadchromium_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.cc13
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);