aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSven Gothel <[email protected]>2012-08-17 15:33:12 +0200
committerSven Gothel <[email protected]>2012-08-17 15:33:12 +0200
commitda697607fce1e6d2b0c65fcc37030c88981b76ec (patch)
tree62897317fe74f2790f910574953a31204f0a92ee
parentb193d85b406b36ce091ad6bfcc488e9dfda9e12b (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-xmake/scripts/targetcommand-newt.sh4
-rwxr-xr-xmake/scripts/tests.sh7
-rw-r--r--src/jogl/classes/jogamp/opengl/egl/EGLDrawableFactory.java9
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;
}