diff options
author | Sven Gothel <[email protected]> | 2014-07-08 10:47:41 +0200 |
---|---|---|
committer | Sven Gothel <[email protected]> | 2014-07-08 10:47:41 +0200 |
commit | 96d530e7127c89db9991080e6268c6e8430d0619 (patch) | |
tree | efd8da06fea9da34f03c232d8c23670e41282d11 /src/jogl/classes/jogamp/opengl | |
parent | db25b1ba6575210741e485838d0882a1590125e6 (diff) |
Findbugs.not-written.null: Fix referencing non-written fields (never written or due branching)
- AWT TextRenderer: Add throw new InternalError("fontRenderContext never initialized!"); FIXME!
- GLContextImpl.hasFBOImpl(): Fix serious NPE issue if extCache is null
- GLDrawableFactoryImpl.createOffscreenDrawableImpl(..):
- Fix NPE issue w/ null drawable
- Fix resetting GammaRamp by ensuring originalGammaRamp will be set at 1st setGammaRamp(..)
- AndroidGLMediaPlayerAPI14: Fix NPE: Use already resolved local referenced
- EGLDrawableFactory: Fix NPE: Only operate on non null surface!
- ALAudioSink.dequeueBuffer(..): Only resolve releasedBuffer elements if not null
-
Diffstat (limited to 'src/jogl/classes/jogamp/opengl')
6 files changed, 46 insertions, 29 deletions
diff --git a/src/jogl/classes/jogamp/opengl/GLContextImpl.java b/src/jogl/classes/jogamp/opengl/GLContextImpl.java index 5671334bd..832a797e2 100644 --- a/src/jogl/classes/jogamp/opengl/GLContextImpl.java +++ b/src/jogl/classes/jogamp/opengl/GLContextImpl.java @@ -177,7 +177,7 @@ public abstract class GLContextImpl extends GLContext { glRendererLowerCase = glRenderer; glVersion = glVendor; - if (boundFBOTarget != null) { // <init> + if ( null != boundFBOTarget ) { // <init>: boundFBOTarget is not written yet boundFBOTarget[0] = 0; // draw boundFBOTarget[1] = 0; // read } @@ -1939,19 +1939,20 @@ public abstract class GLContextImpl extends GLContext { } private static final boolean hasFBOImpl(final int major, final int ctp, final ExtensionAvailabilityCache extCache) { - return ( 0 != (ctp & CTX_PROFILE_ES) && major >= 2 ) || // ES >= 2.0 + return ( 0 != (ctp & CTX_PROFILE_ES) && major >= 2 ) || // ES >= 2.0 - major >= 3 || // any >= 3.0 GL ctx (core, compat and ES) + major >= 3 || // any >= 3.0 GL ctx (core, compat and ES) ( null != extCache && + ( + extCache.isExtensionAvailable(GLExtensions.ARB_ES2_compatibility) || // ES 2.0 compatible - extCache.isExtensionAvailable(GLExtensions.ARB_ES2_compatibility) || // ES 2.0 compatible + extCache.isExtensionAvailable(GLExtensions.ARB_framebuffer_object) || // ARB_framebuffer_object - extCache.isExtensionAvailable(GLExtensions.ARB_framebuffer_object) || // ARB_framebuffer_object + extCache.isExtensionAvailable(GLExtensions.EXT_framebuffer_object) || // EXT_framebuffer_object - extCache.isExtensionAvailable(GLExtensions.EXT_framebuffer_object) || // EXT_framebuffer_object - - extCache.isExtensionAvailable(GLExtensions.OES_framebuffer_object) ) ; // OES_framebuffer_object excluded + extCache.isExtensionAvailable(GLExtensions.OES_framebuffer_object) // OES_framebuffer_object + ) ); } private final void removeCachedVersion(final int major, final int minor, int ctxProfileBits) { diff --git a/src/jogl/classes/jogamp/opengl/GLDrawableFactoryImpl.java b/src/jogl/classes/jogamp/opengl/GLDrawableFactoryImpl.java index fd8052b96..1aca29d0a 100644 --- a/src/jogl/classes/jogamp/opengl/GLDrawableFactoryImpl.java +++ b/src/jogl/classes/jogamp/opengl/GLDrawableFactoryImpl.java @@ -272,11 +272,14 @@ public abstract class GLDrawableFactoryImpl extends GLDrawableFactory { final GLCapabilitiesImmutable capsChosen = GLGraphicsConfigurationUtil.fixGLPBufferGLCapabilities(capsRequested); final GLDrawableImpl drawable = createOffscreenDrawableImpl( createMutableSurfaceImpl(device, true, capsChosen, capsRequested, chooser, new UpstreamSurfaceHookMutableSize(width, height) ) ); + final GLContextImpl ctx; if(null != drawable) { drawable.setRealized(true); + ctx = (GLContextImpl) drawable.createContext(shareWith); + } else { + ctx = null; } - - return new GLPbufferImpl( drawable, (GLContextImpl) drawable.createContext(shareWith) ); + return new GLPbufferImpl( drawable, ctx); } //--------------------------------------------------------------------------- @@ -607,7 +610,10 @@ public abstract class GLDrawableFactoryImpl extends GLDrawableFactory { rampEntry = 0.0f; gammaRamp[i] = rampEntry; } - needsGammaRampReset = true; + if( !needsGammaRampReset ) { + originalGammaRamp = getGammaRamp(); + needsGammaRampReset = true; + } return setGammaRamp(gammaRamp); } diff --git a/src/jogl/classes/jogamp/opengl/android/av/AndroidGLMediaPlayerAPI14.java b/src/jogl/classes/jogamp/opengl/android/av/AndroidGLMediaPlayerAPI14.java index 9aa1c882a..ea23b5239 100644 --- a/src/jogl/classes/jogamp/opengl/android/av/AndroidGLMediaPlayerAPI14.java +++ b/src/jogl/classes/jogamp/opengl/android/av/AndroidGLMediaPlayerAPI14.java @@ -420,7 +420,7 @@ public class AndroidGLMediaPlayerAPI14 extends GLMediaPlayerImpl { // stex.getTransformMatrix(atex.getSTMatrix()); } } - nextFrame.setPTS( pts ); + sTexFrame.setPTS( pts ); } return pts; } diff --git a/src/jogl/classes/jogamp/opengl/egl/EGLDrawableFactory.java b/src/jogl/classes/jogamp/opengl/egl/EGLDrawableFactory.java index c4ee4bf73..887bc1ba1 100644 --- a/src/jogl/classes/jogamp/opengl/egl/EGLDrawableFactory.java +++ b/src/jogl/classes/jogamp/opengl/egl/EGLDrawableFactory.java @@ -478,8 +478,8 @@ public class EGLDrawableFactory extends GLDrawableFactoryImpl { downstreamSurface = createDummySurfaceImpl(defaultDevice, false, reqCapsPBuffer, reqCapsPBuffer, null, 64, 64); // egl pbuffer offscreen if( null != downstreamSurface ) { downstreamSurface.createNotify(); + surface = downstreamSurface; } - surface = downstreamSurface; } else { // 3rd case fake creation of defaultDevice shared resource, no pbuffer available final List<GLCapabilitiesImmutable> capsAnyL = getAvailableEGLConfigs(defaultDevice, reqCapsAny); @@ -499,14 +499,14 @@ public class EGLDrawableFactory extends GLDrawableFactoryImpl { upstreamSurface = desktopFactory.createDummySurface(adevice, reqCapsAny, null, 64, 64); // X11, WGL, .. dummy window if(null != upstreamSurface) { upstreamSurface.createNotify(); + eglDevice = EGLDisplayUtil.eglCreateEGLGraphicsDevice(surface); + eglDevice.open(); + if( DEBUG ) { + dumpEGLInfo("EGLDrawableFactory.mapAvailableEGLESConfig: ", eglDevice.getHandle()); + } + hasPBuffer[0] = true; + surface = upstreamSurface; } - surface = upstreamSurface; - eglDevice = EGLDisplayUtil.eglCreateEGLGraphicsDevice(surface); - eglDevice.open(); - if( DEBUG ) { - dumpEGLInfo("EGLDrawableFactory.mapAvailableEGLESConfig: ", eglDevice.getHandle()); - } - hasPBuffer[0] = true; } if(null != surface) { diff --git a/src/jogl/classes/jogamp/opengl/egl/EGLUpstreamSurfaceHook.java b/src/jogl/classes/jogamp/opengl/egl/EGLUpstreamSurfaceHook.java index 305899fff..cc15f0cd6 100644 --- a/src/jogl/classes/jogamp/opengl/egl/EGLUpstreamSurfaceHook.java +++ b/src/jogl/classes/jogamp/opengl/egl/EGLUpstreamSurfaceHook.java @@ -217,8 +217,18 @@ public class EGLUpstreamSurfaceHook implements UpstreamSurfaceHook.MutableSize { @Override public String toString() { - final String us_s = null != upstreamSurface ? ( upstreamSurface.getClass().getName() + ": 0x" + Long.toHexString(upstreamSurface.getSurfaceHandle()) ) : "nil"; - return "EGLUpstreamSurfaceHook[ "+ upstreamSurface.getSurfaceWidth() + "x" + upstreamSurface.getSurfaceHeight() + ", " + us_s+ "]"; + final String us_s; + final int sw, sh; + if( null != upstreamSurface ) { + us_s = upstreamSurface.getClass().getName() + ": 0x" + Long.toHexString(upstreamSurface.getSurfaceHandle()); + sw = upstreamSurface.getSurfaceWidth(); + sh = upstreamSurface.getSurfaceHeight(); + } else { + us_s = "nil"; + sw = -1; + sh = -1; + } + return "EGLUpstreamSurfaceHook[ "+ sw + "x" + sh + ", " + us_s+ "]"; } } diff --git a/src/jogl/classes/jogamp/opengl/openal/av/ALAudioSink.java b/src/jogl/classes/jogamp/opengl/openal/av/ALAudioSink.java index b6ffced9f..ac55fcf98 100644 --- a/src/jogl/classes/jogamp/opengl/openal/av/ALAudioSink.java +++ b/src/jogl/classes/jogamp/opengl/openal/av/ALAudioSink.java @@ -617,13 +617,13 @@ public class ALAudioSink implements AudioSink { throw new InternalError("Buffer name mismatch: dequeued: "+buffers[i]+", released "+releasedBuffer+", "+this); } } - } - alBufferBytesQueued -= releasedBuffer.getByteSize(); - if( !alFramesAvail.put(releasedBuffer) ) { - throw new InternalError("Internal Error: "+this); - } - if(DEBUG_TRACE) { - System.err.println("<< [al "+buffers[i]+", q "+releasedBuffer.alBuffer+"] <- "+shortString()+" @ "+getThreadName()); + alBufferBytesQueued -= releasedBuffer.getByteSize(); + if( !alFramesAvail.put(releasedBuffer) ) { + throw new InternalError("Internal Error: "+this); + } + if(DEBUG_TRACE) { + System.err.println("<< [al "+buffers[i]+", q "+releasedBuffer.alBuffer+"] <- "+shortString()+" @ "+getThreadName()); + } } } } |