From f980fdc45a746d5c3fd3de4d2b98eaf22f7ca190 Mon Sep 17 00:00:00 2001 From: crschnick Date: Mon, 25 Dec 2023 15:40:31 +0000 Subject: [PATCH] Fix shutdown race condition --- .../xpipe/app/comp/store/StoreViewState.java | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/app/src/main/java/io/xpipe/app/comp/store/StoreViewState.java b/app/src/main/java/io/xpipe/app/comp/store/StoreViewState.java index 9d4d964d..690d112d 100644 --- a/app/src/main/java/io/xpipe/app/comp/store/StoreViewState.java +++ b/app/src/main/java/io/xpipe/app/comp/store/StoreViewState.java @@ -119,6 +119,11 @@ public class StoreViewState { public void onStoreAdd(DataStoreEntry... entry) { var l = Arrays.stream(entry).map(StoreEntryWrapper::new).peek(storeEntryWrapper -> storeEntryWrapper.update()).toList(); Platform.runLater(() -> { + // Don't update anything if we have already reset + if (INSTANCE == null) { + return; + } + synchronized (this) { allEntries.addAll(l); } @@ -158,6 +163,11 @@ public class StoreViewState { .toList(); } Platform.runLater(() -> { + // Don't update anything if we have already reset + if (INSTANCE == null) { + return; + } + synchronized (this) { allEntries.removeAll(l); } @@ -170,6 +180,11 @@ public class StoreViewState { var l = new StoreCategoryWrapper(category); l.update(); Platform.runLater(() -> { + // Don't update anything if we have already reset + if (INSTANCE == null) { + return; + } + synchronized (this) { categories.add(l); } @@ -191,6 +206,11 @@ public class StoreViewState { } Platform.runLater(() -> { + // Don't update anything if we have already reset + if (INSTANCE == null) { + return; + } + synchronized (this) { categories.remove(found.get()); }