From c37d91e476be0f39abe3aa4cb7a8abad9a781804 Mon Sep 17 00:00:00 2001 From: embeddedt <42941056+embeddedt@users.noreply.github.com> Date: Sun, 26 Mar 2023 09:17:03 -0400 Subject: [PATCH] Avoid fetching key state on background threads --- .../perf/async_jei/InputConstantsMixin.java | 19 +++++++++++++++++++ src/main/resources/modernfix.mixins.json | 1 + 2 files changed, 20 insertions(+) create mode 100644 src/main/java/org/embeddedt/modernfix/mixin/perf/async_jei/InputConstantsMixin.java diff --git a/src/main/java/org/embeddedt/modernfix/mixin/perf/async_jei/InputConstantsMixin.java b/src/main/java/org/embeddedt/modernfix/mixin/perf/async_jei/InputConstantsMixin.java new file mode 100644 index 00000000..add53d70 --- /dev/null +++ b/src/main/java/org/embeddedt/modernfix/mixin/perf/async_jei/InputConstantsMixin.java @@ -0,0 +1,19 @@ +package org.embeddedt.modernfix.mixin.perf.async_jei; + +import com.mojang.blaze3d.platform.InputConstants; +import com.mojang.blaze3d.systems.RenderSystem; +import org.lwjgl.glfw.GLFW; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Redirect; + +@Mixin(InputConstants.class) +public class InputConstantsMixin { + @Redirect(method = "isKeyDown", at = @At(value = "INVOKE", target = "Lorg/lwjgl/glfw/GLFW;glfwGetKey(JI)I")) + private static int offThreadKeyFetch(long win, int k) { + if(RenderSystem.isOnRenderThreadOrInit()) + return GLFW.glfwGetKey(win, k); + else + return 0; + } +} diff --git a/src/main/resources/modernfix.mixins.json b/src/main/resources/modernfix.mixins.json index f90ed5ce..9833178c 100644 --- a/src/main/resources/modernfix.mixins.json +++ b/src/main/resources/modernfix.mixins.json @@ -73,6 +73,7 @@ "perf.parallelize_model_loading.TransformationMatrixMixin", "perf.parallelize_model_loading.BooleanPropertyMixin", "perf.parallelize_model_loading.PropertyMixin", + "perf.async_jei.InputConstantsMixin", "perf.async_jei.IngredientListElementFactoryMixin", "perf.async_jei.ClientLifecycleHandlerMixin", "perf.async_jei.JeiStarterMixin",