diff --git a/src/main/java/li/cil/oc2/common/vm/VMDeviceBusAdapter.java b/src/main/java/li/cil/oc2/common/vm/VMDeviceBusAdapter.java index 26d7cac1..f4aefaf7 100644 --- a/src/main/java/li/cil/oc2/common/vm/VMDeviceBusAdapter.java +++ b/src/main/java/li/cil/oc2/common/vm/VMDeviceBusAdapter.java @@ -63,6 +63,8 @@ public final class VMDeviceBusAdapter { } public void unmount() { + globalContext.joinWorkerThread(); + for (final VMDevice device : deviceContexts.keySet()) { device.unmount(); } @@ -71,6 +73,8 @@ public final class VMDeviceBusAdapter { } public void suspend() { + globalContext.joinWorkerThread(); + for (final VMDevice device : deviceContexts.keySet()) { device.suspend(); } @@ -79,6 +83,8 @@ public final class VMDeviceBusAdapter { } public void addDevices(final Collection devices) { + globalContext.joinWorkerThread(); + for (final Device device : devices) { if (device instanceof final VMDevice vmDevice) { final ManagedVMContext context = deviceContexts.put(vmDevice, null); @@ -92,6 +98,8 @@ public final class VMDeviceBusAdapter { } public void removeDevices(final Collection devices) { + globalContext.joinWorkerThread(); + for (final Device device : devices) { if (device instanceof final VMDevice vmDevice) { vmDevice.unmount();