From 8d3ce1d573a0def6045196eb1c812f9324136b48 Mon Sep 17 00:00:00 2001 From: isXander Date: Sun, 6 Aug 2023 23:55:19 +0100 Subject: [PATCH] =?UTF-8?q?=F0=9F=90=9B=20Potentially=20resolve=20client?= =?UTF-8?q?=20hang=20on=20shutdown=20issue=20(relates=20to=20#125)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/dev/isxander/controlify/Controlify.java | 4 ++++ .../dev/isxander/controlify/hid/ControllerHIDService.java | 7 +++++++ 2 files changed, 11 insertions(+) diff --git a/src/main/java/dev/isxander/controlify/Controlify.java b/src/main/java/dev/isxander/controlify/Controlify.java index a158063..998388c 100644 --- a/src/main/java/dev/isxander/controlify/Controlify.java +++ b/src/main/java/dev/isxander/controlify/Controlify.java @@ -31,6 +31,7 @@ import dev.isxander.controlify.utils.Log; import dev.isxander.controlify.utils.ToastUtils; import dev.isxander.controlify.virtualmouse.VirtualMouseHandler; import dev.isxander.controlify.wireless.LowBatteryNotifier; +import net.fabricmc.fabric.api.client.event.lifecycle.v1.ClientLifecycleEvents; import net.fabricmc.fabric.api.client.event.lifecycle.v1.ClientTickEvents; import net.fabricmc.fabric.api.client.networking.v1.ClientPlayConnectionEvents; import net.fabricmc.fabric.api.client.networking.v1.ClientPlayNetworking; @@ -105,6 +106,9 @@ public class Controlify implements ControlifyApi { } ClientTickEvents.START_CLIENT_TICK.register(this::tick); + ClientLifecycleEvents.CLIENT_STOPPING.register(minecraft -> { + controllerHIDService().stop(); + }); // listen for new controllers GLFW.glfwSetJoystickCallback((jid, event) -> { diff --git a/src/main/java/dev/isxander/controlify/hid/ControllerHIDService.java b/src/main/java/dev/isxander/controlify/hid/ControllerHIDService.java index 5571ef5..05c2471 100644 --- a/src/main/java/dev/isxander/controlify/hid/ControllerHIDService.java +++ b/src/main/java/dev/isxander/controlify/hid/ControllerHIDService.java @@ -47,6 +47,13 @@ public class ControllerHIDService { } } + public void stop() { + if (!disabled && services != null) { + services.shutdown(); + disabled = true; + } + } + public ControllerHIDInfo fetchType(int jid) { ControllerHIDInfo info; try {