scoped_make_current.cc 932 B

123456789101112131415161718192021222324252627282930313233
  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
  3. // found in the LICENSE file.
  4. #include "ui/gl/scoped_make_current.h"
  5. #include "base/check.h"
  6. #include "ui/gl/gl_context.h"
  7. #include "ui/gl/gl_surface.h"
  8. namespace ui {
  9. ScopedMakeCurrent::ScopedMakeCurrent(gl::GLContext* context,
  10. gl::GLSurface* surface)
  11. : previous_context_(gl::GLContext::GetCurrent()),
  12. previous_surface_(gl::GLSurface::GetCurrent()),
  13. context_(context),
  14. surface_(surface) {
  15. DCHECK(context);
  16. DCHECK(surface);
  17. is_context_current_ = context->MakeCurrent(surface);
  18. }
  19. ScopedMakeCurrent::~ScopedMakeCurrent() {
  20. if (previous_context_) {
  21. DCHECK(previous_surface_);
  22. previous_context_->MakeCurrent(previous_surface_.get());
  23. } else {
  24. context_->ReleaseCurrent(surface_.get());
  25. }
  26. }
  27. } // namespace ui