diff --git a/src/java/com/threerings/micasa/lobby/table/TableLobbyManager.java b/src/java/com/threerings/micasa/lobby/table/TableLobbyManager.java index 46101463..703972ad 100644 --- a/src/java/com/threerings/micasa/lobby/table/TableLobbyManager.java +++ b/src/java/com/threerings/micasa/lobby/table/TableLobbyManager.java @@ -38,6 +38,14 @@ public class TableLobbyManager extends LobbyManager _tmgr = new TableManager(getPlaceObject()); } + // documentation inherited + protected void didShutdown () + { + super.didShutdown(); + // clean up our table manager + _tmgr.shutdown(); + } + // documentation inherited protected PlaceObject createPlaceObject () { diff --git a/src/java/com/threerings/parlor/server/TableManager.java b/src/java/com/threerings/parlor/server/TableManager.java index c9544779..ebe1bf08 100644 --- a/src/java/com/threerings/parlor/server/TableManager.java +++ b/src/java/com/threerings/parlor/server/TableManager.java @@ -81,6 +81,18 @@ public class TableManager } } + /** + * This must be called when the table manager is no longer needed. + */ + public void shutdown () + { + CrowdServer.invmgr.clearDispatcher(_tlobj.getTableService()); + _tlobj.setTableService(null); + if (_dobj instanceof PlaceObject) { + _dobj.removeListener(this); + } + } + /** * Set the subclass of Table that this instance should generate. */