Skip to content

Commit d9a6ae1

Browse files
fix: properly shutdown the thread
1 parent f9a1011 commit d9a6ae1

2 files changed

Lines changed: 7 additions & 21 deletions

File tree

common/src/main/java/com/sunekaer/sdrp/SDRP.java

Lines changed: 0 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,9 @@
11
package com.sunekaer.sdrp;
22

3-
import com.jagrosh.discordipc.entities.pipe.PipeStatus;
43
import com.sunekaer.sdrp.config.SDRPConfig;
54
import com.sunekaer.sdrp.discord.RPClient;
65
import dev.architectury.event.EventResult;
76
import dev.architectury.event.events.client.ClientGuiEvent;
8-
import dev.architectury.event.events.client.ClientLifecycleEvent;
97
import dev.architectury.event.events.common.EntityEvent;
108
import dev.architectury.hooks.client.screen.ScreenAccess;
119
import me.shedaniel.autoconfig.AutoConfig;
@@ -33,9 +31,6 @@ public static void init() {
3331

3432
RP_CLIENT = new RPClient();
3533

36-
ClientLifecycleEvent.CLIENT_STOPPING.register((minecraft) -> shutdownDiscordClient());
37-
Runtime.getRuntime().addShutdownHook(new Thread(SDRP::shutdownDiscordClient));
38-
3934
EntityEvent.ADD.register(SDRP::clientJoinEvent);
4035
ClientGuiEvent.INIT_POST.register(SDRP::screenEvent);
4136
}
@@ -99,19 +94,4 @@ public static void setDimension(Level level, Player player) {
9994
}
10095
}
10196
}
102-
103-
/**
104-
* Shutdown various threads
105-
*/
106-
private static void shutdownDiscordClient() {
107-
if (!RPClient.EXECUTOR_SERVICE.isShutdown()) {
108-
RPClient.EXECUTOR_SERVICE.shutdown();
109-
}
110-
111-
if (RP_CLIENT == null || RP_CLIENT.getClient() == null || RP_CLIENT.getClient().getStatus() != PipeStatus.CONNECTED) {
112-
return;
113-
}
114-
115-
RP_CLIENT.getClient().close();
116-
}
11797
}

common/src/main/java/com/sunekaer/sdrp/discord/RPClient.java

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,13 @@
2424
*/
2525
public class RPClient {
2626
private static final Logger LOGGER = LoggerFactory.getLogger(RPClient.class);
27-
public static final ScheduledExecutorService EXECUTOR_SERVICE = Executors.newSingleThreadScheduledExecutor();
27+
public static final ScheduledExecutorService EXECUTOR_SERVICE = Executors.newSingleThreadScheduledExecutor(factory -> {
28+
// Make sure we close with the game
29+
Thread thread = new Thread(factory);
30+
thread.setName("SDRP-Discord-RPC-Thread");
31+
thread.setDaemon(true);
32+
return thread;
33+
});
2834

2935
private IPCClient client = null;
3036
private RichPresence currentState = null;

0 commit comments

Comments
 (0)