// 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" namespace gfx { ScopedMakeCurrent::ScopedMakeCurrent(GLContext* context, GLSurface* surface) : previous_context_(GLContext::GetCurrent()) , previous_surface_(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() { return succeeded_; } } // namespace gfx