Index: ui/gl/gl_image_glx.cc |
diff --git a/ui/gl/gl_image_glx.cc b/ui/gl/gl_image_glx.cc |
deleted file mode 100644 |
index 395636bcfee06a1a8a58657753505cb2e812a53a..0000000000000000000000000000000000000000 |
--- a/ui/gl/gl_image_glx.cc |
+++ /dev/null |
@@ -1,205 +0,0 @@ |
-// Copyright (c) 2012 The Chromium Authors. All rights reserved. |
-// Use of this source code is governed by a BSD-style license that can be |
-// found in the LICENSE file. |
- |
-extern "C" { |
-#include <X11/Xlib.h> |
-} |
- |
-#include "ui/gl/gl_image_glx.h" |
- |
-#include "base/logging.h" |
-#include "base/memory/scoped_ptr.h" |
-#include "ui/gl/gl_bindings.h" |
-#include "ui/gl/gl_surface_glx.h" |
- |
-namespace gfx { |
- |
-namespace { |
- |
-// scoped_ptr functor for XFree(). Use as follows: |
-// scoped_ptr<XVisualInfo, ScopedPtrXFree> foo(...); |
-// where "XVisualInfo" is any X type that is freed with XFree. |
-struct ScopedPtrXFree { |
- void operator()(void* x) const { ::XFree(x); } |
-}; |
- |
-bool ValidFormat(unsigned internalformat) { |
- switch (internalformat) { |
- case GL_RGBA: |
- return true; |
- default: |
- return false; |
- } |
-} |
- |
-int TextureFormat(unsigned internalformat) { |
- switch (internalformat) { |
- case GL_RGBA: |
- return GLX_TEXTURE_FORMAT_RGBA_EXT; |
- default: |
- NOTREACHED(); |
- return 0; |
- } |
-} |
- |
-int BindToTextureFormat(unsigned internalformat) { |
- switch (internalformat) { |
- case GL_RGBA: |
- return GLX_BIND_TO_TEXTURE_RGBA_EXT; |
- default: |
- NOTREACHED(); |
- return 0; |
- } |
-} |
- |
-unsigned PixmapDepth(unsigned internalformat) { |
- switch (internalformat) { |
- case GL_RGBA: |
- return 32u; |
- default: |
- NOTREACHED(); |
- return 0u; |
- } |
-} |
- |
-bool ActualPixmapGeometry(XID pixmap, gfx::Size* size, unsigned* depth) { |
- XID root_return; |
- int x_return; |
- int y_return; |
- unsigned width_return; |
- unsigned height_return; |
- unsigned border_width_return; |
- unsigned depth_return; |
- if (!XGetGeometry(gfx::GetXDisplay(), |
- pixmap, |
- &root_return, |
- &x_return, |
- &y_return, |
- &width_return, |
- &height_return, |
- &border_width_return, |
- &depth_return)) |
- return false; |
- |
- if (size) |
- *size = gfx::Size(width_return, height_return); |
- if (depth) |
- *depth = depth_return; |
- return true; |
-} |
- |
-unsigned ActualPixmapDepth(XID pixmap) { |
- unsigned depth; |
- if (!ActualPixmapGeometry(pixmap, NULL, &depth)) |
- return -1; |
- |
- return depth; |
-} |
- |
-gfx::Size ActualPixmapSize(XID pixmap) { |
- gfx::Size size; |
- if (!ActualPixmapGeometry(pixmap, &size, NULL)) |
- return gfx::Size(); |
- |
- return size; |
-} |
- |
-} // namespace anonymous |
- |
-GLImageGLX::GLImageGLX(const gfx::Size& size, unsigned internalformat) |
- : glx_pixmap_(0), size_(size), internalformat_(internalformat) { |
-} |
- |
-GLImageGLX::~GLImageGLX() { |
- DCHECK_EQ(0u, glx_pixmap_); |
-} |
- |
-bool GLImageGLX::Initialize(XID pixmap) { |
- if (!GLSurfaceGLX::IsTextureFromPixmapSupported()) { |
- DVLOG(0) << "GLX_EXT_texture_from_pixmap not supported."; |
- return false; |
- } |
- |
- if (!ValidFormat(internalformat_)) { |
- DVLOG(0) << "Invalid format: " << internalformat_; |
- return false; |
- } |
- |
- DCHECK_EQ(PixmapDepth(internalformat_), ActualPixmapDepth(pixmap)); |
- DCHECK_EQ(size_.ToString(), ActualPixmapSize(pixmap).ToString()); |
- |
- int config_attribs[] = { |
- GLX_DRAWABLE_TYPE, GLX_PIXMAP_BIT, |
- GLX_BIND_TO_TEXTURE_TARGETS_EXT, GLX_TEXTURE_2D_EXT, |
- BindToTextureFormat(internalformat_), GL_TRUE, |
- 0}; |
- int num_elements = 0; |
- scoped_ptr<GLXFBConfig, ScopedPtrXFree> config( |
- glXChooseFBConfig(gfx::GetXDisplay(), |
- DefaultScreen(gfx::GetXDisplay()), |
- config_attribs, |
- &num_elements)); |
- if (!config.get()) { |
- DVLOG(0) << "glXChooseFBConfig failed."; |
- return false; |
- } |
- if (!num_elements) { |
- DVLOG(0) << "glXChooseFBConfig returned 0 elements."; |
- return false; |
- } |
- |
- int pixmap_attribs[] = {GLX_TEXTURE_TARGET_EXT, GLX_TEXTURE_2D_EXT, |
- GLX_TEXTURE_FORMAT_EXT, |
- TextureFormat(internalformat_), 0}; |
- glx_pixmap_ = glXCreatePixmap( |
- gfx::GetXDisplay(), *config.get(), pixmap, pixmap_attribs); |
- if (!glx_pixmap_) { |
- DVLOG(0) << "glXCreatePixmap failed."; |
- return false; |
- } |
- |
- return true; |
-} |
- |
-void GLImageGLX::Destroy(bool have_context) { |
- if (glx_pixmap_) { |
- glXDestroyGLXPixmap(gfx::GetXDisplay(), glx_pixmap_); |
- glx_pixmap_ = 0; |
- } |
-} |
- |
-gfx::Size GLImageGLX::GetSize() { return size_; } |
- |
-bool GLImageGLX::BindTexImage(unsigned target) { |
- if (!glx_pixmap_) |
- return false; |
- |
- // Requires TEXTURE_2D target. |
- if (target != GL_TEXTURE_2D) |
- return false; |
- |
- glXBindTexImageEXT(gfx::GetXDisplay(), glx_pixmap_, GLX_FRONT_LEFT_EXT, 0); |
- return true; |
-} |
- |
-void GLImageGLX::ReleaseTexImage(unsigned target) { |
- DCHECK_NE(0u, glx_pixmap_); |
- DCHECK_EQ(static_cast<GLenum>(GL_TEXTURE_2D), target); |
- |
- glXReleaseTexImageEXT(gfx::GetXDisplay(), glx_pixmap_, GLX_FRONT_LEFT_EXT); |
-} |
- |
-bool GLImageGLX::CopyTexImage(unsigned target) { |
- return false; |
-} |
- |
-bool GLImageGLX::ScheduleOverlayPlane(gfx::AcceleratedWidget widget, |
- int z_order, |
- OverlayTransform transform, |
- const Rect& bounds_rect, |
- const RectF& crop_rect) { |
- return false; |
-} |
- |
-} // namespace gfx |