Chromium Code Reviews| Index: ui/gl/gl_image_glx.cc |
| diff --git a/ui/gl/gl_image_glx.cc b/ui/gl/gl_image_glx.cc |
| index 4b7e883781cd8160e6bc6c49d38be238088fc6bd..977ea14d964d4ff7d65c674ea6ed2f1e2c20166f 100644 |
| --- a/ui/gl/gl_image_glx.cc |
| +++ b/ui/gl/gl_image_glx.cc |
| @@ -49,7 +49,10 @@ GLImageGLX::GLImageGLX(gfx::PluginWindowHandle window) |
| pixmap_(0), |
| glx_pixmap_(0) {} |
| -GLImageGLX::~GLImageGLX() { Destroy(); } |
| +GLImageGLX::~GLImageGLX() { |
| + DCHECK_EQ(0u, glx_pixmap_); |
| + DCHECK_EQ(0u, pixmap_); |
| +} |
| bool GLImageGLX::Initialize() { |
| if (!GLSurfaceGLX::IsTextureFromPixmapSupported()) { |
| @@ -98,6 +101,10 @@ bool GLImageGLX::Initialize() { |
| // Create backing pixmap reference. |
| pixmap_ = XCompositeNameWindowPixmap(display_, window_); |
| + if (!pixmap_) { |
| + LOG(ERROR) << "XCompositeNameWindowPixmap failed."; |
| + return false; |
| + } |
| XID root = 0; |
| int x = 0; |
| @@ -109,6 +116,7 @@ bool GLImageGLX::Initialize() { |
| if (!XGetGeometry( |
| display_, pixmap_, &root, &x, &y, &width, &height, &bw, &depth)) { |
| LOG(ERROR) << "XGetGeometry failed for pixmap " << pixmap_ << "."; |
| + pixmap_ = 0u; |
|
reveman
2014/06/02 16:45:29
You're leaking a pixmap here.
sohanjg
2014/06/03 05:48:33
Done.
|
| return false; |
| } |
| @@ -119,6 +127,7 @@ bool GLImageGLX::Initialize() { |
| glXCreatePixmap(display_, *config.get(), pixmap_, pixmap_attribs); |
| if (!glx_pixmap_) { |
| LOG(ERROR) << "glXCreatePixmap failed."; |
| + pixmap_ = 0u; |
|
reveman
2014/06/02 16:45:29
You're leaking a pixmap here.
sohanjg
2014/06/03 05:48:33
Done.
|
| return false; |
| } |
| @@ -126,7 +135,7 @@ bool GLImageGLX::Initialize() { |
| return true; |
| } |
| -void GLImageGLX::Destroy() { |
| +void GLImageGLX::Destroy(bool have_context) { |
| if (glx_pixmap_) { |
| glXDestroyGLXPixmap(display_, glx_pixmap_); |
| glx_pixmap_ = 0; |