diff options
-rw-r--r-- | src/jogl/classes/javax/media/opengl/GLContext.java | 1 | ||||
-rw-r--r-- | src/jogl/classes/jogamp/opengl/GLContextImpl.java | 12 | ||||
-rw-r--r-- | src/jogl/classes/jogamp/opengl/GLDebugMessageHandler.java | 14 |
3 files changed, 23 insertions, 4 deletions
diff --git a/src/jogl/classes/javax/media/opengl/GLContext.java b/src/jogl/classes/javax/media/opengl/GLContext.java index 47a453484..a3aa369dd 100644 --- a/src/jogl/classes/javax/media/opengl/GLContext.java +++ b/src/jogl/classes/javax/media/opengl/GLContext.java @@ -428,6 +428,7 @@ public abstract class GLContext { public final boolean isGLCompatibilityProfile() { return ( 0 != ( CTX_PROFILE_COMPAT & ctxOptions ) ); } public final boolean isGLCoreProfile() { return ( 0 != ( CTX_PROFILE_CORE & ctxOptions ) ); } public final boolean isGLForwardCompatible() { return ( 0 != ( CTX_OPTION_FORWARD & ctxOptions ) ); } + public final boolean isGLDebugEnabled() { return ( 0 != ( CTX_OPTION_DEBUG & ctxOptions ) ); } public final boolean isCreatedWithARBMethod() { return ( 0 != ( CTX_IS_ARB_CREATED & ctxOptions ) ); } /** diff --git a/src/jogl/classes/jogamp/opengl/GLContextImpl.java b/src/jogl/classes/jogamp/opengl/GLContextImpl.java index 6f2786b03..99693aabe 100644 --- a/src/jogl/classes/jogamp/opengl/GLContextImpl.java +++ b/src/jogl/classes/jogamp/opengl/GLContextImpl.java @@ -380,7 +380,10 @@ public abstract class GLContextImpl extends GLContext { if (null == getGLDrawable().getChosenGLCapabilities()) { throw new GLException("drawable has no chosen GLCapabilities: "+getGLDrawable()); } - additionalCtxCreationFlags |= DEBUG_GL ? GLContext.CTX_OPTION_DEBUG : 0 ; + if(DEBUG_GL) { + // only impacts w/ createContextARB(..) + additionalCtxCreationFlags |= GLContext.CTX_OPTION_DEBUG ; + } } lockConsiderFailFast(); @@ -408,14 +411,17 @@ public abstract class GLContextImpl extends GLContext { // throws an GLException if not getGLDrawable().getGLProfile().verifyEquality(gl.getGLProfile()); + glDebugHandler.init( isGL2GL3() && isGLDebugEnabled() ); + if(DEBUG_GL) { gl = gl.getContext().setGL( GLPipelineFactory.create("javax.media.opengl.Debug", null, gl, null) ); - glDebugHandler.addListener(new GLDebugMessageHandler.StdErrGLDebugListener(true)); + if(glDebugHandler.isEnabled()) { + glDebugHandler.addListener(new GLDebugMessageHandler.StdErrGLDebugListener(true)); + } } if(TRACE_GL) { gl = gl.getContext().setGL( GLPipelineFactory.create("javax.media.opengl.Trace", null, gl, new Object[] { System.err } ) ); } - glDebugHandler.init(0 != (additionalCtxCreationFlags & GLContext.CTX_OPTION_DEBUG)); } /* FIXME: refactor dependence on Java 2D / JOGL bridge diff --git a/src/jogl/classes/jogamp/opengl/GLDebugMessageHandler.java b/src/jogl/classes/jogamp/opengl/GLDebugMessageHandler.java index 9ca573536..8ca0c016d 100644 --- a/src/jogl/classes/jogamp/opengl/GLDebugMessageHandler.java +++ b/src/jogl/classes/jogamp/opengl/GLDebugMessageHandler.java @@ -99,9 +99,14 @@ public class GLDebugMessageHandler { } public void init(boolean enable) { + if(DEBUG) { + System.err.println("GLDebugMessageHandler.init("+enable+")"); + } init(); if(isAvailable()) { enableImpl(enable); + } else if(DEBUG) { + System.err.println("GLDebugMessageHandler.init("+enable+") .. n/a"); } } @@ -111,6 +116,13 @@ public class GLDebugMessageHandler { return; } + if( !ctx.isGLDebugEnabled() ) { + if(DEBUG) { + System.err.println("GLDebugMessageHandler: GL DEBUG not set in ARB ctx options: "+ctx.getGLVersion()); + } + return; + } + if( ctx.isExtensionAvailable(GL_ARB_debug_output) ) { extName = GL_ARB_debug_output; extType = EXT_ARB; @@ -124,7 +136,7 @@ public class GLDebugMessageHandler { if(0 == extType) { if(DEBUG) { - System.err.println("GLDebugMessageHandler: No extension available!"); + System.err.println("GLDebugMessageHandler: No extension available! "+ctx.getGLVersion()); } return; } |