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 5#ifndef UI_GL_GL_CONTEXT_NSVIEW_H_ 6#define UI_GL_GL_CONTEXT_NSVIEW_H_ 7 8#import <AppKit/NSOpenGL.h> 9 10#include "base/compiler_specific.h" 11#include "base/mac/scoped_nsobject.h" 12#include "ui/gl/gl_context.h" 13 14namespace gfx { 15 16class GLSurface; 17 18// GLContextNSView encapsulates an NSView-based GLContext. This is paired with 19// the GLSurfaceNSView class. 20class GLContextNSView : public GLContextReal { 21 public: 22 explicit GLContextNSView(GLShareGroup* group); 23 virtual ~GLContextNSView(); 24 25 // GLContext: 26 virtual bool Initialize(GLSurface* surface, 27 GpuPreference gpu_preference) OVERRIDE; 28 virtual void Destroy() OVERRIDE; 29 virtual bool MakeCurrent(GLSurface* surface) OVERRIDE; 30 virtual void ReleaseCurrent(GLSurface* surface) OVERRIDE; 31 virtual bool IsCurrent(GLSurface* surface) OVERRIDE; 32 virtual void* GetHandle() OVERRIDE; 33 virtual void SetSwapInterval(int interval) OVERRIDE; 34 35 // Flush the |context_|. Swaps buffers. 36 void FlushBuffer(); 37 38 private: 39 base::scoped_nsobject<NSOpenGLContext> context_; 40 GpuPreference gpu_preference_; 41 42 DISALLOW_COPY_AND_ASSIGN(GLContextNSView); 43}; 44 45} // namespace gfx 46 47#endif // UI_GL_GL_CONTEXT_NSVIEW_H_ 48