From 77f8b7924ad61ebb8334d37a0a2ae2c8a297b400 Mon Sep 17 00:00:00 2001 From: nextdaydelivery <79922345+nxtdaydelivery@users.noreply.github.com> Date: Wed, 4 May 2022 18:36:37 +0100 Subject: change some files and start on scrolling --- .../oneconfig/lwjgl/plugin/ClassTransformer.java | 4 +-- .../lwjgl/plugin/Lwjgl2FunctionProvider.java | 39 ++++++++++++++++++++++ 2 files changed, 41 insertions(+), 2 deletions(-) create mode 100644 src/main/java/cc/polyfrost/oneconfig/lwjgl/plugin/Lwjgl2FunctionProvider.java (limited to 'src/main/java/cc/polyfrost/oneconfig/lwjgl/plugin') diff --git a/src/main/java/cc/polyfrost/oneconfig/lwjgl/plugin/ClassTransformer.java b/src/main/java/cc/polyfrost/oneconfig/lwjgl/plugin/ClassTransformer.java index c34f3b8..858d615 100644 --- a/src/main/java/cc/polyfrost/oneconfig/lwjgl/plugin/ClassTransformer.java +++ b/src/main/java/cc/polyfrost/oneconfig/lwjgl/plugin/ClassTransformer.java @@ -23,11 +23,11 @@ public class ClassTransformer implements IClassTransformer { InsnList list = new InsnList(); list.add(new VarInsnNode(Opcodes.LLOAD, 0)); - list.add(new TypeInsnNode(Opcodes.NEW, "cc/polyfrost/oneconfig/lwjgl/Lwjgl2FunctionProvider")); + list.add(new TypeInsnNode(Opcodes.NEW, "cc/polyfrost/oneconfig/lwjgl/plugin/Lwjgl2FunctionProvider")); list.add(new InsnNode(Opcodes.DUP)); list.add(new MethodInsnNode( Opcodes.INVOKESPECIAL, - "cc/polyfrost/oneconfig/lwjgl/Lwjgl2FunctionProvider", + "cc/polyfrost/oneconfig/lwjgl/plugin/Lwjgl2FunctionProvider", "", "()V", false diff --git a/src/main/java/cc/polyfrost/oneconfig/lwjgl/plugin/Lwjgl2FunctionProvider.java b/src/main/java/cc/polyfrost/oneconfig/lwjgl/plugin/Lwjgl2FunctionProvider.java new file mode 100644 index 0000000..4cef17c --- /dev/null +++ b/src/main/java/cc/polyfrost/oneconfig/lwjgl/plugin/Lwjgl2FunctionProvider.java @@ -0,0 +1,39 @@ +package cc.polyfrost.oneconfig.lwjgl.plugin; + +import org.lwjgl.opengl.GLContext; +import org.lwjgl.system.FunctionProvider; + +import java.lang.reflect.Method; +import java.nio.ByteBuffer; + +/** + * Taken from LWJGLTwoPointFive under The Unlicense + * https://github.com/DJtheRedstoner/LWJGLTwoPointFive/blob/master/LICENSE/ + */ +public class Lwjgl2FunctionProvider implements FunctionProvider { + + private final Method m_getFunctionAddress; + + public Lwjgl2FunctionProvider() { + try { + m_getFunctionAddress = GLContext.class.getDeclaredMethod("getFunctionAddress", String.class); + m_getFunctionAddress.setAccessible(true); + } catch (Exception e) { + throw new RuntimeException(e); + } + } + + @Override + public long getFunctionAddress(CharSequence functionName) { + try { + return (long) m_getFunctionAddress.invoke(null, functionName.toString()); + } catch (Exception e) { + throw new RuntimeException(e); + } + } + + @Override + public long getFunctionAddress(ByteBuffer byteBuffer) { + throw new UnsupportedOperationException(); + } +} \ No newline at end of file -- cgit