Prevent the continual attempts to postpone the start of a game that have caused our shutdowns to fail a few times now.
git-svn-id: svn+ssh://src.earth.threerings.net/vilya/trunk@8 c613c5cb-e716-0410-b11b-feb51c14d237
This commit is contained in:
@@ -736,8 +736,18 @@ public class GameManager extends PlaceManager
|
|||||||
// queue up a runnable to start the game which will allow the
|
// queue up a runnable to start the game which will allow the
|
||||||
// endGame() to propagate before we start things up
|
// endGame() to propagate before we start things up
|
||||||
if (_committedState == GameObject.IN_PLAY) {
|
if (_committedState == GameObject.IN_PLAY) {
|
||||||
|
if (_postponedStart) {
|
||||||
|
// We've already tried postponing once, doesn't do us any
|
||||||
|
// good to throw ourselves into a frenzy trying again.
|
||||||
|
Log.warning("Tried to postpone the start of a " +
|
||||||
|
"still-ending game multiple times " +
|
||||||
|
"[which=" + _gameobj.which() + "].");
|
||||||
|
_postponedStart = false;
|
||||||
|
return false;
|
||||||
|
}
|
||||||
Log.info("Postponing start of still-ending game " +
|
Log.info("Postponing start of still-ending game " +
|
||||||
"[which=" + _gameobj.which() + "].");
|
"[which=" + _gameobj.which() + "].");
|
||||||
|
_postponedStart = true;
|
||||||
CrowdServer.omgr.postRunnable(new Runnable() {
|
CrowdServer.omgr.postRunnable(new Runnable() {
|
||||||
public void run () {
|
public void run () {
|
||||||
startGame();
|
startGame();
|
||||||
@@ -746,6 +756,9 @@ public class GameManager extends PlaceManager
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Ah, good, not postponing.
|
||||||
|
_postponedStart = false;
|
||||||
|
|
||||||
// let the derived class do its pre-start stuff
|
// let the derived class do its pre-start stuff
|
||||||
gameWillStart();
|
gameWillStart();
|
||||||
|
|
||||||
@@ -1313,6 +1326,9 @@ public class GameManager extends PlaceManager
|
|||||||
/** TEMP: debugging the pending rating double release bug. */
|
/** TEMP: debugging the pending rating double release bug. */
|
||||||
protected RepeatCallTracker _gameEndTracker = new RepeatCallTracker();
|
protected RepeatCallTracker _gameEndTracker = new RepeatCallTracker();
|
||||||
|
|
||||||
|
/** Whether we have already postponed the start of the game. */
|
||||||
|
protected boolean _postponedStart = false;
|
||||||
|
|
||||||
/** A list of all currently active game managers. */
|
/** A list of all currently active game managers. */
|
||||||
protected static ArrayList<GameManager> _managers =
|
protected static ArrayList<GameManager> _managers =
|
||||||
new ArrayList<GameManager>();
|
new ArrayList<GameManager>();
|
||||||
|
|||||||
Reference in New Issue
Block a user