From fa847cd755833ab7f3530bffbb63ccfd8863a9f6 Mon Sep 17 00:00:00 2001 From: Sven Gothel Date: Thu, 28 Mar 2013 17:18:13 +0100 Subject: GLStateKeeper: Add clearPreservedGLState() --- src/jogl/classes/com/jogamp/opengl/GLStateKeeper.java | 15 ++++++++++++++- src/jogl/classes/jogamp/opengl/GLAutoDrawableBase.java | 9 +++++++-- 2 files changed, 21 insertions(+), 3 deletions(-) (limited to 'src/jogl') diff --git a/src/jogl/classes/com/jogamp/opengl/GLStateKeeper.java b/src/jogl/classes/com/jogamp/opengl/GLStateKeeper.java index 410907bee..321d4ee57 100644 --- a/src/jogl/classes/com/jogamp/opengl/GLStateKeeper.java +++ b/src/jogl/classes/com/jogamp/opengl/GLStateKeeper.java @@ -56,6 +56,7 @@ public interface GLStateKeeper { * @return true if GL state preservation is supported in implementation and on current platform, false otherwise. * @see #preserveGLStateAtDestroy(boolean) * @see #getPreservedGLState() + * @see #clearPreservedGLState() */ public boolean isGLStatePreservationSupported(); @@ -73,6 +74,7 @@ public interface GLStateKeeper { * @return true if supported and successful, false otherwise. * @see #isGLStatePreservationSupported() * @see #getPreservedGLState() + * @see #clearPreservedGLState() */ public boolean preserveGLStateAtDestroy(boolean value); @@ -81,7 +83,18 @@ public interface GLStateKeeper { * otherwise null. * @see #isGLStatePreservationSupported() * @see #preserveGLStateAtDestroy(boolean) + * @see #clearPreservedGLState() */ public GLEventListenerState getPreservedGLState(); - + + /** + * Clears the preserved {@link GLEventListenerState} from this {@link GLStateKeeper}, without destroying it. + * + * @return the preserved and cleared {@link GLEventListenerState} if preservation was performed, + * otherwise null. + * @see #isGLStatePreservationSupported() + * @see #preserveGLStateAtDestroy(boolean) + * @see #getPreservedGLState() + */ + public GLEventListenerState clearPreservedGLState(); } diff --git a/src/jogl/classes/jogamp/opengl/GLAutoDrawableBase.java b/src/jogl/classes/jogamp/opengl/GLAutoDrawableBase.java index 2f405a8c6..1eb7c618c 100644 --- a/src/jogl/classes/jogamp/opengl/GLAutoDrawableBase.java +++ b/src/jogl/classes/jogamp/opengl/GLAutoDrawableBase.java @@ -121,8 +121,6 @@ public abstract class GLAutoDrawableBase implements GLAutoDrawable, GLStateKeepe System.err.println("GLAutoDrawableBase.setPreserveGLStateAtDestroy: ("+Thread.currentThread().getName()+"): "+preserveGLELSAtDestroy+" -> "+value+" - surfaceHandle 0x"+Long.toHexString(getNativeSurface().getSurfaceHandle())); } preserveGLELSAtDestroy = value; - } else { - } return res; } @@ -135,6 +133,13 @@ public abstract class GLAutoDrawableBase implements GLAutoDrawable, GLStateKeepe return glels; } + @Override + public final GLEventListenerState clearPreservedGLState() { + final GLEventListenerState r = glels; + glels = null; + return r; + } + /** * Pulls the {@link GLEventListenerState} from this {@link GLAutoDrawable}. * -- cgit v1.2.3