Fix concurrent problems in TexturesLoader.Selector

This commit is contained in:
yushijinhun
2019-02-05 00:15:17 +08:00
parent 9298f5e030
commit 7cee25aab2

View File

@@ -20,6 +20,7 @@ package org.jackhuang.hmcl.ui.account;
import com.jfoenix.concurrency.JFXUtilities; import com.jfoenix.concurrency.JFXUtilities;
import com.jfoenix.controls.*; import com.jfoenix.controls.*;
import javafx.application.Platform;
import javafx.beans.binding.Bindings; import javafx.beans.binding.Bindings;
import javafx.beans.property.ListProperty; import javafx.beans.property.ListProperty;
import javafx.beans.property.ReadOnlyObjectProperty; import javafx.beans.property.ReadOnlyObjectProperty;
@@ -246,7 +247,7 @@ public class AddAccountPane extends StackPane {
private final CountDownLatch latch = new CountDownLatch(1); private final CountDownLatch latch = new CountDownLatch(1);
private GameProfile selectedProfile = null; private GameProfile selectedProfile = null;
{ public Selector() {
setStyle("-fx-padding: 8px;"); setStyle("-fx-padding: 8px;");
cancel.setText(i18n("button.cancel")); cancel.setText(i18n("button.cancel"));
@@ -265,6 +266,7 @@ public class AddAccountPane extends StackPane {
@Override @Override
public GameProfile select(YggdrasilService service, List<GameProfile> profiles) throws NoSelectedCharacterException { public GameProfile select(YggdrasilService service, List<GameProfile> profiles) throws NoSelectedCharacterException {
Platform.runLater(() -> {
for (GameProfile profile : profiles) { for (GameProfile profile : profiles) {
ImageView portraitView = new ImageView(); ImageView portraitView = new ImageView();
portraitView.setSmooth(false); portraitView.setSmooth(false);
@@ -278,8 +280,8 @@ public class AddAccountPane extends StackPane {
}); });
listBox.add(accountItem); listBox.add(accountItem);
} }
Controllers.dialog(this);
JFXUtilities.runInFX(() -> Controllers.dialog(this)); });
try { try {
latch.await(); latch.await();