| 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_context_cgl.h" | 5 #include "ui/gl/gl_context_cgl.h" |
| 6 | 6 |
| 7 #include <OpenGL/CGLRenderers.h> | 7 #include <OpenGL/CGLRenderers.h> |
| 8 #include <OpenGL/CGLTypes.h> | 8 #include <OpenGL/CGLTypes.h> |
| 9 #include <vector> | 9 #include <vector> |
| 10 | 10 |
| (...skipping 160 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 171 break; | 171 break; |
| 172 } | 172 } |
| 173 } | 173 } |
| 174 renderer_id_ = renderer_id; | 174 renderer_id_ = renderer_id; |
| 175 } | 175 } |
| 176 } | 176 } |
| 177 | 177 |
| 178 if (IsCurrent(surface)) | 178 if (IsCurrent(surface)) |
| 179 return true; | 179 return true; |
| 180 | 180 |
| 181 ScopedReleaseCurrent release_current; |
| 181 TRACE_EVENT0("gpu", "GLContextCGL::MakeCurrent"); | 182 TRACE_EVENT0("gpu", "GLContextCGL::MakeCurrent"); |
| 182 | 183 |
| 183 if (CGLSetCurrentContext( | 184 if (CGLSetCurrentContext( |
| 184 static_cast<CGLContextObj>(context_)) != kCGLNoError) { | 185 static_cast<CGLContextObj>(context_)) != kCGLNoError) { |
| 185 LOG(ERROR) << "Unable to make gl context current."; | 186 LOG(ERROR) << "Unable to make gl context current."; |
| 186 return false; | 187 return false; |
| 187 } | 188 } |
| 188 | 189 |
| 189 // Set this as soon as the context is current, since we might call into GL. | 190 // Set this as soon as the context is current, since we might call into GL. |
| 190 SetRealGLApi(); | 191 SetRealGLApi(); |
| 191 | 192 |
| 192 SetCurrent(surface); | 193 SetCurrent(surface); |
| 193 if (!InitializeDynamicBindings()) { | 194 if (!InitializeDynamicBindings()) { |
| 194 ReleaseCurrent(surface); | |
| 195 return false; | 195 return false; |
| 196 } | 196 } |
| 197 | 197 |
| 198 if (!surface->OnMakeCurrent(this)) { | 198 if (!surface->OnMakeCurrent(this)) { |
| 199 LOG(ERROR) << "Unable to make gl context current."; | 199 LOG(ERROR) << "Unable to make gl context current."; |
| 200 return false; | 200 return false; |
| 201 } | 201 } |
| 202 | 202 |
| 203 release_current.Cancel(); |
| 203 return true; | 204 return true; |
| 204 } | 205 } |
| 205 | 206 |
| 206 void GLContextCGL::ReleaseCurrent(GLSurface* surface) { | 207 void GLContextCGL::ReleaseCurrent(GLSurface* surface) { |
| 207 if (!IsCurrent(surface)) | 208 if (!IsCurrent(surface)) |
| 208 return; | 209 return; |
| 209 | 210 |
| 210 SetCurrent(NULL); | 211 SetCurrent(NULL); |
| 211 CGLSetCurrentContext(NULL); | 212 CGLSetCurrentContext(NULL); |
| 212 } | 213 } |
| (...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 295 | 296 |
| 296 GLContextCGL::~GLContextCGL() { | 297 GLContextCGL::~GLContextCGL() { |
| 297 Destroy(); | 298 Destroy(); |
| 298 } | 299 } |
| 299 | 300 |
| 300 GpuPreference GLContextCGL::GetGpuPreference() { | 301 GpuPreference GLContextCGL::GetGpuPreference() { |
| 301 return gpu_preference_; | 302 return gpu_preference_; |
| 302 } | 303 } |
| 303 | 304 |
| 304 } // namespace gfx | 305 } // namespace gfx |
| OLD | NEW |