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;
}
}