From 009c473c2268ea2aae9282e50d9d6af965b8f00d Mon Sep 17 00:00:00 2001 From: drees Date: Thu, 3 May 2007 16:20:23 +0000 Subject: [PATCH] Fix memory leak when closing/refreshing Rom images. The static TableUpdateHandler was keeping a reference to all the tables, now those references are cleared when a Rom image is closed. git-svn-id: http://svn.3splooges.com/romraider-arch/trunk@669 d2e2e1cd-ba16-0410-be16-b7c4453c7c2d --- src/enginuity/ECUEditor.java | 10 ++++++++-- .../ecu/ui/handler/table/TableUpdateHandler.java | 13 +++++++++---- 2 files changed, 17 insertions(+), 6 deletions(-) diff --git a/src/enginuity/ECUEditor.java b/src/enginuity/ECUEditor.java index c93c13ed..90f42c86 100644 --- a/src/enginuity/ECUEditor.java +++ b/src/enginuity/ECUEditor.java @@ -39,6 +39,7 @@ import java.io.FileInputStream; import java.io.FileReader; import java.io.IOException; import java.util.Vector; + import javax.swing.ImageIcon; import javax.swing.JCheckBox; import javax.swing.JFrame; @@ -49,8 +50,14 @@ import javax.swing.JScrollPane; import javax.swing.JSplitPane; import javax.swing.JTextArea; import javax.swing.tree.TreePath; + +import org.w3c.dom.Document; +import org.xml.sax.InputSource; + import com.sun.org.apache.xerces.internal.parsers.DOMParser; import com.sun.org.apache.xerces.internal.xni.parser.XMLParseException; + +import enginuity.logger.ecu.ui.handler.table.TableUpdateHandler; import enginuity.maps.Rom; import enginuity.maps.Table; import enginuity.net.URL; @@ -66,8 +73,6 @@ import enginuity.xml.DOMRomUnmarshaller; import enginuity.xml.DOMSettingsBuilder; import enginuity.xml.DOMSettingsUnmarshaller; import enginuity.xml.RomNotFoundException; -import org.w3c.dom.Document; -import org.xml.sax.InputSource; public class ECUEditor extends JFrame implements WindowListener, PropertyChangeListener { @@ -294,6 +299,7 @@ public class ECUEditor extends JFrame implements WindowListener, PropertyChangeL Vector romTables = rom.getTables(); for (Table t : romTables) { rightPanel.remove(t.getFrame()); + TableUpdateHandler.getInstance().deregisterTable(t); } Vector path = new Vector(); diff --git a/src/enginuity/logger/ecu/ui/handler/table/TableUpdateHandler.java b/src/enginuity/logger/ecu/ui/handler/table/TableUpdateHandler.java index 583309a8..56036975 100644 --- a/src/enginuity/logger/ecu/ui/handler/table/TableUpdateHandler.java +++ b/src/enginuity/logger/ecu/ui/handler/table/TableUpdateHandler.java @@ -72,10 +72,15 @@ public final class TableUpdateHandler implements DataUpdateHandler { if (!tables.contains(table)) { tables.add(table); } - } + } - public static TableUpdateHandler getInstance() { - return INSTANCE; - } + public void deregisterTable(Table table) { + List
tables = tableMap.get(table.getLogParam()); + tables.remove(table); + } + + public static TableUpdateHandler getInstance() { + return INSTANCE; + } }