diff --git a/src/main/java/forge/control/FControl.java b/src/main/java/forge/control/FControl.java index f1b3b93c18f..d762cf99092 100644 --- a/src/main/java/forge/control/FControl.java +++ b/src/main/java/forge/control/FControl.java @@ -375,6 +375,8 @@ public enum FControl { game.getAction().checkGameOverCondition(); else game.isGameOver(); // this is synchronized method - it's used to make Game-0 thread see changes made here + + playbackControl.onGameStopRequested(); } private InputQueue inputQueue; diff --git a/src/main/java/forge/control/FControlGamePlayback.java b/src/main/java/forge/control/FControlGamePlayback.java index b620f22a6b2..2bee12a7a04 100644 --- a/src/main/java/forge/control/FControlGamePlayback.java +++ b/src/main/java/forge/control/FControlGamePlayback.java @@ -134,8 +134,15 @@ public class FControlGamePlayback extends IGameEventVisitor.Base { } + public void onGameStopRequested() { + paused.set(false); + if ( gameThreadPauser.getNumberWaiting() != 0) + releaseGameThread(); + } + private void releaseGameThread() { // just need to run another thread through the barrier... not edt preferrably :) + fc.getObservedGame().getAction().invoke( new Runnable() { @Override public void run() {