diff options
-rw-r--r-- | make/build-gluegen.xml | 4 | ||||
-rw-r--r-- | make/build-staticglgen.xml | 4 | ||||
-rw-r--r-- | make/build.xml | 4 | ||||
-rw-r--r-- | src/net/java/games/jogl/Animator.java | 50 |
4 files changed, 33 insertions, 29 deletions
diff --git a/make/build-gluegen.xml b/make/build-gluegen.xml index f0236811b..a12f668ab 100644 --- a/make/build-gluegen.xml +++ b/make/build-gluegen.xml @@ -75,7 +75,7 @@ - NOTE: GlueGenTask is NOT built at this time. It is done in - a separate task. --> <javac destdir="${classes}" includes="**/gluegen/**" excludes="**/GlueGenTask.java" - source="1.4"> + source="1.4" debug="true" debuglevel="source,lines"> <src path="${src}" /> <src path="${src.generated.java}" /> <classpath refid="antlr.classpath" /> @@ -135,7 +135,7 @@ <!-- Build the GlueGen ANT task. - NOTE: ONLY the GlueGenTask is built at this time. GlueGen - itself is built in a separate task. --> - <javac destdir="${classes}" includes="**/GlueGenTask.java" source="1.4"> + <javac destdir="${classes}" includes="**/GlueGenTask.java" source="1.4" debug="true" debuglevel="source,lines"> <src path="${src}" /> <classpath refid="antlr.classpath" /> </javac> diff --git a/make/build-staticglgen.xml b/make/build-staticglgen.xml index d054abbb0..0f72bcfa7 100644 --- a/make/build-staticglgen.xml +++ b/make/build-staticglgen.xml @@ -29,7 +29,7 @@ <mkdir dir="${classes}" /> <!-- Compile BuildStaticGLInfo --> - <javac srcdir="${src}" destdir="${classes}" includes="**/BuildStaticGLInfo.java" source="1.4"> + <javac srcdir="${src}" destdir="${classes}" includes="**/BuildStaticGLInfo.java" source="1.4" debug="true" debuglevel="source,lines"> <classpath refid="antlr.classpath" /> </javac> @@ -49,7 +49,7 @@ <!-- Build the BuildStaticGLInfo ANT task. - NOTE: ONLY the StaticGLGen is built at this time. BuildStaticGLInfo - itself is built in a separate task. --> - <javac destdir="${classes}" includes="**/StaticGLGenTask.java" source="1.4"> + <javac destdir="${classes}" includes="**/StaticGLGenTask.java" source="1.4" debug="true" debuglevel="source,lines"> <src path="${src}" /> <classpath refid="classpath" /> </javac> diff --git a/make/build.xml b/make/build.xml index 37ab9dbec..0118fbbb5 100644 --- a/make/build.xml +++ b/make/build.xml @@ -678,7 +678,7 @@ </java> <!-- Perform the second pass Java compile which compiles the composable pipelines. --> - <javac destdir="${classes}" includes="${src.generated.java.pipeline}" source="1.4"> + <javac destdir="${classes}" includes="${src.generated.java.pipeline}" source="1.4" debug="true" debuglevel="source,lines"> <src path="${src}" /> <src path="${src.generated.java}" /> <classpath refid="antlr.classpath" /> @@ -694,7 +694,7 @@ <target name="java.compile" depends="java.generate,java.generate.cg"> <!-- Perform the first pass Java compile. --> <javac destdir="${classes}" - excludes="${java.excludes.platform}" source="1.4"> + excludes="${java.excludes.platform}" source="1.4" debug="true" debuglevel="source,lines"> <src path="${src}" /> <src path="${src.generated.java}" /> <classpath refid="antlr.classpath" /> diff --git a/src/net/java/games/jogl/Animator.java b/src/net/java/games/jogl/Animator.java index d21d483e1..5ab2aad75 100644 --- a/src/net/java/games/jogl/Animator.java +++ b/src/net/java/games/jogl/Animator.java @@ -80,25 +80,25 @@ public class Animator { if (runnable == null) { runnable = new Runnable() { public void run() { - // Try to get OpenGL context optimization since we know we - // will be rendering this one drawable continually from - // this thread; make the context current once instead of - // making it current and freeing it each frame. - drawable.setRenderingThread(Thread.currentThread()); - - // Since setRenderingThread is currently advisory (because - // of the poor JAWT implementation in the Motif AWT, which - // performs excessive locking) we also prevent repaint(), - // which is called from the AWT thread, from having an - // effect for better multithreading behavior. This call is - // not strictly necessary, but if end users write their - // own animation loops which update multiple drawables per - // tick then it may be necessary to enforce the order of - // updates. - drawable.setNoAutoRedrawMode(true); - boolean noException = false; try { + // Try to get OpenGL context optimization since we know we + // will be rendering this one drawable continually from + // this thread; make the context current once instead of + // making it current and freeing it each frame. + drawable.setRenderingThread(Thread.currentThread()); + + // Since setRenderingThread is currently advisory (because + // of the poor JAWT implementation in the Motif AWT, which + // performs excessive locking) we also prevent repaint(), + // which is called from the AWT thread, from having an + // effect for better multithreading behavior. This call is + // not strictly necessary, but if end users write their + // own animation loops which update multiple drawables per + // tick then it may be necessary to enforce the order of + // updates. + drawable.setNoAutoRedrawMode(true); + while (!shouldStop) { noException = false; drawable.display(); @@ -107,14 +107,18 @@ public class Animator { } finally { shouldStop = false; drawable.setNoAutoRedrawMode(false); - if (noException) { - try { + try { + // The surface is already unlocked and rendering + // thread is already null if an exception occurred + // during display(), so don't disable the rendering + // thread again. + if (noException) { drawable.setRenderingThread(null); - } finally { + } + } finally { + synchronized (Animator.this) { thread = null; - synchronized (Animator.this) { - Animator.this.notify(); - } + Animator.this.notify(); } } } |