diff options
author | Sven Gothel <[email protected]> | 2012-03-04 23:05:28 +0100 |
---|---|---|
committer | Sven Gothel <[email protected]> | 2012-03-04 23:05:28 +0100 |
commit | a0177c8a1048683e5d43f4712f8f9e37091d4e85 (patch) | |
tree | 0d164b0a2fbeda187549f41e488be05f8666b726 /src/jogl/classes/jogamp | |
parent | aeca49c50789b42d991386ace3edd0c10d23acc2 (diff) |
NEWT/GLWindow.display(): No explicit surface locking/unlocking for GLDrawableHelper.invokeGL(..) - it's done implicit at makeCurrent()/release()
The explicit locking takes away the locking result, eg. SURFACE_CHANGED,
which is required to update the delegated drawable handles (e.g.: EGL surface handle).
With the followup fix of EGLDrawable.updateHandle()'s recreate EGL surface,
an EGL 'wrapper' can work on Windows (eg. ANGLE).
Diffstat (limited to 'src/jogl/classes/jogamp')
-rw-r--r-- | src/jogl/classes/jogamp/opengl/GLDrawableHelper.java | 7 | ||||
-rw-r--r-- | src/jogl/classes/jogamp/opengl/GLDrawableImpl.java | 9 |
2 files changed, 12 insertions, 4 deletions
diff --git a/src/jogl/classes/jogamp/opengl/GLDrawableHelper.java b/src/jogl/classes/jogamp/opengl/GLDrawableHelper.java index 509839f55..c992b3cb2 100644 --- a/src/jogl/classes/jogamp/opengl/GLDrawableHelper.java +++ b/src/jogl/classes/jogamp/opengl/GLDrawableHelper.java @@ -335,8 +335,11 @@ public class GLDrawableHelper { desired goal is to be able to implement GLAutoDrawable's in terms of the GLContext's public APIs, and putting it into a separate class helps ensure that we don't inadvertently use private - methods of the GLContext or its implementing classes.<br> - * <br> + methods of the GLContext or its implementing classes. + <p> + Note: Locking of the surface is implicit done by {@link GLContext#makeCurrent()}, + where unlocking is performed by the latter {@link GLContext#release()}. + </p> * * @param drawable * @param context diff --git a/src/jogl/classes/jogamp/opengl/GLDrawableImpl.java b/src/jogl/classes/jogamp/opengl/GLDrawableImpl.java index 02a94f31c..ba64127d4 100644 --- a/src/jogl/classes/jogamp/opengl/GLDrawableImpl.java +++ b/src/jogl/classes/jogamp/opengl/GLDrawableImpl.java @@ -135,7 +135,12 @@ public abstract class GLDrawableImpl implements GLDrawable { protected void destroyHandle() {} /** called with locked surface @ setRealized(true) or @ lockSurface(..) when surface changed */ - protected void updateHandle() {} + protected void updateHandle() { + if(DEBUG) { + System.err.println(getThreadName() + ": updateHandle: "+getClass().getSimpleName()+": "+this); + Thread.dumpStack(); + } + } public long getHandle() { return surface.getSurfaceHandle(); @@ -148,7 +153,7 @@ public abstract class GLDrawableImpl implements GLDrawable { public final synchronized void setRealized(boolean realizedArg) { if ( realized != realizedArg ) { if(DEBUG) { - System.err.println(getThreadName() + ": setRealized: "+getClass().getName()+" "+realized+" -> "+realizedArg); + System.err.println(getThreadName() + ": setRealized: "+getClass().getSimpleName()+" "+realized+" -> "+realizedArg); } realized = realizedArg; AbstractGraphicsDevice aDevice = surface.getGraphicsConfiguration().getScreen().getDevice(); |