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 #include "ui/gl/gl_wgl_api_implementation.h" | 5 #include "ui/gl/gl_wgl_api_implementation.h" |
6 | 6 |
7 #include "base/command_line.h" | 7 #include "base/command_line.h" |
8 #include "base/strings/string_split.h" | 8 #include "base/strings/string_split.h" |
9 #include "base/strings/string_util.h" | 9 #include "base/strings/string_util.h" |
10 #include "ui/gl/gl_implementation.h" | 10 #include "ui/gl/gl_implementation.h" |
11 | 11 |
12 namespace gl { | 12 namespace gl { |
13 | 13 |
14 RealWGLApi* g_real_wgl; | 14 RealWGLApi* g_real_wgl = nullptr; |
| 15 DebugWGLApi* g_debug_wgl = nullptr; |
15 | 16 |
16 void InitializeStaticGLBindingsWGL() { | 17 void InitializeStaticGLBindingsWGL() { |
17 g_driver_wgl.InitializeStaticBindings(); | 18 g_driver_wgl.InitializeStaticBindings(); |
18 if (!g_real_wgl) { | 19 if (!g_real_wgl) { |
19 g_real_wgl = new RealWGLApi(); | 20 g_real_wgl = new RealWGLApi(); |
20 } | 21 } |
21 g_real_wgl->Initialize(&g_driver_wgl); | 22 g_real_wgl->Initialize(&g_driver_wgl); |
22 g_current_wgl_context = g_real_wgl; | 23 g_current_wgl_context = g_real_wgl; |
23 g_driver_wgl.InitializeExtensionBindings(); | 24 g_driver_wgl.InitializeExtensionBindings(); |
24 } | 25 } |
25 | 26 |
26 void InitializeDebugGLBindingsWGL() { | 27 void InitializeDebugGLBindingsWGL() { |
27 g_driver_wgl.InitializeDebugBindings(); | 28 if (!g_debug_wgl) { |
| 29 g_debug_wgl = new DebugWGLApi(g_real_wgl); |
| 30 } |
| 31 g_current_wgl_context = g_debug_wgl; |
28 } | 32 } |
29 | 33 |
30 void ClearBindingsWGL() { | 34 void ClearBindingsWGL() { |
| 35 if (g_debug_wgl) { |
| 36 delete g_debug_wgl; |
| 37 g_debug_wgl = NULL; |
| 38 } |
31 if (g_real_wgl) { | 39 if (g_real_wgl) { |
32 delete g_real_wgl; | 40 delete g_real_wgl; |
33 g_real_wgl = NULL; | 41 g_real_wgl = NULL; |
34 } | 42 } |
35 g_current_wgl_context = NULL; | 43 g_current_wgl_context = NULL; |
36 g_driver_wgl.ClearBindings(); | 44 g_driver_wgl.ClearBindings(); |
37 } | 45 } |
38 | 46 |
39 WGLApi::WGLApi() { | 47 WGLApi::WGLApi() { |
40 } | 48 } |
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
104 return NULL; | 112 return NULL; |
105 | 113 |
106 const char* str = WGLApiBase::wglGetExtensionsStringEXTFn(); | 114 const char* str = WGLApiBase::wglGetExtensionsStringEXTFn(); |
107 if (!str) | 115 if (!str) |
108 return NULL; | 116 return NULL; |
109 | 117 |
110 filtered_ext_exts_ = FilterGLExtensionList(str, disabled_exts_); | 118 filtered_ext_exts_ = FilterGLExtensionList(str, disabled_exts_); |
111 return filtered_ext_exts_.c_str(); | 119 return filtered_ext_exts_.c_str(); |
112 } | 120 } |
113 | 121 |
| 122 DebugWGLApi::DebugWGLApi(WGLApi* wgl_api) : wgl_api_(wgl_api) {} |
| 123 |
| 124 DebugWGLApi::~DebugWGLApi() {} |
| 125 |
114 TraceWGLApi::~TraceWGLApi() { | 126 TraceWGLApi::~TraceWGLApi() { |
115 } | 127 } |
116 | 128 |
117 bool GetGLWindowSystemBindingInfoWGL(GLWindowSystemBindingInfo* info) { | 129 bool GetGLWindowSystemBindingInfoWGL(GLWindowSystemBindingInfo* info) { |
118 const char* extensions = wglGetExtensionsStringEXT(); | 130 const char* extensions = wglGetExtensionsStringEXT(); |
119 *info = GLWindowSystemBindingInfo(); | 131 *info = GLWindowSystemBindingInfo(); |
120 if (extensions) | 132 if (extensions) |
121 info->extensions = extensions; | 133 info->extensions = extensions; |
122 return true; | 134 return true; |
123 } | 135 } |
124 | 136 |
125 } // namespace gl | 137 } // namespace gl |
OLD | NEW |