diff options
Diffstat (limited to 'src/jogl/classes/com/jogamp/opengl/util/Animator.java')
-rw-r--r-- | src/jogl/classes/com/jogamp/opengl/util/Animator.java | 42 |
1 files changed, 24 insertions, 18 deletions
diff --git a/src/jogl/classes/com/jogamp/opengl/util/Animator.java b/src/jogl/classes/com/jogamp/opengl/util/Animator.java index c7a03eddb..4686e1745 100644 --- a/src/jogl/classes/com/jogamp/opengl/util/Animator.java +++ b/src/jogl/classes/com/jogamp/opengl/util/Animator.java @@ -165,7 +165,6 @@ public class Animator extends AnimatorBase { } catch (final UncaughtAnimatorException dre) { displayCaught = dre; stopIssued = true; - isAnimating = false; break; // end pause loop } } @@ -199,7 +198,6 @@ public class Animator extends AnimatorBase { } catch (final UncaughtAnimatorException dre) { displayCaught = dre; stopIssued = true; - isAnimating = false; break; // end animation loop } if ( !runAsFastAsPossible ) { @@ -226,24 +224,32 @@ public class Animator extends AnimatorBase { } } } - synchronized (Animator.this) { - if(DEBUG) { - System.err.println("Animator stop on " + animThread.getName() + ": " + toString()); - if( null != displayCaught ) { - System.err.println("Animator caught: "+displayCaught.getMessage()); - displayCaught.printStackTrace(); + boolean flushGLRunnables = false; + try { + synchronized (Animator.this) { + if(DEBUG) { + System.err.println("Animator stop on " + animThread.getName() + ": " + toString()); + if( null != displayCaught ) { + System.err.println("Animator caught: "+displayCaught.getMessage()); + displayCaught.printStackTrace(); + } } - } - stopIssued = false; - pauseIssued = false; - isAnimating = false; - try { - if( null != displayCaught ) { - handleUncaughtException(displayCaught); // may throw exception if null handler + stopIssued = false; + pauseIssued = false; + isAnimating = false; + try { + if( null != displayCaught ) { + flushGLRunnables = true; + handleUncaughtException(displayCaught); // may throw exception if null handler + } + } finally { + animThread = null; + Animator.this.notifyAll(); } - } finally { - animThread = null; - Animator.this.notifyAll(); + } + } finally { + if( flushGLRunnables ) { + flushGLRunnables(); } } } |