Index: app/surface/accelerated_surface_mac.h |
=================================================================== |
--- app/surface/accelerated_surface_mac.h (revision 49795) |
+++ app/surface/accelerated_surface_mac.h (working copy) |
@@ -7,6 +7,7 @@ |
#include <CoreFoundation/CoreFoundation.h> |
+#include "app/gfx/gl/gl_context.h" |
#include "app/surface/transport_dib.h" |
#include "base/callback.h" |
#include "base/scoped_cftyperef.h" |
@@ -17,7 +18,6 @@ |
// Should not include GL headers in a header file. Forward declare these types |
// instead. |
typedef struct _CGLContextObject* CGLContextObj; |
-typedef struct _CGLPBufferObject* CGLPBufferObj; |
typedef unsigned int GLenum; |
typedef unsigned int GLuint; |
@@ -27,7 +27,7 @@ |
// Encapsulates an accelerated GL surface that can be shared across processes |
// on systems that support it (10.6 and above). For systems that do not, it |
-// uses a regular dib. There will either be a GL Context or a TransportDIB, |
+// uses a regular dib. There will either be an IOSurface or a TransportDIB, |
// never both. |
class AcceleratedSurface { |
@@ -45,11 +45,11 @@ |
// implementation does not know to bind the accelerated surface's |
// internal FBO when the default FBO is bound. Returns false upon |
// failure. |
- bool Initialize(CGLContextObj share_context, bool allocate_fbo); |
+ bool Initialize(gfx::GLContext* share_context, bool allocate_fbo); |
// Tear down. Must be called before destructor to prevent leaks. |
void Destroy(); |
- // These methods are used only when there is a GL surface. |
+ // These methods are used only once the accelerated surface is initialized. |
// Sets the accelerated surface to the given size, creating a new one if |
// the height or width changes. Returns a unique id of the IOSurface to |
@@ -84,13 +84,16 @@ |
// texture is a legal name in the namespace of the current context. |
void SwapBuffers(); |
- CGLContextObj context() { return gl_context_; } |
+ CGLContextObj context() { |
+ return static_cast<CGLContextObj>(gl_context_->GetHandle()); |
+ } |
// These methods are only used when there is a transport DIB. |
// Sets the transport DIB to the given size, creating a new one if the |
// height or width changes. Returns a handle to the new DIB, or a default |
- // handle if no changes were made. |
+ // handle if no changes were made. Assumes the caller has already called |
+ // MakeCurrent(). |
TransportDIB::Handle SetTransportDIBSize(const gfx::Size& size); |
// Sets the methods to use for allocating and freeing memory for the |
// transport DIB. |
@@ -119,8 +122,7 @@ |
// speaking, we do not need to allocate a GL context all of the |
// time. We only need one if (a) we are using the IOSurface code |
// path, or (b) if we are allocating an FBO internally. |
- CGLContextObj gl_context_; |
- CGLPBufferObj pbuffer_; |
+ scoped_ptr<gfx::GLContext> gl_context_; |
// Either |io_surface_| or |transport_dib_| is a valid pointer, but not both. |
// |io_surface_| is non-NULL if the IOSurface APIs are supported (Mac OS X |
// 10.6 and later). |