From a4ce490963605bc3fb3bb5013a9c6431f1196957 Mon Sep 17 00:00:00 2001 From: embeddedt <42941056+embeddedt@users.noreply.github.com> Date: Tue, 21 Feb 2023 22:35:29 -0500 Subject: [PATCH] Fix main thread not actually blocking until JEI thread finishes --- .../mixin/perf/async_jei/ClientLifecycleHandlerMixin.java | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/main/java/org/embeddedt/modernfix/mixin/perf/async_jei/ClientLifecycleHandlerMixin.java b/src/main/java/org/embeddedt/modernfix/mixin/perf/async_jei/ClientLifecycleHandlerMixin.java index 329b0018..6a1d664b 100644 --- a/src/main/java/org/embeddedt/modernfix/mixin/perf/async_jei/ClientLifecycleHandlerMixin.java +++ b/src/main/java/org/embeddedt/modernfix/mixin/perf/async_jei/ClientLifecycleHandlerMixin.java @@ -66,7 +66,10 @@ public class ClientLifecycleHandlerMixin { JEIReloadThread currentReloadThread = reloadThread; if(currentReloadThread != null) { currentReloadThread.requestStop(); - Minecraft.getInstance().managedBlock(currentReloadThread::isAlive); + if(currentReloadThread.isAlive()) { + ModernFix.LOGGER.warn("Blocking until JEI thread terminates"); + Minecraft.getInstance().managedBlock(() -> !currentReloadThread.isAlive()); + } reloadThread = null; } } @@ -74,7 +77,6 @@ public class ClientLifecycleHandlerMixin { private static int numReloads = 1; private void startJEIAsync(Runnable whenFinishedCb) { - ModernFix.LOGGER.info("JEI restart triggered. Waiting for previous thread to die."); cancelPreviousStart(); ModernFix.LOGGER.info("Starting new JEI thread."); JEIReloadThread newThread = new JEIReloadThread(() -> {