| // 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. |
| |
| #include "ui/gl/scoped_make_current.h" |
| |
| #include "base/logging.h" |
| #include "ui/gl/gl_context.h" |
| #include "ui/gl/gl_surface.h" |
| |
| namespace ui { |
| |
| ScopedMakeCurrent::ScopedMakeCurrent(gfx::GLContext* context, |
| gfx::GLSurface* surface) |
| : previous_context_(gfx::GLContext::GetCurrent()), |
| previous_surface_(gfx::GLSurface::GetCurrent()), |
| context_(context), |
| surface_(surface), |
| succeeded_(false) { |
| DCHECK(context); |
| DCHECK(surface); |
| succeeded_ = context->MakeCurrent(surface); |
| } |
| |
| ScopedMakeCurrent::~ScopedMakeCurrent() { |
| if (previous_context_.get()) { |
| DCHECK(previous_surface_.get()); |
| previous_context_->MakeCurrent(previous_surface_.get()); |
| } else { |
| context_->ReleaseCurrent(surface_.get()); |
| } |
| } |
| |
| bool ScopedMakeCurrent::Succeeded() const { |
| return succeeded_; |
| } |
| |
| } // namespace ui |