Index: content/common/gpu/texture_image_transport_surface.cc |
diff --git a/content/common/gpu/texture_image_transport_surface.cc b/content/common/gpu/texture_image_transport_surface.cc |
index 652e525d824f85fc959d50a2f9222a6fb562e39b..789c38a3908f91859320e3d3dec5e124e93ff50b 100644 |
--- a/content/common/gpu/texture_image_transport_surface.cc |
+++ b/content/common/gpu/texture_image_transport_surface.cc |
@@ -47,8 +47,6 @@ TextureImageTransportSurface::TextureImageTransportSurface( |
manager, |
stub, |
gfx::kNullPluginWindow)); |
- |
- stub->AddDestructionObserver(this); |
} |
TextureImageTransportSurface::~TextureImageTransportSurface() { |
@@ -134,9 +132,13 @@ bool TextureImageTransportSurface::OnMakeCurrent(gfx::GLContext* context) { |
GLenum status = glCheckFramebufferStatusEXT(GL_FRAMEBUFFER); |
if (status != GL_FRAMEBUFFER_COMPLETE) { |
DLOG(ERROR) << "Framebuffer incomplete."; |
+ glDeleteFramebuffersEXT(1, &fbo_id_); |
+ fbo_id_ = 0; |
return false; |
} |
#endif |
+ DCHECK(helper_->stub()); |
+ helper_->stub()->AddDestructionObserver(this); |
} |
return true; |
@@ -208,6 +210,7 @@ void TextureImageTransportSurface::OnWillDestroyStub( |
ReleaseParentStub(); |
helper_->SetPreemptByCounter(NULL); |
} else { |
+ DCHECK(stub == helper_->stub()); |
stub->RemoveDestructionObserver(this); |
// We are losing the stub owning us, this is our last chance to clean up the |