From 110b7cb06f1d8286a482b6a56c21d4b8dab85b84 Mon Sep 17 00:00:00 2001 From: huangyuhui Date: Fri, 8 Jun 2018 13:55:38 +0800 Subject: [PATCH] Should fix 'Never get to here' --- .../java/org/jackhuang/hmcl/game/LauncherHelper.java | 8 +++++++- .../src/main/java/org/jackhuang/hmcl/ui/Controllers.java | 3 ++- .../java/org/jackhuang/hmcl/launch/DefaultLauncher.java | 9 +-------- 3 files changed, 10 insertions(+), 10 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 2095e95c5..ef1ac22bb 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/game/LauncherHelper.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/game/LauncherHelper.java @@ -109,7 +109,13 @@ public final class LauncherHelper { .then(Task.of(Schedulers.javafx(), () -> emitStatus(LoadingState.LAUNCHING))) .then(Task.of(variables -> { variables.set("launcher", new HMCLGameLauncher( - repository, selectedVersion, variables.get("account"), setting.toLaunchOptions(profile.getGameDir()), new HMCLProcessListener(variables.get("account"), setting, gameVersion.isPresent()) + repository, + selectedVersion, + variables.get("account"), + setting.toLaunchOptions(profile.getGameDir()), + setting.getLauncherVisibility() == LauncherVisibility.CLOSE + ? null // Unnecessary to start listening to game process output when close launcher immediately after game launched. + : new HMCLProcessListener(variables.get("account"), setting, gameVersion.isPresent()) )); })) .then(variables -> { diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/ui/Controllers.java b/HMCL/src/main/java/org/jackhuang/hmcl/ui/Controllers.java index bc7d9e3fa..ca44cac28 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/ui/Controllers.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/ui/Controllers.java @@ -115,7 +115,8 @@ public final class Controllers { } public static void dialog(Region content) { - decorator.showDialog(content); + if (decorator != null) + decorator.showDialog(content); } public static void dialog(String text) { diff --git a/HMCLCore/src/main/java/org/jackhuang/hmcl/launch/DefaultLauncher.java b/HMCLCore/src/main/java/org/jackhuang/hmcl/launch/DefaultLauncher.java index d41355c5b..ae58142fc 100644 --- a/HMCLCore/src/main/java/org/jackhuang/hmcl/launch/DefaultLauncher.java +++ b/HMCLCore/src/main/java/org/jackhuang/hmcl/launch/DefaultLauncher.java @@ -273,9 +273,7 @@ public class DefaultLauncher extends Launcher { } ManagedProcess p = new ManagedProcess(process, rawCommandLine); - if (listener == null) - startMonitors(p); - else + if (listener != null) startMonitors(p, listener, daemon); return p; } @@ -313,11 +311,6 @@ public class DefaultLauncher extends Launcher { throw new PermissionException(); } - private void startMonitors(ManagedProcess managedProcess) { - managedProcess.addRelatedThread(Lang.thread(new StreamPump(managedProcess.getProcess().getInputStream()), "stdout-pump", true)); - managedProcess.addRelatedThread(Lang.thread(new StreamPump(managedProcess.getProcess().getErrorStream()), "stderr-pump", true)); - } - private void startMonitors(ManagedProcess managedProcess, ProcessListener processListener) { startMonitors(managedProcess, processListener, true); }