diff options
author | Sven Gothel <[email protected]> | 2011-10-13 03:37:00 +0200 |
---|---|---|
committer | Sven Gothel <[email protected]> | 2011-10-13 03:37:00 +0200 |
commit | 01ba2ee689a87996301afe2b37ad919cb052882b (patch) | |
tree | 663e9892bac423535b6a393a68ec3bc639e19cdb /src | |
parent | 946c98fd196802755e9e13a9c5db75650a564466 (diff) |
GLCanvas / GLWindow: Change 'manual' resize/repaint animation filter
We not only shall skip windowing system triggered repaint if another animation thread
is running, but also if the current thread is the animator thread.
This keeps the animator intervals stable while resizing.
Diffstat (limited to 'src')
-rw-r--r-- | src/jogl/classes/javax/media/opengl/awt/GLCanvas.java | 2 | ||||
-rw-r--r-- | src/jogl/classes/jogamp/opengl/GLDrawableHelper.java | 8 | ||||
-rw-r--r-- | src/newt/classes/com/jogamp/newt/opengl/GLWindow.java | 4 |
3 files changed, 11 insertions, 3 deletions
diff --git a/src/jogl/classes/javax/media/opengl/awt/GLCanvas.java b/src/jogl/classes/javax/media/opengl/awt/GLCanvas.java index 48c1c5411..ada9f5222 100644 --- a/src/jogl/classes/javax/media/opengl/awt/GLCanvas.java +++ b/src/jogl/classes/javax/media/opengl/awt/GLCanvas.java @@ -495,7 +495,7 @@ public class GLCanvas extends Canvas implements AWTGLAutoDrawable, WindowClosing (int) ((getHeight() + bounds.getHeight()) / 2)); return; } - if( ! this.drawableHelper.isExternalAnimatorAnimating() ) { + if( ! this.drawableHelper.isAnimatorAnimating() ) { display(); } } diff --git a/src/jogl/classes/jogamp/opengl/GLDrawableHelper.java b/src/jogl/classes/jogamp/opengl/GLDrawableHelper.java index fcbf13aad..151ec2e9c 100644 --- a/src/jogl/classes/jogamp/opengl/GLDrawableHelper.java +++ b/src/jogl/classes/jogamp/opengl/GLDrawableHelper.java @@ -232,10 +232,18 @@ public class GLDrawableHelper { return ( null != animatorCtrl ) ? animatorCtrl.isStarted() && animatorCtrl.getThread() != Thread.currentThread() : false ; } + public final boolean isAnimatorRunning() { + return ( null != animatorCtrl ) ? animatorCtrl.isStarted() : false ; + } + public final boolean isExternalAnimatorAnimating() { return ( null != animatorCtrl ) ? animatorCtrl.isAnimating() && animatorCtrl.getThread() != Thread.currentThread() : false ; } + public final boolean isAnimatorAnimating() { + return ( null != animatorCtrl ) ? animatorCtrl.isAnimating() : false ; + } + public final void invoke(GLAutoDrawable drawable, boolean wait, GLRunnable glRunnable) { if( null == drawable || null == glRunnable ) { return; diff --git a/src/newt/classes/com/jogamp/newt/opengl/GLWindow.java b/src/newt/classes/com/jogamp/newt/opengl/GLWindow.java index 5001e55e5..2cd8c2ced 100644 --- a/src/newt/classes/com/jogamp/newt/opengl/GLWindow.java +++ b/src/newt/classes/com/jogamp/newt/opengl/GLWindow.java @@ -79,7 +79,7 @@ public class GLWindow implements GLAutoDrawable, Window, NEWTEventConsumer, FPSC window.addWindowListener(new WindowAdapter() { @Override public void windowRepaint(WindowUpdateEvent e) { - if( !GLWindow.this.window.isWindowLockedByOtherThread() && !GLWindow.this.helper.isExternalAnimatorAnimating() ) { + if( !GLWindow.this.window.isWindowLockedByOtherThread() && !GLWindow.this.helper.isAnimatorAnimating() ) { display(); } } @@ -87,7 +87,7 @@ public class GLWindow implements GLAutoDrawable, Window, NEWTEventConsumer, FPSC @Override public void windowResized(WindowEvent e) { sendReshape = true; - if( !GLWindow.this.window.isWindowLockedByOtherThread() && !GLWindow.this.helper.isExternalAnimatorAnimating() ) { + if( !GLWindow.this.window.isWindowLockedByOtherThread() && !GLWindow.this.helper.isAnimatorAnimating() ) { display(); } } |