Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(382)

Side by Side Diff: ui/gl/gl_surface_glx.cc

Issue 1001833005: Update from https://crrev.com/320343 (Closed) Base URL: git@github.com:domokit/mojo.git@master
Patch Set: Supress Created 5 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « ui/gl/gl_implementation_win.cc ('k') | ui/gl/gl_surface_ozone.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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
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
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
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
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
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
OLDNEW
« no previous file with comments | « ui/gl/gl_implementation_win.cc ('k') | ui/gl/gl_surface_ozone.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698