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 3f812b81f..7884be157 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/game/LauncherHelper.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/game/LauncherHelper.java @@ -30,7 +30,6 @@ import org.jackhuang.hmcl.launch.*; import org.jackhuang.hmcl.mod.CurseCompletionException; import org.jackhuang.hmcl.mod.CurseCompletionTask; import org.jackhuang.hmcl.mod.ModpackConfiguration; -import org.jackhuang.hmcl.setting.Accounts; import org.jackhuang.hmcl.setting.LauncherVisibility; import org.jackhuang.hmcl.setting.Profile; import org.jackhuang.hmcl.setting.VersionSetting; @@ -197,7 +196,7 @@ public final class LauncherHelper { })) .executor(); - launchingStepsPane.setExecutor(executor); + launchingStepsPane.setExecutor(executor, false); executor.addTaskListener(new TaskListener() { final AtomicInteger finished = new AtomicInteger(0); diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/ui/LeftPaneController.java b/HMCL/src/main/java/org/jackhuang/hmcl/ui/LeftPaneController.java index bc248e4d2..86283fa9b 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/ui/LeftPaneController.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/ui/LeftPaneController.java @@ -126,10 +126,7 @@ public final class LeftPaneController extends AdvancedListBox { AtomicReference region = new AtomicReference<>(); Modpack modpack = var.get("modpack"); TaskExecutor executor = ModpackHelper.getInstallTask(repository.getProfile(), modpackFile, modpack.getName(), modpack) - .with(Task.of(Schedulers.javafx(), () -> { - region.get().fireEvent(new DialogCloseEvent()); - checkAccount(); - })).executor(); + .with(Task.of(Schedulers.javafx(), this::checkAccount)).executor(); region.set(Controllers.taskDialog(executor, i18n("modpack.installing"), "")); executor.start(); })).start(); diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/ui/construct/TaskExecutorDialogPane.java b/HMCL/src/main/java/org/jackhuang/hmcl/ui/construct/TaskExecutorDialogPane.java index 36d3b42fe..be77cb637 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/ui/construct/TaskExecutorDialogPane.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/ui/construct/TaskExecutorDialogPane.java @@ -20,6 +20,7 @@ package org.jackhuang.hmcl.ui.construct; import com.jfoenix.concurrency.JFXUtilities; import com.jfoenix.controls.JFXButton; import com.jfoenix.controls.JFXProgressBar; +import javafx.application.Platform; import javafx.beans.binding.Bindings; import javafx.beans.property.StringProperty; import javafx.fxml.FXML; @@ -27,6 +28,7 @@ import javafx.scene.control.Label; import javafx.scene.layout.Region; import javafx.scene.layout.StackPane; import org.jackhuang.hmcl.task.TaskExecutor; +import org.jackhuang.hmcl.task.TaskListener; import org.jackhuang.hmcl.ui.FXUtils; import java.util.Optional; @@ -66,10 +68,23 @@ public class TaskExecutorDialogPane extends StackPane { } public void setExecutor(TaskExecutor executor) { + setExecutor(executor, true); + } + + public void setExecutor(TaskExecutor executor, boolean autoClose) { this.executor = executor; - if (executor != null) + if (executor != null) { taskListPane.setExecutor(executor); + + if (autoClose) + executor.addTaskListener(new TaskListener() { + @Override + public void onStop(boolean success, TaskExecutor executor) { + Platform.runLater(() -> fireEvent(new DialogCloseEvent())); + } + }); + } } public StringProperty titleProperty() { diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/upgrade/UpdateHandler.java b/HMCL/src/main/java/org/jackhuang/hmcl/upgrade/UpdateHandler.java index 05e026dd4..d903336e1 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/upgrade/UpdateHandler.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/upgrade/UpdateHandler.java @@ -106,7 +106,6 @@ public final class UpdateHandler { Region dialog = Controllers.taskDialog(executor, i18n("message.downloading"), "", null); thread(() -> { boolean success = executor.test(); - Platform.runLater(() -> dialog.fireEvent(new DialogCloseEvent())); if (success) { try { diff --git a/HMCLCore/src/main/java/org/jackhuang/hmcl/task/TaskExecutor.java b/HMCLCore/src/main/java/org/jackhuang/hmcl/task/TaskExecutor.java index eaff5d0d4..199e59045 100644 --- a/HMCLCore/src/main/java/org/jackhuang/hmcl/task/TaskExecutor.java +++ b/HMCLCore/src/main/java/org/jackhuang/hmcl/task/TaskExecutor.java @@ -257,8 +257,7 @@ public final class TaskExecutor { @Override public void run() { try { - if (Thread.currentThread().getName().contains("pool")) - Thread.currentThread().setName(task.getName()); + Thread.currentThread().setName(task.getName()); if (!executeTask(task)) success.set(false); } finally {