JOGL Team (Chris, Ken, etc)-
[I'm still an open source plebe, so I don't know what the customs are. Please forgive.]
JOGL's Gears.java issues a Windows application error when I close the app. Something about memory location 0x0020 being unreadable.
I had the same problem with Magician. It happens when the JVM exits before the rendering thread terminates gracefully (e.g. no cleanup, might be in the middle of a frame update, whatever).
My fix was to register a system shutdown thread that would shutdown all the rendering threads. The code snippet from Magician's Bootstrap.java is
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| static ShutdownThread _reaper = null; static { Runtime runtime = Runtime.getRuntime(); _reaper = new ShutdownThread(); runtime.addShutdownHook( _reaper ); } static void shutMeDown( GLDrawable drawable ) { _reaper.addDrawable( drawable ); } |
The ShutdownThread.java is very straightforward. It extends Runnable, has an addDrawable(...) method, a run() method which calls destroy() on each registered GLDrawable and that's about it. It uses a WeakHashMap, so it won't prevent garbage collection.
Each GLDrawable in Magician registers itself from within the constructor.
I guess that's enough information to roll something into JOGL.
Cheers, Jason