Index: ui/gl/gl_image_android_native_buffer.cc |
diff --git a/ui/gl/gl_image_android_native_buffer.cc b/ui/gl/gl_image_android_native_buffer.cc |
index 5e311eeef785a3934fc7604e35942498d81cc650..0323954be572f35724c4733b51778ce0f6a0820c 100644 |
--- a/ui/gl/gl_image_android_native_buffer.cc |
+++ b/ui/gl/gl_image_android_native_buffer.cc |
@@ -18,7 +18,10 @@ GLImageAndroidNativeBuffer::GLImageAndroidNativeBuffer(const gfx::Size& size) |
texture_id_for_unbind_(0) { |
} |
-GLImageAndroidNativeBuffer::~GLImageAndroidNativeBuffer() { Destroy(); } |
+GLImageAndroidNativeBuffer::~GLImageAndroidNativeBuffer() { |
+ DCHECK_EQ(EGL_NO_IMAGE_KHR, egl_image_); |
+ DCHECK_EQ(0u, texture_id_for_unbind_); |
+} |
bool GLImageAndroidNativeBuffer::Initialize(EGLClientBuffer native_buffer) { |
EGLint attrs[] = {EGL_IMAGE_PRESERVED_KHR, EGL_TRUE, EGL_NONE}; |
@@ -26,18 +29,20 @@ bool GLImageAndroidNativeBuffer::Initialize(EGLClientBuffer native_buffer) { |
EGL_NATIVE_BUFFER_ANDROID, native_buffer, attrs); |
} |
-void GLImageAndroidNativeBuffer::Destroy() { |
+void GLImageAndroidNativeBuffer::Destroy(bool have_context) { |
if (egl_image_for_unbind_ != EGL_NO_IMAGE_KHR) { |
eglDestroyImageKHR(GLSurfaceEGL::GetHardwareDisplay(), |
egl_image_for_unbind_); |
egl_image_for_unbind_ = EGL_NO_IMAGE_KHR; |
} |
+ |
if (texture_id_for_unbind_) { |
- glDeleteTextures(1, &texture_id_for_unbind_); |
- texture_id_for_unbind_ = 0; |
+ if (have_context) |
+ glDeleteTextures(1, &texture_id_for_unbind_); |
+ texture_id_for_unbind_ = 0u; |
} |
- GLImageEGL::Destroy(); |
+ GLImageEGL::Destroy(have_context); |
} |
bool GLImageAndroidNativeBuffer::BindTexImage(unsigned target) { |
@@ -64,7 +69,7 @@ bool GLImageAndroidNativeBuffer::BindTexImage(unsigned target) { |
} |
void GLImageAndroidNativeBuffer::WillUseTexImage() { |
- DCHECK(egl_image_); |
+ DCHECK_NE(EGL_NO_IMAGE_KHR, egl_image_); |
DCHECK(!in_use_); |
in_use_ = true; |
glEGLImageTargetTexture2DOES(target_, egl_image_); |
@@ -72,6 +77,7 @@ void GLImageAndroidNativeBuffer::WillUseTexImage() { |
} |
void GLImageAndroidNativeBuffer::DidUseTexImage() { |
+ DCHECK_NE(EGL_NO_IMAGE_KHR, egl_image_); |
DCHECK(in_use_); |
in_use_ = false; |