From b74897484577029252e9788647fd985f4281867d Mon Sep 17 00:00:00 2001 From: Jamie Doornbos Date: Tue, 6 Jan 2009 01:24:55 +0000 Subject: [PATCH] Once a table is purged, stop listening to the game object, otherwise we get warnings when the game goes away or the occupants change. purgeTable is called from a number of places, apparently sometimes before unmapTable git-svn-id: svn+ssh://src.earth.threerings.net/vilya/trunk@796 c613c5cb-e716-0410-b11b-feb51c14d237 --- .../com/threerings/parlor/server/TableManager.java | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/java/com/threerings/parlor/server/TableManager.java b/src/java/com/threerings/parlor/server/TableManager.java index f4aa2e39..f9bb8477 100644 --- a/src/java/com/threerings/parlor/server/TableManager.java +++ b/src/java/com/threerings/parlor/server/TableManager.java @@ -344,10 +344,19 @@ public class TableManager } // remove the mapping by gameOid - _goidMap.remove(table.gameOid); // no-op if gameOid == 0 + Table removed = _goidMap.remove(table.gameOid); // no-op if gameOid == 0 // remove the table from the lobby object _tlobj.removeFromTables(table.tableId); + + // remove the listener too so we do not get a request later on to update the occupants or + // unmap this table + if (removed != null) { + DObject gameObj = _omgr.getObject(table.gameOid); + if (gameObj != null) { + gameObj.removeListener(_gameListener); + } + } } /**