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
This commit is contained in:
drees 2007-05-03 16:20:23 +00:00
parent 62c7102249
commit 009c473c22
2 changed files with 17 additions and 6 deletions

View File

@ -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<Table> romTables = rom.getTables();
for (Table t : romTables) {
rightPanel.remove(t.getFrame());
TableUpdateHandler.getInstance().deregisterTable(t);
}
Vector<TreePath> path = new Vector<TreePath>();

View File

@ -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<Table> tables = tableMap.get(table.getLogParam());
tables.remove(table);
}
public static TableUpdateHandler getInstance() {
return INSTANCE;
}
}