diff options
author | Kenneth Russel <[email protected]> | 2006-08-01 23:00:08 +0000 |
---|---|---|
committer | Kenneth Russel <[email protected]> | 2006-08-01 23:00:08 +0000 |
commit | ac1f6a6df5542a06e49166d570df6ade252ab0f1 (patch) | |
tree | 0fd602fa64881f21a056c40e985c2f70b6705f35 /src/classes/com/sun/opengl/impl/macosx | |
parent | 1c2fe26c000618262be40bb4430741b34a2640ba (diff) |
Revised Java2D/JOGL bridge to support new share context argument to
CGLSurfaceData.createOGLContextOnSurface(Graphics, long). Testing
indicates that sharing of textures, etc. between pbuffers and the
context created on the Java2D back buffer is no longer functioning,
however.
git-svn-id: file:///usr/local/projects/SUN/JOGL/git-svn/svn-server-sync/jogl/trunk@871 232f8b59-042b-4e1e-8c03-345bb8c30851
Diffstat (limited to 'src/classes/com/sun/opengl/impl/macosx')
-rw-r--r-- | src/classes/com/sun/opengl/impl/macosx/MacOSXGLDrawableFactory.java | 4 | ||||
-rw-r--r-- | src/classes/com/sun/opengl/impl/macosx/MacOSXJava2DGLContext.java | 29 |
2 files changed, 28 insertions, 5 deletions
diff --git a/src/classes/com/sun/opengl/impl/macosx/MacOSXGLDrawableFactory.java b/src/classes/com/sun/opengl/impl/macosx/MacOSXGLDrawableFactory.java index 855512213..6c56a2b6d 100644 --- a/src/classes/com/sun/opengl/impl/macosx/MacOSXGLDrawableFactory.java +++ b/src/classes/com/sun/opengl/impl/macosx/MacOSXGLDrawableFactory.java @@ -147,9 +147,9 @@ public class MacOSXGLDrawableFactory extends GLDrawableFactoryImpl { return true; } - public GLContext createContextOnJava2DSurface(Graphics g) + public GLContext createContextOnJava2DSurface(Graphics g, GLContext shareWith) throws GLException { - return new MacOSXJava2DGLContext(); + return new MacOSXJava2DGLContext(shareWith); } diff --git a/src/classes/com/sun/opengl/impl/macosx/MacOSXJava2DGLContext.java b/src/classes/com/sun/opengl/impl/macosx/MacOSXJava2DGLContext.java index 3082dd200..5f4de0464 100644 --- a/src/classes/com/sun/opengl/impl/macosx/MacOSXJava2DGLContext.java +++ b/src/classes/com/sun/opengl/impl/macosx/MacOSXJava2DGLContext.java @@ -58,8 +58,8 @@ public class MacOSXJava2DGLContext extends MacOSXGLContext implements Java2DGLCo // rethink this in particular if using FBOs to implement the // Java2D/OpenGL pipeline on Mac OS X - public MacOSXJava2DGLContext() { - super(null, null); + public MacOSXJava2DGLContext(GLContext shareWith) { + super(null, shareWith); } public void setGraphics(Graphics g) { @@ -90,7 +90,30 @@ public class MacOSXJava2DGLContext extends MacOSXGLContext implements Java2DGLCo } protected boolean create() { - long ctx = Java2D.createOGLContextOnSurface(graphics); + // Find and configure share context + MacOSXGLContext other = (MacOSXGLContext) GLContextShareSet.getShareContext(this); + long share = 0; + if (other != null) { + // Reconfigure pbuffer-based GLContexts + if (other instanceof MacOSXPbufferGLContext) { + MacOSXPbufferGLContext ctx = (MacOSXPbufferGLContext) other; + ctx.setOpenGLMode(MacOSXGLDrawable.CGL_MODE); + } else { + if (other.getOpenGLMode() != MacOSXGLDrawable.CGL_MODE) { + throw new GLException("Can't share between NSOpenGLContexts and CGLContextObjs"); + } + } + share = other.getNSContext(); + // Note we don't check for a 0 return value, since switching + // the context's mode causes it to be destroyed and not + // re-initialized until the next makeCurrent + } + + if (DEBUG) { + System.err.println("!!! Share context is " + toHexString(share) + " for " + getClass().getName()); + } + + long ctx = Java2D.createOGLContextOnSurface(graphics, share); if (ctx == 0) { return false; } |