diff --git a/src/java/org/lwjgl/util/applet/AppletLoader.java b/src/java/org/lwjgl/util/applet/AppletLoader.java index 37a3c060..6ad4b3ce 100644 --- a/src/java/org/lwjgl/util/applet/AppletLoader.java +++ b/src/java/org/lwjgl/util/applet/AppletLoader.java @@ -368,12 +368,19 @@ public class AppletLoader extends Applet implements Runnable, AppletStub { if (lwjglApplet != null) { lwjglApplet.destroy(); } - + } + + /** + * Clean up resources + */ + protected void cleanUp() { progressbar = null; logo = null; logoBuffer = null; progressbarBuffer = null; + + offscreen = null; } /** @@ -501,6 +508,9 @@ public class AppletLoader extends Applet implements Runnable, AppletStub { */ public boolean imageUpdate(Image img, int flag, int x, int y, int width, int height) { + // finish with this ImageObserver + if (state == STATE_DONE) return false; + // if image frame is ready to be drawn and is currently not being painted if (flag == ImageObserver.FRAMEBITS && !painting) { Image buffer; @@ -750,7 +760,9 @@ public class AppletLoader extends Applet implements Runnable, AppletStub { // switch to LWJGL Applet switchApplet(); - state = STATE_DONE; + state = STATE_DONE; + // clean up resources + cleanUp(); } catch (AccessControlException ace) { fatalErrorOccured(ace.getMessage(), ace); certificateRefused = true;