diff --git a/src/main/java/forge/view/Main.java b/src/main/java/forge/view/Main.java index 87d3fead83c..ff4e77bb3c1 100644 --- a/src/main/java/forge/view/Main.java +++ b/src/main/java/forge/view/Main.java @@ -45,6 +45,15 @@ public final class Main { */ public static void main(final String[] args) { ExceptionHandler.registerErrorHandling(); + Runtime.getRuntime().addShutdownHook(new Thread(new Runnable() { + @Override + public void run() { + // Only works if the program is not ABORTed / KILLed. + // Used instead of a finalizer to avoid leak issues. + Singletons.getModel().close(); + } + })); + try { Singletons.setModel(FModel.SINGLETON_INSTANCE); Singletons.setView(FView.SINGLETON_INSTANCE); @@ -60,19 +69,4 @@ public final class Main { ErrorViewer.showError(exn); } } - - /** - * Destructor for FModel. - * - * @throws Throwable - * indirectly - */ - @Override - protected void finalize() throws Throwable { - System.out.println("Running finalizer"); - // NOT WORKING - // this should call close in model, - // should probably be attached to frame close method - super.finalize(); - } }