From ac1f6a6df5542a06e49166d570df6ade252ab0f1 Mon Sep 17 00:00:00 2001 From: Kenneth Russel Date: Tue, 1 Aug 2006 23:00:08 +0000 Subject: 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 --- .../opengl/impl/macosx/MacOSXJava2DGLContext.java | 29 +++++++++++++++++++--- 1 file changed, 26 insertions(+), 3 deletions(-) (limited to 'src/classes/com/sun/opengl/impl/macosx/MacOSXJava2DGLContext.java') 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; } -- cgit v1.2.3