diff --git a/src/main/java/org/embeddedt/modernfix/mixin/perf/sync_executor_sleep/SyncExecutorMixin.java b/src/main/java/org/embeddedt/modernfix/mixin/perf/sync_executor_sleep/SyncExecutorMixin.java index 3879a442..5a980e59 100644 --- a/src/main/java/org/embeddedt/modernfix/mixin/perf/sync_executor_sleep/SyncExecutorMixin.java +++ b/src/main/java/org/embeddedt/modernfix/mixin/perf/sync_executor_sleep/SyncExecutorMixin.java @@ -19,12 +19,19 @@ public class SyncExecutorMixin { /** * Currently FML spins in driveOne while waiting for the modloading workers. We can improve this * by sleeping for 50ms at a time. + * + * Also, render FML splash screen unless there was a new task, rather than only when there was a new task * @author embeddedt * @reason improve CPU efficiency */ - @Inject(method = "driveOne", at = @At("HEAD"), remap = false) - private void sleepWhileNoTasks(CallbackInfoReturnable cir) { - if(tasks.isEmpty()) + @Overwrite(remap = false) + public boolean driveOne() { + final Runnable task = tasks.pollFirst(); + if (task != null) { + task.run(); + } else { LockSupport.parkNanos(PARK_TIME); + } + return task == null; } }