From 75327a0b40f520e351e558ef0efc8496ba6d2662 Mon Sep 17 00:00:00 2001 From: Michael Bayne Date: Wed, 24 Oct 2001 00:58:12 +0000 Subject: [PATCH] Scene manager now follows place manager example in requesting an unmap from the scene registry during its shutdown process. git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@545 542714f4-19e9-0310-aa3c-eee0fc999fb1 --- .../whirled/server/SceneManager.java | 18 +++++++++-- .../whirled/server/SceneRegistry.java | 30 ++++++++++++------- 2 files changed, 35 insertions(+), 13 deletions(-) diff --git a/src/java/com/threerings/whirled/server/SceneManager.java b/src/java/com/threerings/whirled/server/SceneManager.java index e93a99d4e..87514e4d4 100644 --- a/src/java/com/threerings/whirled/server/SceneManager.java +++ b/src/java/com/threerings/whirled/server/SceneManager.java @@ -1,5 +1,5 @@ // -// $Id: SceneManager.java,v 1.6 2001/10/11 04:07:54 mdb Exp $ +// $Id: SceneManager.java,v 1.7 2001/10/24 00:58:12 mdb Exp $ package com.threerings.whirled.server; @@ -38,7 +38,9 @@ public class SceneManager extends PlaceManager protected void didStartup () { super.didStartup(); - _screg.sceneManagerDidInit(this); + + // let the scene registry know that we're up and running + _screg.sceneManagerDidStart(this); // register a chat message handler because we want to support // chatting @@ -46,6 +48,18 @@ public class SceneManager extends PlaceManager registerMessageHandler(ChatService.SPEAK_REQUEST, handler); } + /** + * Called when we have shutdown. + */ + protected void didShutdown () + { + super.didShutdown(); + + // unregister ourselves with the scene registry + _screg.unmapSceneManager(this); + } + + // documentation inherited protected void toString (StringBuffer buf) { super.toString(buf); diff --git a/src/java/com/threerings/whirled/server/SceneRegistry.java b/src/java/com/threerings/whirled/server/SceneRegistry.java index c59f3c5f7..93c584cfd 100644 --- a/src/java/com/threerings/whirled/server/SceneRegistry.java +++ b/src/java/com/threerings/whirled/server/SceneRegistry.java @@ -1,5 +1,5 @@ // -// $Id: SceneRegistry.java,v 1.7 2001/10/24 00:38:54 mdb Exp $ +// $Id: SceneRegistry.java,v 1.8 2001/10/24 00:58:12 mdb Exp $ package com.threerings.whirled.server; @@ -153,6 +153,9 @@ public class SceneRegistry } } + /** + * Called when the scene resolution has completed successfully. + */ protected void processSuccessfulResolution (Scene scene) { // now that the scene is loaded, we can create a scene manager for @@ -180,6 +183,9 @@ public class SceneRegistry } } + /** + * Called if resolving the scene fails for some reason. + */ protected void processFailedResolution (int sceneId, Exception cause) { // alas things didn't work out, notify our penders @@ -197,7 +203,11 @@ public class SceneRegistry } } - protected void sceneManagerDidInit (SceneManager scmgr) + /** + * Called by the scene manager once it has started up (meaning that it + * has its place object and is ready to roll). + */ + protected void sceneManagerDidStart (SceneManager scmgr) { // register this scene manager in our table int sceneId = scmgr.getScene().getId(); @@ -222,17 +232,15 @@ public class SceneRegistry } /** - * Called when a place is destroyed. We clean up our extra scene - * information here. + * Called by the scene manager when it is shut down. */ - protected void placeWasDestroyed (PlaceManager pmgr) + protected void unmapSceneManager (SceneManager scmgr) { - super.placeWasDestroyed(pmgr); - - // if this is a scene manager, remove it from our scene table - if (pmgr instanceof SceneManager) { - SceneManager scmgr = (SceneManager)pmgr; - _scenemgrs.remove(scmgr.getScene().getId()); + if (_scenemgrs.remove(scmgr.getScene().getId()) == null) { + Log.warning("Requested to unmap unmapped scene manager " + + "[scmgr=" + scmgr + "]."); + } else { + Log.info("Unmapped scene manager " + scmgr + "."); } }