Skip to content

Commit d6a9360

Browse files
committed
Fix devices not being released when computer is destroyed while running.
1 parent ab69c69 commit d6a9360

File tree

1 file changed

+20
-23
lines changed

1 file changed

+20
-23
lines changed

src/main/java/li/cil/oc2/common/vm/AbstractVirtualMachine.java

Lines changed: 20 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -163,16 +163,7 @@ public void start() {
163163

164164
@Override
165165
public void stop() {
166-
switch (runState) {
167-
case LOADING_DEVICES -> setRunState(VMRunState.STOPPED);
168-
case RUNNING -> stopRunnerAndReset();
169-
}
170-
}
171-
172-
private void joinWorkerThread() {
173-
if (runner != null) {
174-
runner.join();
175-
}
166+
stopRunnerAndReset();
176167
}
177168

178169
public void pauseAndReload() {
@@ -190,19 +181,6 @@ public void resume(final boolean didDevicesChange) {
190181
state.rpcAdapter.resume(busController, didDevicesChange);
191182
}
192183

193-
protected void stopRunnerAndReset() {
194-
joinWorkerThread();
195-
setRunState(VMRunState.STOPPED);
196-
197-
state.board.setRunning(false);
198-
state.board.reset();
199-
state.rpcAdapter.reset();
200-
state.rpcAdapter.disposeDevices();
201-
state.vmAdapter.disposeDevices();
202-
203-
runner = null;
204-
}
205-
206184
public void tick() {
207185
busController.scan();
208186
setBusState(busController.getState());
@@ -284,8 +262,27 @@ protected void error(@Nullable final Component message, final boolean reset) {
284262
setBootError(message);
285263
}
286264

265+
protected void stopRunnerAndReset() {
266+
joinWorkerThread();
267+
setRunState(VMRunState.STOPPED);
268+
269+
state.board.setRunning(false);
270+
state.board.reset();
271+
state.rpcAdapter.reset();
272+
state.rpcAdapter.disposeDevices();
273+
state.vmAdapter.disposeDevices();
274+
275+
runner = null;
276+
}
277+
287278
///////////////////////////////////////////////////////////////////
288279

280+
private void joinWorkerThread() {
281+
if (runner != null) {
282+
runner.join();
283+
}
284+
}
285+
289286
private void load() {
290287
if (loadDevicesDelay > 0) {
291288
loadDevicesDelay--;

0 commit comments

Comments
 (0)