From 3c8689a3f113c5d866e9214757dda09a5b2c76b4 Mon Sep 17 00:00:00 2001 From: huanghongxun Date: Thu, 11 Oct 2018 13:51:37 +0800 Subject: [PATCH] Close launching progress dialog when game crashed before opening window --- .../jackhuang/hmcl/game/LauncherHelper.java | 51 +++++++++++-------- 1 file changed, 29 insertions(+), 22 deletions(-) diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/game/LauncherHelper.java b/HMCL/src/main/java/org/jackhuang/hmcl/game/LauncherHelper.java index ae13db7c9..88244c491 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/game/LauncherHelper.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/game/LauncherHelper.java @@ -454,6 +454,31 @@ public final class LauncherHelper { }); } + private void finishLaunch() { + switch (launcherVisibility) { + case HIDE_AND_REOPEN: + Platform.runLater(() -> { + Controllers.getStage().hide(); + emitStatus(LoadingState.DONE); + }); + break; + case CLOSE: + // Never come to here. + break; + case KEEP: + Platform.runLater(() -> { + emitStatus(LoadingState.DONE); + }); + break; + case HIDE: + Platform.runLater(() -> { + Controllers.getStage().close(); + emitStatus(LoadingState.DONE); + }); + break; + } + } + @Override public synchronized void onLog(String log, Log4jLevel level) { String newLog = log; @@ -483,28 +508,7 @@ public final class LauncherHelper { if (!lwjgl && (log.contains("LWJGL Version: ") || !detectWindow)) { lwjgl = true; - switch (launcherVisibility) { - case HIDE_AND_REOPEN: - Platform.runLater(() -> { - Controllers.getStage().hide(); - emitStatus(LoadingState.DONE); - }); - break; - case CLOSE: - // Never come to here. - break; - case KEEP: - Platform.runLater(() -> { - emitStatus(LoadingState.DONE); - }); - break; - case HIDE: - Platform.runLater(() -> { - Controllers.getStage().close(); - emitStatus(LoadingState.DONE); - }); - break; - } + finishLaunch(); } } @@ -513,6 +517,9 @@ public final class LauncherHelper { if (exitType == ExitType.INTERRUPTED) return; + // Game crashed before opening the game window. + if (!lwjgl) finishLaunch(); + if (exitType != ExitType.NORMAL && logWindow == null) Platform.runLater(() -> { logWindow = new LogWindow();