From 7433e513c1f109f75aa34c224b1f5f14b612cba8 Mon Sep 17 00:00:00 2001
From: Sven Gothel <sgothel@jausoft.com>
Date: Sat, 2 Nov 2013 16:26:02 +0100
Subject: GLContextImpl: Move sharedContextHandle check to
 makeCurrentWithinLock(..) and let it fail there instead of within impl.
 class, only pass the handle - simplifies and removes redundancy.

---
 .../jogamp/opengl/macosx/cgl/MacOSXCGLContext.java | 32 ++++++----------------
 .../opengl/macosx/cgl/MacOSXCGLDrawable.java       |  5 +++-
 .../macosx/cgl/MacOSXExternalCGLContext.java       |  3 +-
 3 files changed, 13 insertions(+), 27 deletions(-)

(limited to 'src/jogl/classes/jogamp/opengl/macosx')

diff --git a/src/jogl/classes/jogamp/opengl/macosx/cgl/MacOSXCGLContext.java b/src/jogl/classes/jogamp/opengl/macosx/cgl/MacOSXCGLContext.java
index 037aaca08..0d231b89d 100644
--- a/src/jogl/classes/jogamp/opengl/macosx/cgl/MacOSXCGLContext.java
+++ b/src/jogl/classes/jogamp/opengl/macosx/cgl/MacOSXCGLContext.java
@@ -286,35 +286,19 @@ public class MacOSXCGLContext extends GLContextImpl
     return false;
   }
 
-  protected long createImplPreset(GLContextImpl shareWith) throws GLException {
-    long share = 0;
-    if (shareWith != null) {
-      // Change our OpenGL mode to match that of any share context before we create ourselves
-      setOpenGLMode(((MacOSXCGLContext)shareWith).getOpenGLMode());
-      share = shareWith.getHandle();
-      if (share == 0) {
-        throw new GLException("GLContextShareSet returned a NULL OpenGL context");
-      }
-    }
-
-    MacOSXCGLGraphicsConfiguration config = (MacOSXCGLGraphicsConfiguration) drawable.getNativeSurface().getGraphicsConfiguration();
-    GLCapabilitiesImmutable capabilitiesChosen = (GLCapabilitiesImmutable) config.getChosenCapabilities();
-    GLProfile glp = capabilitiesChosen.getGLProfile();
+  @Override
+  protected boolean createImpl(final long shareWithHandle) throws GLException {
+    final MacOSXCGLGraphicsConfiguration config = (MacOSXCGLGraphicsConfiguration) drawable.getNativeSurface().getGraphicsConfiguration();
+    final GLCapabilitiesImmutable capabilitiesChosen = (GLCapabilitiesImmutable) config.getChosenCapabilities();
+    final GLProfile glp = capabilitiesChosen.getGLProfile();
     if( glp.isGLES1() || glp.isGLES2() || glp.isGLES3() ||
         ( glp.isGL3() && !isLionOrLater ) || ( glp.isGL4() && !isMavericksOrLater ) ) {
         throw new GLException("OpenGL profile not supported on MacOSX "+Platform.getOSVersionNumber()+": "+glp);
     }
-
-    if (DEBUG) {
-      System.err.println("Share context is " + toHexString(share) + " for " + this);
+    if( 0 != shareWithHandle && GLBackendType.NSOPENGL != getOpenGLMode() ) {
+        throw new GLException("Context sharing only supported in mode "+GLBackendType.NSOPENGL+": "+this);
     }
-    return share;
-  }
-
-  @Override
-  protected boolean createImpl(GLContextImpl shareWith) throws GLException {
-    long share = createImplPreset(shareWith);
-    contextHandle = createContextARB(share, true);
+    contextHandle = createContextARB(shareWithHandle, true);
     return 0 != contextHandle;
   }
 
diff --git a/src/jogl/classes/jogamp/opengl/macosx/cgl/MacOSXCGLDrawable.java b/src/jogl/classes/jogamp/opengl/macosx/cgl/MacOSXCGLDrawable.java
index bb36a7219..448e3e221 100644
--- a/src/jogl/classes/jogamp/opengl/macosx/cgl/MacOSXCGLDrawable.java
+++ b/src/jogl/classes/jogamp/opengl/macosx/cgl/MacOSXCGLDrawable.java
@@ -84,7 +84,10 @@ public abstract class MacOSXCGLDrawable extends GLDrawableImpl {
   // GLPbuffer, a GLJPanel and a GLCanvas simultaneously) but should
   // be enough to get things off the ground.
   public enum GLBackendType {
-    NSOPENGL(0), CGL(1);
+    /** Default OpenGL Backend */
+    NSOPENGL(0),
+    /** Alternative OpenGL Backend, only used for external context! */
+    CGL(1);
 
     public final int id;
 
diff --git a/src/jogl/classes/jogamp/opengl/macosx/cgl/MacOSXExternalCGLContext.java b/src/jogl/classes/jogamp/opengl/macosx/cgl/MacOSXExternalCGLContext.java
index 5d036d45a..ebb0fc6d1 100644
--- a/src/jogl/classes/jogamp/opengl/macosx/cgl/MacOSXExternalCGLContext.java
+++ b/src/jogl/classes/jogamp/opengl/macosx/cgl/MacOSXExternalCGLContext.java
@@ -50,7 +50,6 @@ import javax.media.opengl.GLDrawableFactory;
 import javax.media.opengl.GLException;
 
 import jogamp.nativewindow.WrappedSurface;
-import jogamp.opengl.GLContextImpl;
 import jogamp.opengl.GLContextShareSet;
 import jogamp.opengl.macosx.cgl.MacOSXCGLDrawable.GLBackendType;
 
@@ -118,7 +117,7 @@ public class MacOSXExternalCGLContext extends MacOSXCGLContext {
   }
 
   @Override
-  protected boolean createImpl(GLContextImpl shareWith) throws GLException {
+  protected boolean createImpl(final long shareWithHandle) throws GLException {
       return true;
   }
 
-- 
cgit v1.2.3