From b167e89718c2cff829e20b6d88eb595a09d006b0 Mon Sep 17 00:00:00 2001 From: tomikun <60690056+alexytomi@users.noreply.github.com> Date: Wed, 10 Jun 2026 01:18:48 +0800 Subject: [PATCH] fix(SDL): Set SDL env vars for renderer --- .../kdt/pojavlaunch/MinecraftGLSurface.java | 1 - .../main/java/net/kdt/pojavlaunch/Tools.java | 2 +- .../net/kdt/pojavlaunch/utils/JREUtils.java | 22 ++++++++++++++++++- 3 files changed, 22 insertions(+), 3 deletions(-) diff --git a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/MinecraftGLSurface.java b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/MinecraftGLSurface.java index e0d343c1d..cdad8cd6d 100644 --- a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/MinecraftGLSurface.java +++ b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/MinecraftGLSurface.java @@ -129,7 +129,6 @@ public class MinecraftGLSurface extends View implements GrabListener, DirectGame motionListener = SDLActivity.getMotionListener(); if (mNativeSurface == null) throw new IllegalStateException("Surface not yet loaded, can't set native surface for SDLSurface"); SDLActivity.externalInitialize(activity, surface, ((ViewGroup)getParent()), mNativeSurface); - if (LauncherPreferences.PREF_GAMEPAD_FORCEDSDL_PASSTHRU) Tools.SDL.initializeControllerSubsystems(); } catch (UnsatisfiedLinkError ignored) { // Ignore because if SDL.setupJNI(); fails, SDL wasn't loaded. } diff --git a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/Tools.java b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/Tools.java index cb3a0b74a..cca6ba244 100644 --- a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/Tools.java +++ b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/Tools.java @@ -1925,7 +1925,7 @@ public final class Tools { return motionListener; } - static class SDL { + public static class SDL { /** * Initializes gamepad, joystick, and event subsystems. * This triggers {@link SDLControllerManager#pollInputDevices()} and subsequently disables diff --git a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/utils/JREUtils.java b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/utils/JREUtils.java index f90b8f6ac..27b64beaa 100644 --- a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/utils/JREUtils.java +++ b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/utils/JREUtils.java @@ -249,6 +249,7 @@ public class JREUtils { envMap.put("POJAVEXEC_EGL","libMobileGL.so"); } } + if(LauncherPreferences.PREF_BIG_CORE_AFFINITY) envMap.put("POJAV_BIG_CORE_AFFINITY", "1"); envMap.put("AWTSTUB_WIDTH", Integer.toString(CallbackBridge.windowWidth > 0 ? CallbackBridge.windowWidth : CallbackBridge.physicalWidth)); envMap.put("AWTSTUB_HEIGHT", Integer.toString(CallbackBridge.windowHeight > 0 ? CallbackBridge.windowHeight : CallbackBridge.physicalHeight)); @@ -313,8 +314,18 @@ public class JREUtils { JREUtils.relocateLibPath(runtime, runtimeHome); setJavaEnvironment(activity, runtimeHome); - final String graphicsLib = loadGraphicsLibrary(); + + // Has to run after SDL env vars are set + try { + Os.setenv("SDL_OPENGL_LIBRARY", graphicsLib, true); + Os.setenv("SDL_EGL_LIBRARY", NATIVE_LIB_DIR+"/"+Os.getenv("POJAVEXEC_EGL"), true); + } catch (ErrnoException e) { + Log.wtf("RENDER_LIBRARY", "Failed to load set SDL env vars"); + } + // Init must run after SDL env vars are set else they don't apply + if (LauncherPreferences.PREF_GAMEPAD_FORCEDSDL_PASSTHRU) Tools.SDL.initializeControllerSubsystems(); + List userArgs = getJavaArgs(activity, runtimeHome, userArgsString); //Remove arguments that can interfere with the good working of the launcher @@ -516,6 +527,15 @@ public class JREUtils { renderLibrary = "libng_gl4es.so"; break; } + // Has to run before dlopening mobileglues + if(LOCAL_RENDERER.equals("opengles_mobileglues")){ + try { + Os.setenv("MG_DIR_PATH", Tools.DIR_DATA + "/MobileGlues", true); + Os.setenv("POJAVEXEC_EGL",renderLibrary, true); + } catch (ErrnoException e) { + Log.wtf("RENDER_LIBRARY", "Failed to load MobileGlues settings"); + } + } if (!dlopen(renderLibrary) && !dlopen(findInLdLibPath(renderLibrary))) { Log.e("RENDER_LIBRARY","Failed to load renderer " + renderLibrary + ". Falling back to Krypton Wrapper");