diff options
author | Kenneth Russel <[email protected]> | 2005-09-09 07:08:45 +0000 |
---|---|---|
committer | Kenneth Russel <[email protected]> | 2005-09-09 07:08:45 +0000 |
commit | ffb098e3eed864346f1bd9f53021b17f9148da49 (patch) | |
tree | c95f36b4e25fb8facace3e8ead0827e61a80093e /src/demos/hdr/HDR.java | |
parent | 6988570ed0a3ffa8f6d544cdb245cb7f0e77885c (diff) |
Refactored demos to mostly subclass common Demo superclass providing
shutdown capabilities. Moved DemoListener to demos.common package.
Added ManipManager removal code to demos using manipulators or
ExaminerViewer to fix memory leak when run in JRefract harness. Added
workaround for another seeming memory leak when run under current JDK
1.6 due to java.awt.Component now being finalizable and keeping data
alive longer than previously. Made ManipManager.unregisterWindow more
lenient with respect to null or invalid arguments.
git-svn-id: file:///usr/local/projects/SUN/JOGL/git-svn/../svn-server-sync/jogl-demos/branches/JSR-231@122 3298f667-5e0e-4b4a-8ed4-a3559d26a5f4
Diffstat (limited to 'src/demos/hdr/HDR.java')
-rwxr-xr-x | src/demos/hdr/HDR.java | 20 |
1 files changed, 11 insertions, 9 deletions
diff --git a/src/demos/hdr/HDR.java b/src/demos/hdr/HDR.java index b7467da..20122f4 100755 --- a/src/demos/hdr/HDR.java +++ b/src/demos/hdr/HDR.java @@ -11,6 +11,7 @@ import javax.media.opengl.*; import com.sun.opengl.utils.*; import com.sun.opengl.cg.*; import com.sun.opengl.utils.*; +import demos.common.*; import demos.util.*; import gleem.*; import gleem.linalg.*; @@ -20,7 +21,7 @@ import gleem.linalg.*; Ported to Java by Kenneth Russell */ -public class HDR implements GLEventListener { +public class HDR extends Demo { private static String[] defaultArgs = { "demos/data/images/stpeters_cross.hdr", "512", @@ -30,6 +31,7 @@ public class HDR implements GLEventListener { "3", "demos/data/models/teapot.obj" }; + private GLAutoDrawable drawable; private boolean useCg; private boolean initComplete; private HDRTexture hdr; @@ -217,15 +219,14 @@ public class HDR implements GLEventListener { return win_h; } - public void setDemoListener(DemoListener listener) { - demoListener = listener; - } - //---------------------------------------------------------------------- // Internals only below this point // - private DemoListener demoListener; + public void shutdownDemo() { + ManipManager.getManipManager().unregisterWindow(drawable); + super.shutdownDemo(); + } //---------------------------------------------------------------------- // Listener for main window @@ -334,6 +335,7 @@ public class HDR implements GLEventListener { // Register the window with the ManipManager ManipManager manager = ManipManager.getManipManager(); manager.registerWindow(drawable); + this.drawable = drawable; viewer = new ExaminerViewer(MouseButtonHelper.numMouseButtons()); viewer.setAutoRedrawMode(false); @@ -436,7 +438,7 @@ public class HDR implements GLEventListener { private void unavailableExtension(String message) { JOptionPane.showMessageDialog(null, message, "Unavailable extension", JOptionPane.ERROR_MESSAGE); - demoListener.shutdownDemo(); + shutdownDemo(); throw new GLException(message); } @@ -447,7 +449,7 @@ public class HDR implements GLEventListener { switch (keyCode) { case KeyEvent.VK_ESCAPE: case KeyEvent.VK_Q: - demoListener.shutdownDemo(); + shutdownDemo(); break; case KeyEvent.VK_EQUALS: @@ -1219,7 +1221,7 @@ public class HDR implements GLEventListener { private void usage() { System.err.println("usage: java demos.hdr.HDR [-cg] image.hdr pbuffer_w pbuffer_h window_scale blur_width blur_decimate [obj file]"); - demoListener.shutdownDemo(); + shutdownDemo(); } private void printThreadName(String where) { |