aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSven Gothel <[email protected]>2011-10-13 03:37:00 +0200
committerSven Gothel <[email protected]>2011-10-13 03:37:00 +0200
commit01ba2ee689a87996301afe2b37ad919cb052882b (patch)
tree663e9892bac423535b6a393a68ec3bc639e19cdb
parent946c98fd196802755e9e13a9c5db75650a564466 (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.
-rw-r--r--src/jogl/classes/javax/media/opengl/awt/GLCanvas.java2
-rw-r--r--src/jogl/classes/jogamp/opengl/GLDrawableHelper.java8
-rw-r--r--src/newt/classes/com/jogamp/newt/opengl/GLWindow.java4
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();
}
}