diff options
author | Sven Gothel <[email protected]> | 2012-08-17 15:33:12 +0200 |
---|---|---|
committer | Sven Gothel <[email protected]> | 2012-08-17 15:33:12 +0200 |
commit | da697607fce1e6d2b0c65fcc37030c88981b76ec (patch) | |
tree | 62897317fe74f2790f910574953a31204f0a92ee | |
parent | b193d85b406b36ce091ad6bfcc488e9dfda9e12b (diff) |
Fix EGLDrawableFactory.getEGLSurface(..): Catch WrappedSurface case w/ EGLDevice and EGLGraphicsConfiguration - Regression of 43a473b2005d7f59a7f4f5b8bc7ca9ae88b4e894
Do not create a WrappedSurface around a given WrappedSurface
if the latter is intended for EGL, i.e. uses EGLDevice and EGLGraphicsConfiguration
even though the surface handle is not valid [yet].
For this case we assume the WrappedSurface has a lifecycle hook
as it is used for the dummy drawable.
Otherwise we would have a recursive WrappedSurface, ie with
EGLDrawableFactory.createOnscreenDrawableImpl( dummySurface ),
where dummySurface is a WrappedSurface w/ EGL pbuffer drawable lifecycle hook.
Commit 43a473b2005d7f59a7f4f5b8bc7ca9ae88b4e894 didn't take the above case into account.
-rwxr-xr-x | make/scripts/targetcommand-newt.sh | 4 | ||||
-rwxr-xr-x | make/scripts/tests.sh | 7 | ||||
-rw-r--r-- | src/jogl/classes/jogamp/opengl/egl/EGLDrawableFactory.java | 9 |
3 files changed, 14 insertions, 6 deletions
diff --git a/make/scripts/targetcommand-newt.sh b/make/scripts/targetcommand-newt.sh index 8b3c0945a..84b149b37 100755 --- a/make/scripts/targetcommand-newt.sh +++ b/make/scripts/targetcommand-newt.sh @@ -44,6 +44,7 @@ export LD_LIBRARY_PATH=$THISDIR/PVRTrace/:$LD_LIBRARY_PATH #TSTCLASS=com.jogamp.opengl.test.junit.jogl.acore.TestSharedContextVBOES2NEWT2 #TSTCLASS=com.jogamp.opengl.test.junit.jogl.acore.TestShutdownCompleteNEWT #TSTCLASS=com.jogamp.opengl.test.junit.jogl.acore.TestShutdownSharedNEWT +TSTCLASS=com.jogamp.opengl.test.junit.jogl.acore.TestFBODrawableNEWT #TSTCLASS=com.jogamp.opengl.test.junit.jogl.caps.TestMultisampleES1NEWT #TSTCLASS=com.jogamp.opengl.test.junit.jogl.caps.TestTranslucencyNEWT #TSTCLASS=com.jogamp.opengl.test.junit.jogl.demos.es1.newt.TestGearsES1NEWT @@ -51,10 +52,11 @@ export LD_LIBRARY_PATH=$THISDIR/PVRTrace/:$LD_LIBRARY_PATH #TSTCLASS=com.jogamp.opengl.test.junit.jogl.demos.es2.newt.TestElektronenMultipliziererNEWT #TSTCLASS=com.jogamp.opengl.test.junit.jogl.demos.es2.newt.TestGearsES2NEWT #TSTCLASS=com.jogamp.opengl.test.junit.jogl.demos.es2.newt.TestRedSquareES2NEWT -TSTCLASS=com.jogamp.opengl.test.junit.jogl.demos.es2.av.MovieCube +#TSTCLASS=com.jogamp.opengl.test.junit.jogl.demos.es2.av.MovieCube #TSTCLASS=com.jogamp.opengl.test.junit.jogl.demos.gl2.newt.TestGearsNEWT #TSTCLASS=com.jogamp.opengl.test.junit.jogl.drawable.TestDrawable01NEWT #TSTCLASS=com.jogamp.opengl.test.junit.jogl.glsl.TestFBOMRTNEWT01 +#TSTCLASS=com.jogamp.opengl.test.junit.jogl.acore.TestFBOMix2DemosES2NEWT #TSTCLASS=com.jogamp.opengl.test.junit.jogl.glsl.TestGLSLShaderState01NEWT #TSTCLASS=com.jogamp.opengl.test.junit.jogl.glsl.TestGLSLShaderState02NEWT #TSTCLASS=com.jogamp.opengl.test.junit.jogl.glsl.TestGLSLSimple01NEWT diff --git a/make/scripts/tests.sh b/make/scripts/tests.sh index d0a5f64ff..824daeaeb 100755 --- a/make/scripts/tests.sh +++ b/make/scripts/tests.sh @@ -61,8 +61,7 @@ function jrun() { #D_ARGS="-Djogamp.debug=all -Dnativewindow.debug=all -Djogl.debug=all -Dnewt.debug=all" #D_ARGS="-Djogl.debug=all -Dnativewindow.debug=all -Dnewt.debug=all" #D_ARGS="-Djogl.debug=all -Dnativewindow.debug=all -Dnewt.debug=all -Djogamp.debug.Lock" - #D_ARGS="-Djogl.debug=all -Dnativewindow.debug=all" - D_ARGS="-Djogl.debug=all" + #D_ARGS="-Djogl.debug=all" #D_ARGS="-Dnewt.debug.Window" #D_ARGS="-Djogl.debug.GLDrawable" #D_ARGS="-Djogl.debug.EGLDrawableFactory.DontQuery -Djogl.debug.GLDrawable" @@ -216,7 +215,7 @@ function testawtswt() { #testnoawt com.jogamp.newt.opengl.GLWindow $* #testnoawt com.jogamp.opengl.test.junit.jogl.offscreen.TestOffscreen01GLPBufferNEWT $* #testnoawt com.jogamp.opengl.test.junit.jogl.offscreen.TestOffscreen02BitmapNEWT $* -testnoawt com.jogamp.opengl.test.junit.jogl.demos.es2.newt.TestGearsES2NEWT $* +#testnoawt com.jogamp.opengl.test.junit.jogl.demos.es2.newt.TestGearsES2NEWT $* #testnoawt com.jogamp.opengl.test.junit.jogl.demos.es2.newt.TestElektronenMultipliziererNEWT $* #testnoawt com.jogamp.opengl.test.junit.jogl.acore.TestFloatUtil01MatrixMatrixMultNOUI $* #testnoawt com.jogamp.opengl.test.junit.jogl.acore.TestNEWTCloseX11DisplayBug565 $* @@ -235,7 +234,7 @@ testnoawt com.jogamp.opengl.test.junit.jogl.demos.es2.newt.TestGearsES2NEWT $* #testnoawt com.jogamp.opengl.test.junit.jogl.acore.TestSharedContextVBOES2NEWT2 $* #testnoawt com.jogamp.opengl.test.junit.jogl.acore.TestGLAutoDrawableDelegateNEWT $* #testnoawt com.jogamp.opengl.test.junit.jogl.acore.TestGLContextDrawableSwitchNEWT $* -#testnoawt com.jogamp.opengl.test.junit.jogl.acore.TestFBODrawableNEWT $* +testnoawt com.jogamp.opengl.test.junit.jogl.acore.TestFBODrawableNEWT $* #testnoawt com.jogamp.opengl.test.junit.newt.parenting.TestParenting01NEWT $* #testnoawt com.jogamp.opengl.test.junit.newt.parenting.TestParenting02NEWT $* diff --git a/src/jogl/classes/jogamp/opengl/egl/EGLDrawableFactory.java b/src/jogl/classes/jogamp/opengl/egl/EGLDrawableFactory.java index f7377a648..e145a959c 100644 --- a/src/jogl/classes/jogamp/opengl/egl/EGLDrawableFactory.java +++ b/src/jogl/classes/jogamp/opengl/egl/EGLDrawableFactory.java @@ -471,10 +471,17 @@ public class EGLDrawableFactory extends GLDrawableFactoryImpl { AbstractGraphicsConfiguration aConfig = surface.getGraphicsConfiguration(); AbstractGraphicsDevice aDevice = aConfig.getScreen().getDevice(); if( aDevice instanceof EGLGraphicsDevice && aConfig instanceof EGLGraphicsConfiguration ) { + if(surface instanceof WrappedSurface) { + // already wrapped surface - no wrapped recursion + if(DEBUG) { + System.err.println(getThreadName() + ": getEGLSurface - already wrapped surface - use as-is: "+surface); + } + return surface; + } if(EGLDrawable.isValidEGLSurface((EGLGraphicsDevice)aDevice, surface)) { // already in native EGL format if(DEBUG) { - System.err.println(getThreadName() + ": getEGLSurface - already valid EGL surface - use as-is: "+aConfig); + System.err.println(getThreadName() + ": getEGLSurface - already valid EGL surface - use as-is: "+surface); } return surface; } |