aboutsummaryrefslogtreecommitdiffstats
path: root/src/jogl/classes
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 /src/jogl/classes
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.
Diffstat (limited to 'src/jogl/classes')
-rw-r--r--src/jogl/classes/jogamp/opengl/egl/EGLDrawableFactory.java9
1 files changed, 8 insertions, 1 deletions
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;
}