| OLD | NEW | 
|    1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |    1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 
|    2 // Use of this source code is governed by a BSD-style license that can be |    2 // Use of this source code is governed by a BSD-style license that can be | 
|    3 // found in the LICENSE file. |    3 // found in the LICENSE file. | 
|    4  |    4  | 
|    5 extern "C" { |    5 extern "C" { | 
|    6 #include <X11/Xlib.h> |    6 #include <X11/Xlib.h> | 
|    7 } |    7 } | 
|    8  |    8  | 
|    9 #include "ui/gl/gl_surface_glx.h" |    9 #include "ui/gl/gl_surface_glx.h" | 
|   10  |   10  | 
| (...skipping 15 matching lines...) Expand all  Loading... | 
|   26 #include "ui/gfx/x/x11_connection.h" |   26 #include "ui/gfx/x/x11_connection.h" | 
|   27 #include "ui/gfx/x/x11_types.h" |   27 #include "ui/gfx/x/x11_types.h" | 
|   28 #include "ui/gl/gl_bindings.h" |   28 #include "ui/gl/gl_bindings.h" | 
|   29 #include "ui/gl/gl_implementation.h" |   29 #include "ui/gl/gl_implementation.h" | 
|   30 #include "ui/gl/sync_control_vsync_provider.h" |   30 #include "ui/gl/sync_control_vsync_provider.h" | 
|   31  |   31  | 
|   32 namespace gfx { |   32 namespace gfx { | 
|   33  |   33  | 
|   34 namespace { |   34 namespace { | 
|   35  |   35  | 
|   36 // scoped_ptr functor for XFree(). Use as follows: |  | 
|   37 //   scoped_ptr<XVisualInfo, ScopedPtrXFree> foo(...); |  | 
|   38 // where "XVisualInfo" is any X type that is freed with XFree. |  | 
|   39 struct ScopedPtrXFree { |  | 
|   40   void operator()(void* x) const { |  | 
|   41     ::XFree(x); |  | 
|   42   } |  | 
|   43 }; |  | 
|   44  |  | 
|   45 Display* g_display = NULL; |   36 Display* g_display = NULL; | 
|   46 const char* g_glx_extensions = NULL; |   37 const char* g_glx_extensions = NULL; | 
|   47 bool g_glx_context_create = false; |   38 bool g_glx_context_create = false; | 
|   48 bool g_glx_create_context_robustness_supported = false; |   39 bool g_glx_create_context_robustness_supported = false; | 
|   49 bool g_glx_texture_from_pixmap_supported = false; |   40 bool g_glx_texture_from_pixmap_supported = false; | 
|   50 bool g_glx_oml_sync_control_supported = false; |   41 bool g_glx_oml_sync_control_supported = false; | 
|   51  |   42  | 
|   52 // Track support of glXGetMscRateOML separately from GLX_OML_sync_control as a |   43 // Track support of glXGetMscRateOML separately from GLX_OML_sync_control as a | 
|   53 // whole since on some platforms (e.g. crosbug.com/34585), glXGetMscRateOML |   44 // whole since on some platforms (e.g. crosbug.com/34585), glXGetMscRateOML | 
|   54 // always fails even though GLX_OML_sync_control is reported as being supported. |   45 // always fails even though GLX_OML_sync_control is reported as being supported. | 
| (...skipping 118 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  173     if (!XGetWindowAttributes(display_, window_, &attributes)) { |  164     if (!XGetWindowAttributes(display_, window_, &attributes)) { | 
|  174       LOG(ERROR) << "XGetWindowAttributes failed for window " << |  165       LOG(ERROR) << "XGetWindowAttributes failed for window " << | 
|  175         window_ << "."; |  166         window_ << "."; | 
|  176       return; |  167       return; | 
|  177     } |  168     } | 
|  178  |  169  | 
|  179     XVisualInfo visual_info_template; |  170     XVisualInfo visual_info_template; | 
|  180     visual_info_template.visualid = XVisualIDFromVisual(attributes.visual); |  171     visual_info_template.visualid = XVisualIDFromVisual(attributes.visual); | 
|  181  |  172  | 
|  182     int visual_info_count = 0; |  173     int visual_info_count = 0; | 
|  183     scoped_ptr<XVisualInfo, ScopedPtrXFree> visual_info_list( |  174     gfx::XScopedPtr<XVisualInfo> visual_info_list(XGetVisualInfo( | 
|  184         XGetVisualInfo(display_, VisualIDMask, |  175         display_, VisualIDMask, &visual_info_template, &visual_info_count)); | 
|  185                        &visual_info_template, &visual_info_count)); |  | 
|  186  |  176  | 
|  187     DCHECK(visual_info_list.get()); |  177     DCHECK(visual_info_list.get()); | 
|  188     if (visual_info_count == 0) { |  178     if (visual_info_count == 0) { | 
|  189       LOG(ERROR) << "No visual info for visual ID."; |  179       LOG(ERROR) << "No visual info for visual ID."; | 
|  190       return; |  180       return; | 
|  191     } |  181     } | 
|  192  |  182  | 
|  193     context_ = glXCreateContext(display_, visual_info_list.get(), NULL, True); |  183     context_ = glXCreateContext(display_, visual_info_list.get(), NULL, True); | 
|  194  |  184  | 
|  195     DCHECK(NULL != context_); |  185     DCHECK(NULL != context_); | 
| (...skipping 350 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  546         window_, |  536         window_, | 
|  547         &attributes)) { |  537         &attributes)) { | 
|  548       LOG(ERROR) << "XGetWindowAttributes failed for window " << |  538       LOG(ERROR) << "XGetWindowAttributes failed for window " << | 
|  549           window_ << "."; |  539           window_ << "."; | 
|  550       return NULL; |  540       return NULL; | 
|  551     } |  541     } | 
|  552  |  542  | 
|  553     int visual_id = XVisualIDFromVisual(attributes.visual); |  543     int visual_id = XVisualIDFromVisual(attributes.visual); | 
|  554  |  544  | 
|  555     int num_elements = 0; |  545     int num_elements = 0; | 
|  556     scoped_ptr<GLXFBConfig, ScopedPtrXFree> configs( |  546     gfx::XScopedPtr<GLXFBConfig> configs( | 
|  557         glXGetFBConfigs(g_display, |  547         glXGetFBConfigs(g_display, DefaultScreen(g_display), &num_elements)); | 
|  558                         DefaultScreen(g_display), |  | 
|  559                         &num_elements)); |  | 
|  560     if (!configs.get()) { |  548     if (!configs.get()) { | 
|  561       LOG(ERROR) << "glXGetFBConfigs failed."; |  549       LOG(ERROR) << "glXGetFBConfigs failed."; | 
|  562       return NULL; |  550       return NULL; | 
|  563     } |  551     } | 
|  564     if (!num_elements) { |  552     if (!num_elements) { | 
|  565       LOG(ERROR) << "glXGetFBConfigs returned 0 elements."; |  553       LOG(ERROR) << "glXGetFBConfigs returned 0 elements."; | 
|  566       return NULL; |  554       return NULL; | 
|  567     } |  555     } | 
|  568     bool found = false; |  556     bool found = false; | 
|  569     int i; |  557     int i; | 
| (...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  621     GLX_BLUE_SIZE, 8, |  609     GLX_BLUE_SIZE, 8, | 
|  622     GLX_GREEN_SIZE, 8, |  610     GLX_GREEN_SIZE, 8, | 
|  623     GLX_RED_SIZE, 8, |  611     GLX_RED_SIZE, 8, | 
|  624     GLX_RENDER_TYPE, GLX_RGBA_BIT, |  612     GLX_RENDER_TYPE, GLX_RGBA_BIT, | 
|  625     GLX_DRAWABLE_TYPE, GLX_PBUFFER_BIT, |  613     GLX_DRAWABLE_TYPE, GLX_PBUFFER_BIT, | 
|  626     GLX_DOUBLEBUFFER, False, |  614     GLX_DOUBLEBUFFER, False, | 
|  627     0 |  615     0 | 
|  628   }; |  616   }; | 
|  629  |  617  | 
|  630   int num_elements = 0; |  618   int num_elements = 0; | 
|  631   scoped_ptr<GLXFBConfig, ScopedPtrXFree> configs( |  619   gfx::XScopedPtr<GLXFBConfig> configs(glXChooseFBConfig( | 
|  632       glXChooseFBConfig(g_display, |  620       g_display, DefaultScreen(g_display), config_attributes, &num_elements)); | 
|  633                         DefaultScreen(g_display), |  | 
|  634                         config_attributes, |  | 
|  635                         &num_elements)); |  | 
|  636   if (!configs.get()) { |  621   if (!configs.get()) { | 
|  637     LOG(ERROR) << "glXChooseFBConfig failed."; |  622     LOG(ERROR) << "glXChooseFBConfig failed."; | 
|  638     return false; |  623     return false; | 
|  639   } |  624   } | 
|  640   if (!num_elements) { |  625   if (!num_elements) { | 
|  641     LOG(ERROR) << "glXChooseFBConfig returned 0 elements."; |  626     LOG(ERROR) << "glXChooseFBConfig returned 0 elements."; | 
|  642     return false; |  627     return false; | 
|  643   } |  628   } | 
|  644  |  629  | 
|  645   config_ = configs.get()[0]; |  630   config_ = configs.get()[0]; | 
| (...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  689  |  674  | 
|  690 void* PbufferGLSurfaceGLX::GetConfig() { |  675 void* PbufferGLSurfaceGLX::GetConfig() { | 
|  691   return config_; |  676   return config_; | 
|  692 } |  677 } | 
|  693  |  678  | 
|  694 PbufferGLSurfaceGLX::~PbufferGLSurfaceGLX() { |  679 PbufferGLSurfaceGLX::~PbufferGLSurfaceGLX() { | 
|  695   Destroy(); |  680   Destroy(); | 
|  696 } |  681 } | 
|  697  |  682  | 
|  698 }  // namespace gfx |  683 }  // namespace gfx | 
| OLD | NEW |