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
static ShutdownThread _reaper = null;
static
{
Runtime runtime = Runtime.getRuntime();
_reaper = new ShutdownThread();
runtime.addShutdownHook( _reaper );
}
// Package visible only.
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