15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved. 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file. 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/gl/scoped_make_current.h" 65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/logging.h" 85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/gl/gl_context.h" 95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/gl/gl_surface.h" 105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace ui { 125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)ScopedMakeCurrent::ScopedMakeCurrent(gfx::GLContext* context, 145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) gfx::GLSurface* surface) 155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) : previous_context_(gfx::GLContext::GetCurrent()), 165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) previous_surface_(gfx::GLSurface::GetCurrent()), 175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) context_(context), 185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) surface_(surface), 195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) succeeded_(false) { 205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DCHECK(context); 215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DCHECK(surface); 225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) succeeded_ = context->MakeCurrent(surface); 235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)ScopedMakeCurrent::~ScopedMakeCurrent() { 265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (previous_context_.get()) { 275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DCHECK(previous_surface_.get()); 285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) previous_context_->MakeCurrent(previous_surface_.get()); 295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } else { 305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) context_->ReleaseCurrent(surface_.get()); 315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)bool ScopedMakeCurrent::Succeeded() const { 355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return succeeded_; 365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} // namespace ui 39