Index: ui/compositor/layer.cc |
=================================================================== |
--- ui/compositor/layer.cc (revision 151158) |
+++ ui/compositor/layer.cc (working copy) |
@@ -371,10 +371,14 @@ |
WebKit::WebLayer new_layer; |
if (layer_updated_externally_) { |
WebKit::WebExternalTextureLayer texture_layer = |
- WebKit::WebExternalTextureLayer::create(); |
+ WebKit::WebExternalTextureLayer::create(this); |
texture_layer.setFlipped(texture_->flipped()); |
new_layer = texture_layer; |
} else { |
+ // Tell the compositor to clear references to the old texture. |
+ WebKit::WebExternalTextureLayer texture_layer = |
+ web_layer_.to<WebKit::WebExternalTextureLayer>(); |
+ texture_layer.willModifyTexture(); |
new_layer = WebKit::WebContentLayer::create(this); |
} |
if (parent_) { |
@@ -503,6 +507,16 @@ |
canvas->Restore(); |
} |
+unsigned Layer::prepareTexture(WebKit::WebTextureUpdater& /* updater */) { |
+ DCHECK(layer_updated_externally_); |
+ return texture_->texture_id(); |
+} |
+ |
+WebKit::WebGraphicsContext3D* Layer::context() { |
+ DCHECK(layer_updated_externally_); |
+ return texture_->HostContext3D(); |
+} |
+ |
void Layer::SetForceRenderSurface(bool force) { |
if (force_render_surface_ == force) |
return; |
@@ -727,10 +741,8 @@ |
web_layer_.setBounds(ConvertSizeToPixel(this, bounds_.size())); |
} else { |
DCHECK(texture_); |
- unsigned int texture_id = texture_->texture_id(); |
WebKit::WebExternalTextureLayer texture_layer = |
web_layer_.to<WebKit::WebExternalTextureLayer>(); |
- texture_layer.setTextureId(should_draw ? texture_id : 0); |
gfx::Size texture_size; |
if (scale_content_) |