diff --git a/JavaApp/src/main/java/net/kdt/pojavlaunch/JMinecraftVersionList.java b/JavaApp/src/main/java/net/kdt/pojavlaunch/JMinecraftVersionList.java index 4f85d5cb..98a757d1 100644 --- a/JavaApp/src/main/java/net/kdt/pojavlaunch/JMinecraftVersionList.java +++ b/JavaApp/src/main/java/net/kdt/pojavlaunch/JMinecraftVersionList.java @@ -21,6 +21,7 @@ public class JMinecraftVersionList { public Map downloads; public String id; public String inheritsFrom; + public JavaVersionInfo javaVersion; public DependentLibrary[] libraries; public String mainClass; public String minecraftArguments; @@ -31,7 +32,10 @@ public class JMinecraftVersionList { public String type; public String url; } - + public static class JavaVersionInfo { + public String component; + public int majorVersion; + } // Since 1.13 public static class Arguments { public Object[] game; diff --git a/JavaApp/src/main/java/net/kdt/pojavlaunch/Tools.java b/JavaApp/src/main/java/net/kdt/pojavlaunch/Tools.java index 6e6554cd..793109a7 100644 --- a/JavaApp/src/main/java/net/kdt/pojavlaunch/Tools.java +++ b/JavaApp/src/main/java/net/kdt/pojavlaunch/Tools.java @@ -79,6 +79,18 @@ public final class Tools public static final String LIBNAME_OPTIFINE = "optifine:OptiFine"; public static void launchMinecraft(MinecraftAccount profile, final JMinecraftVersionList.Version versionInfo) throws Throwable { + String javaVersion = System.getProperty("java.version"); + if (javaVersion.startsWith("1.")) { + javaVersion = javaVersion.substring(2); + } + int dotIndex = javaVersion.indexOf('.'); + if (dotIndex != -1) { + javaVersion = javaVersion.substring(0, dotIndex); + } + if (versionInfo.javaVersion != null && versionInfo.javaVersion.majorVersion > Integer.parseInt(javaVersion)) { + throw new UnsupportedOperationException("Minecraft " + versionInfo.id + " requires Java " + versionInfo.javaVersion.majorVersion + " in order to run. Please switch to Java " + versionInfo.javaVersion.majorVersion + " in launcher settings."); + } + String[] launchArgs = getMinecraftArgs(profile, versionInfo); // ctx.appendlnToLog("Minecraft Args: " + Arrays.toString(launchArgs)); diff --git a/JavaApp/src/main/java/net/kdt/pojavlaunch/uikit/UIKit.java b/JavaApp/src/main/java/net/kdt/pojavlaunch/uikit/UIKit.java index 55c10e70..93b8265e 100644 --- a/JavaApp/src/main/java/net/kdt/pojavlaunch/uikit/UIKit.java +++ b/JavaApp/src/main/java/net/kdt/pojavlaunch/uikit/UIKit.java @@ -89,12 +89,14 @@ public class UIKit { PLaunchApp.installMinecraft(versionPath); } - public static void callback_SurfaceViewController_launchMinecraft(int width, int height) { + public static void callback_SurfaceViewController_launchMinecraft(int width, int height, String rendererLibName) { MCOptionUtils.load(); MCOptionUtils.set("overrideWidth", Integer.toString(width)); MCOptionUtils.set("overrideHeight", Integer.toString(height)); MCOptionUtils.save(); + System.setProperty("cacio.managed.screensize", width + "x" + height); + System.setProperty("org.lwjgl.opengl.libname", rendererLibName); GLFW.internalChangeMonitorSize(width, height); CallbackBridge.mouseX = width / 2; diff --git a/Natives/AboutLauncherViewController.m b/Natives/AboutLauncherViewController.m index f8ccd93f..8dc04c7f 100644 --- a/Natives/AboutLauncherViewController.m +++ b/Natives/AboutLauncherViewController.m @@ -27,6 +27,7 @@ - (void)viewDidLoad { [super viewDidLoad]; + viewController = self; [self setTitle:@"About PojavLauncher"]; diff --git a/Natives/CustomControlsViewController.m b/Natives/CustomControlsViewController.m index 41923520..d089a579 100644 --- a/Natives/CustomControlsViewController.m +++ b/Natives/CustomControlsViewController.m @@ -34,6 +34,7 @@ int width; - (void)viewDidLoad { [super viewDidLoad]; + viewController = self; [self.navigationController setNavigationBarHidden:YES animated:YES]; [self setNeedsUpdateOfScreenEdgesDeferringSystemGestures]; diff --git a/Natives/JavaGUIViewController.m b/Natives/JavaGUIViewController.m index 383d3075..e6a1cb3a 100644 --- a/Natives/JavaGUIViewController.m +++ b/Natives/JavaGUIViewController.m @@ -67,6 +67,7 @@ void _CGDataProviderReleaseBytePointerCallback(void *info,const void *pointer) { - (void)viewDidLoad { [super viewDidLoad]; + viewController = self; [self.navigationController setNavigationBarHidden:YES animated:NO]; [self setNeedsUpdateOfScreenEdgesDeferringSystemGestures]; diff --git a/Natives/JavaLauncher.m b/Natives/JavaLauncher.m index 12f88347..f8173c4d 100644 --- a/Natives/JavaLauncher.m +++ b/Natives/JavaLauncher.m @@ -121,65 +121,6 @@ void init_migrateToPlist(char* prefKey, char* filename) { } } -void init_checkPlist() { - - if (!getPreference(@"resolution")) { - setPreference(@"resolution", @(100)); - } - - if (!getPreference(@"button_scale")) { - setPreference(@"button_scale", @(100)); - } - - if (!getPreference(@"selected_version")) { - setPreference(@"selected_version", @"1.7.10"); - } - - if (!getPreference(@"vertype_release")) { - setPreference(@"vertype_release", @YES); - } - - if (!getPreference(@"vertype_snapshot")) { - setPreference(@"vertype_snapshot", @NO); - } - - if (!getPreference(@"vertype_oldalpha")) { - setPreference(@"vertype_oldalpha", @NO); - } - - if (!getPreference(@"vertype_oldbeta")) { - setPreference(@"vertype_oldbeta", @NO); - } - - if (!getPreference(@"time_longPressTrigger")) { - setPreference(@"time_longPressTrigger", @(400)); - } - - if (!getPreference(@"default_ctrl")) { - setPreference(@"default_ctrl", @"default.json"); - } - - if (!getPreference(@"java_args")) { - setPreference(@"java_args", @""); - } - - if (!getPreference(@"java_home")) { - setPreference(@"java_home", @""); - } - - if (!getPreference(@"renderer")) { - setPreference(@"renderer", @""); - } - - if (!getPreference(@"option_warn")) { - setPreference(@"option_warn", @YES); - } - - if (!getPreference(@"local_warn")) { - setPreference(@"local_warn", @YES); - } -} - int launchJVM(int argc, char *argv[]) { char *homeDir; if (!started) { @@ -199,8 +140,6 @@ int launchJVM(int argc, char *argv[]) { homeDir = getenv("POJAV_HOME"); } - init_checkPlist(); - init_loadCustomEnv(); loadPreferences(); @@ -340,21 +279,19 @@ int launchJVM(int argc, char *argv[]) { snprintf(javaPath, 2048, "%s/bin/java", javaHome); snprintf(userDir, 2048, "-Duser.dir=%s/Documents/minecraft", getenv("HOME")); snprintf(userHome, 2048, "-Duser.home=%s/Documents", getenv("HOME")); - snprintf(rendererPath, 2048, "-Dorg.lwjgl.opengl.libname=%s", renderer); - + chdir(userDir); - + margv[margc++] = javaPath; margv[margc++] = "-XstartOnFirstThread"; margv[margc++] = "-Djava.system.class.loader=net.kdt.pojavlaunch.PojavClassLoader"; margv[margc++] = frameworkPath; margv[margc++] = userDir; margv[margc++] = userHome; - margv[margc++] = rendererPath; margv[margc++] = "-Dorg.lwjgl.system.allocator=system"; } else { setenv("RENDERER", renderer, 1); - debug("[Pre-init] GL4ES_LIBNAME has been set to %s", getenv("RENDERER")); + debug("[Pre-init] RENDERER has been set to %s", getenv("RENDERER")); } // Load java diff --git a/Natives/LauncherFAQViewController.m b/Natives/LauncherFAQViewController.m index 1b2217d0..f3bd0718 100644 --- a/Natives/LauncherFAQViewController.m +++ b/Natives/LauncherFAQViewController.m @@ -12,6 +12,7 @@ - (void)viewDidLoad { [super viewDidLoad]; + viewController = self; [self setTitle:@"Launcher FAQ"]; diff --git a/Natives/LauncherPreferences.h b/Natives/LauncherPreferences.h index 628d56b4..d59baec2 100644 --- a/Natives/LauncherPreferences.h +++ b/Natives/LauncherPreferences.h @@ -2,4 +2,5 @@ void loadPreferences(); id getPreference(NSString* key); +void setDefaultValueForPref(NSString* key, id value); void setPreference(NSString* key, id value); diff --git a/Natives/LauncherPreferences.m b/Natives/LauncherPreferences.m index 39d7e3bc..65826d16 100644 --- a/Natives/LauncherPreferences.m +++ b/Natives/LauncherPreferences.m @@ -10,24 +10,28 @@ void loadPreferences() { NSFileManager *fileManager = [NSFileManager defaultManager]; if (![fileManager fileExistsAtPath:prefPath]) { prefDict = [[NSMutableDictionary alloc] init]; - prefDict[@"resolution"] = @(100); - prefDict[@"button_scale"] = @(100); - prefDict[@"selected_version"] = @"1.7.10"; - prefDict[@"vertype_release"] = @YES; - prefDict[@"vertype_snapshot"] = @NO; - prefDict[@"vertype_oldalpha"] = @NO; - prefDict[@"vertype_oldbeta"] = @NO; - prefDict[@"time_longPressTrigger"] = @(400); - prefDict[@"default_ctrl"] = @"default.json"; - prefDict[@"java_args"] = @""; - prefDict[@"java_home"] = @""; - prefDict[@"renderer"] = @""; - prefDict[@"option_warn"] = @YES; - prefDict[@"local_warn"] = @YES; - [prefDict writeToFile:prefPath atomically:YES]; } else { prefDict = [NSMutableDictionary dictionaryWithContentsOfFile:prefPath]; } + + // set default value + setDefaultValueForPref(@"resolution", @(100)); + setDefaultValueForPref(@"button_scale", @(100)); + setDefaultValueForPref(@"selected_version", @"1.7.10"); + setDefaultValueForPref(@"vertype_release", @YES); + setDefaultValueForPref(@"vertype_snapshot", @NO); + setDefaultValueForPref(@"vertype_oldalpha", @NO); + setDefaultValueForPref(@"vertype_oldbeta", @NO); + setDefaultValueForPref(@"time_longPressTrigger", @(400)); + setDefaultValueForPref(@"default_ctrl", @"default.json"); + setDefaultValueForPref(@"java_args", @""); + setDefaultValueForPref(@"java_home", @""); + setDefaultValueForPref(@"renderer", @"libgl4es_114.dylib"); + setDefaultValueForPref(@"option_warn", @YES); + setDefaultValueForPref(@"local_warn", @YES); + setDefaultValueForPref(@"disable_gl4es_shaderconv", @NO); + + [prefDict writeToFile:prefPath atomically:YES]; } id getPreference(NSString* key) { @@ -38,6 +42,13 @@ id getPreference(NSString* key) { return object; } +void setDefaultValueForPref(NSString* key, id value) { + if (!prefDict[key]) { + prefDict[key] = value; + NSLog(@"[Pre-init] Set default value for key %@", value); + } +} + void setPreference(NSString* key, id value) { prefDict[key] = value; [prefDict writeToFile:prefPath atomically:YES]; diff --git a/Natives/LauncherPreferencesViewController.h b/Natives/LauncherPreferencesViewController.h index d4f43758..482e6cea 100644 --- a/Natives/LauncherPreferencesViewController.h +++ b/Natives/LauncherPreferencesViewController.h @@ -3,21 +3,3 @@ @interface LauncherPreferencesViewController : UIViewController @end - - - -/* - -void LauncherPreferences_load() { - -} - -void LauncherPreferences_save() { - -} - -void LauncherPreferences_change(char* key, char* value) { - -} - -*/ diff --git a/Natives/LauncherPreferencesViewController.m b/Natives/LauncherPreferencesViewController.m index 68a7e733..66bc65dd 100644 --- a/Natives/LauncherPreferencesViewController.m +++ b/Natives/LauncherPreferencesViewController.m @@ -9,6 +9,7 @@ #define JARGS 2 #define REND 3 #define JHOME 4 +#define NOSHADERCONV 5 @interface LauncherPreferencesViewController () { } @@ -22,6 +23,7 @@ - (void)viewDidLoad { [super viewDidLoad]; + viewController = self; [self setTitle:@"Preferences"]; @@ -60,7 +62,7 @@ buttonSizeSlider.minimumValue = 50.0; buttonSizeSlider.maximumValue = 500.0; buttonSizeSlider.continuous = YES; - buttonSizeSlider.value = ((NSNumber *) getPreference(@"button_scale")).floatValue; + buttonSizeSlider.value = [getPreference(@"button_scale") floatValue]; [scrollView addSubview:buttonSizeSlider]; UILabel *resolutionTextView = [[UILabel alloc] initWithFrame:CGRectMake(4.0, currY+=40.0, 0.0, 30.0)]; @@ -80,7 +82,7 @@ resolutionSlider.minimumValue = 25; resolutionSlider.maximumValue = 150; resolutionSlider.continuous = YES; - resolutionSlider.value = ((NSNumber *) getPreference(@"resolution")).intValue; + resolutionSlider.value = [getPreference(@"resolution") intValue]; [scrollView addSubview:resolutionSlider]; UILabel *jargsTextView = [[UILabel alloc] initWithFrame:CGRectMake(4.0, currY+=45.0, 0.0, 0.0)]; @@ -139,6 +141,18 @@ setPreference(@"option_warn", @NO); } + UILabel *noshaderconvTextView = [[UILabel alloc] initWithFrame:CGRectMake(4.0, currY+=40.0, 0.0, 0.0)]; + noshaderconvTextView.text = @"Disable gl4es 1.1.5 shaderconv"; + noshaderconvTextView.numberOfLines = 0; + [noshaderconvTextView sizeToFit]; + [scrollView addSubview:noshaderconvTextView]; + + UISwitch *noshaderconvSwitch = [[UISwitch alloc] initWithFrame:CGRectMake(width - 58.0, currY, 50.0, 30)]; + noshaderconvSwitch.tag = 103; + [noshaderconvSwitch setOn:[getPreference(@"disable_gl4es_shaderconv") boolValue] animated:NO]; + [noshaderconvSwitch addTarget:self action:@selector(switchChanged:) forControlEvents:UIControlEventValueChanged]; + [scrollView addSubview:noshaderconvSwitch]; + if (@available(iOS 14.0, *)) { // use UIMenu self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithImage:[[UIImage systemImageNamed:@"questionmark.circle.fill"] imageWithRenderingMode:UIImageRenderingModeAlwaysTemplate] style:UIBarButtonItemStyleDone target:self action:@selector(helpMenu)]; @@ -152,8 +166,10 @@ handler:^(__kindof UIAction * _Nonnull action) {[self helpAlertOpt:REND];}]; UIAction *option5 = [UIAction actionWithTitle:@"Java home" image:[[UIImage systemImageNamed:@"folder.fill"] imageWithRenderingMode:UIImageRenderingModeAlwaysTemplate] identifier:nil handler:^(__kindof UIAction * _Nonnull action) {[self helpAlertOpt:JHOME];}]; + UIAction *option6 = [UIAction actionWithTitle:@"Disable shaderconv" image:nil identifier:nil + handler:^(__kindof UIAction * _Nonnull action) {[self helpAlertOpt:NOSHADERCONV];}]; UIMenu *menu = [UIMenu menuWithTitle:@"" image:nil identifier:nil - options:UIMenuOptionsDisplayInline children:@[option1, option2, option3, option4, option5]]; + options:UIMenuOptionsDisplayInline children:@[option1, option2, option3, option4, option5, option6]]; self.navigationItem.rightBarButtonItem.action = nil; self.navigationItem.rightBarButtonItem.primaryAction = nil; self.navigationItem.rightBarButtonItem.menu = menu; @@ -169,6 +185,7 @@ setPreference(@"java_args", textField.text); } else if (textField.tag == 101) { setPreference(@"renderer", textField.text); + setenv("RENDERER", textField.text.UTF8String, 1); } else if (textField.tag == 102) { setPreference(@"java_home", textField.text); if (![textField.text containsString:@"java-8-openjdk"]) { @@ -190,6 +207,7 @@ UIAlertAction *jargs = [UIAlertAction actionWithTitle:@"Java arguments" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {[self helpAlertOpt:JARGS];}]; UIAlertAction *renderer = [UIAlertAction actionWithTitle:@"Renderer" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {[self helpAlertOpt:REND];}]; UIAlertAction *jhome = [UIAlertAction actionWithTitle:@"Java home" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {[self helpAlertOpt:JHOME];}]; + UIAlertAction *noshaderconv = [UIAlertAction actionWithTitle:@"Disable shaderconv" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {[self helpAlertOpt:NOSHADERCONV];}]; UIAlertAction *cancel = [UIAlertAction actionWithTitle:@"Cancel" style:UIAlertActionStyleCancel handler:nil]; [self setPopoverProperties:helpAlert.popoverPresentationController sender:(UIButton *)self.navigationItem.rightBarButtonItem]; [self presentViewController:helpAlert animated:YES completion:nil]; @@ -198,6 +216,7 @@ [helpAlert addAction:jargs]; [helpAlert addAction:renderer]; [helpAlert addAction:jhome]; + [helpAlert addAction:noshaderconv]; [helpAlert addAction:cancel]; } } @@ -216,10 +235,13 @@ message = @"This option allows you to edit arguments that can be passed to Minecraft. Not all arguments work with PojavLauncher, so be aware. This option also requires a restart of the launcher to take effect."; } else if(setting == REND) { title = @"Renderer"; - message = @"This option allows you to change the renderer in use. Typing 'libgl4es_115.dylib' may fix sheep and banner colors on 1.16 and allow 1.17 to be played, but will also not work with older versions. This option also requires a restart of the launcher to take effect."; + message = @"This option allows you to change the renderer in use. Typing 'libgl4es_115.dylib' may fix sheep and banner colors on 1.16 and allow 1.17 to be played, but will also not work with older versions."; } else if(setting == JHOME) { title = @"Java home"; message = @"This option allows you to change the Java executable directory. Typing '/usr/lib/jvm/java-16-openjdk' may allow you to play 1.17, however older versions and most versions of modded Minecraft, as well as the mod installer, will not work. This option also requires a restart of the launcher to take effect."; + } else if(setting == NOSHADERCONV) { + title = @"Disable shaderconv"; + message = @"This option allows you to disable the shader converter inside gl4es 1.1.5 in order to let ANGLE processes them directly. This option is experimental and should only be enabled when playing Minecraft 1.17 or above."; } UIAlertController *helpAlertOpt = [UIAlertController alertControllerWithTitle:title message:message preferredStyle:UIAlertControllerStyleActionSheet]; UIAlertAction *ok = [UIAlertAction actionWithTitle:@"OK" style:UIAlertActionStyleCancel handler:nil]; @@ -242,6 +264,17 @@ } } +- (void)switchChanged:(UISwitch *)sender { + switch (sender.tag) { + case 103: + setPreference(@"disable_gl4es_shaderconv", @(sender.isOn)); + break; + default: + NSLog(@"what does switch %ld for? implement me!", sender.tag); + break; + } +} + - (void)setPopoverProperties:(UIPopoverPresentationController *)controller sender:(UIButton *)sender { if (controller != nil) { controller.sourceView = sender; diff --git a/Natives/LauncherViewController.m b/Natives/LauncherViewController.m index 428f0534..fe7f902c 100644 --- a/Natives/LauncherViewController.m +++ b/Natives/LauncherViewController.m @@ -23,6 +23,7 @@ int versionSelectedAt = 0; - (void)viewDidLoad { [super viewDidLoad]; + viewController = self; [[UIApplication sharedApplication] setIdleTimerDisabled:YES]; [self setNeedsUpdateOfScreenEdgesDeferringSystemGestures]; [self setNeedsUpdateOfHomeIndicatorAutoHidden]; diff --git a/Natives/LoginViewController.m b/Natives/LoginViewController.m index f605d4b9..5b17041e 100644 --- a/Natives/LoginViewController.m +++ b/Natives/LoginViewController.m @@ -61,6 +61,7 @@ void loginAccountInput(UINavigationController *controller, int type, const char* - (void)viewDidLoad { [super viewDidLoad]; + viewController = self; [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(msaLoginCallback:) name:@"MSALoginCallback" object:nil]; diff --git a/Natives/SurfaceViewController.h b/Natives/SurfaceViewController.h index 4b70b7c4..d223a31b 100644 --- a/Natives/SurfaceViewController.h +++ b/Natives/SurfaceViewController.h @@ -1,9 +1,7 @@ #import #import "MGLKit.h" -MGLKView *glView; - -@interface SurfaceViewController : MGLKViewController +@interface SurfaceViewController : UIViewController // MGLKViewController // UIViewController diff --git a/Natives/SurfaceViewController.m b/Natives/SurfaceViewController.m index 1062cd96..66e5f190 100644 --- a/Natives/SurfaceViewController.m +++ b/Natives/SurfaceViewController.m @@ -65,6 +65,7 @@ float resolutionScale; - (void)viewDidLoad { [super viewDidLoad]; + viewController = self; [[UIApplication sharedApplication] setIdleTimerDisabled:YES]; [self setNeedsUpdateOfScreenEdgesDeferringSystemGestures]; [self setNeedsUpdateOfHomeIndicatorAutoHidden]; @@ -85,10 +86,15 @@ float resolutionScale; self.surfaceView = [[MGLKView alloc] initWithFrame:CGRectMake((width - width * resolutionScale) / 2, (height - height * resolutionScale) / 2, width * resolutionScale, height * resolutionScale)]; [self.view addSubview:self.surfaceView]; self.surfaceView.enableSetNeedsDisplay = NO; - self.surfaceView.delegate = self; - self.surfaceView.controller = self; self.surfaceView.transform = CGAffineTransformMakeScale(1.0 / resolutionScale, 1.0 / resolutionScale); + // Enable support for desktop GLSL + if ([getPreference(@"disable_gl4es_shaderconv") boolValue]) { + setenv("LIBGL_NOSHADERCONV", "1", 1); + eglBindAPI(EGL_OPENGL_API); + NSLog(@"eglBindAPI(EGL_OPENGL_API) error=%x", eglGetError()); + } + notchOffset = insets.left; width = width - notchOffset * 2; CGFloat buttonScale = ((NSNumber *) getPreference(@"button_scale")).floatValue / 100.0; @@ -199,8 +205,6 @@ float resolutionScale; [self executebtn_special_togglebtn:0]; - viewController = self; - self.surfaceView.drawableDepthFormat = MGLDrawableDepthFormat24; self.surfaceView.enableSetNeedsDisplay = YES; // [self setPreferredFramesPerSecond:1000]; diff --git a/Natives/UpdateHistoryViewController.m b/Natives/UpdateHistoryViewController.m index af371a40..3be4821a 100644 --- a/Natives/UpdateHistoryViewController.m +++ b/Natives/UpdateHistoryViewController.m @@ -12,6 +12,7 @@ - (void)viewDidLoad { [super viewDidLoad]; + viewController = self; [self setTitle:@"Update History"]; diff --git a/Natives/egl_bridge.h b/Natives/egl_bridge.h index 8a20ca5e..4fa1eed2 100644 --- a/Natives/egl_bridge.h +++ b/Natives/egl_bridge.h @@ -2,10 +2,9 @@ #ifndef USE_EGL -#import "MGLKit.h" +#import "SurfaceViewController.h" #include "jni.h" MGLContext *glContext; -MGLKViewController *viewController; #endif diff --git a/Natives/egl_bridge.m b/Natives/egl_bridge.m index 7a4bcb54..5520cf65 100644 --- a/Natives/egl_bridge.m +++ b/Natives/egl_bridge.m @@ -121,7 +121,7 @@ JNIEXPORT jboolean JNICALL Java_org_lwjgl_glfw_GLFW_nativeEglMakeCurrent(JNIEnv* #endif if (success == EGL_TRUE && GL4ES_HANDLE == NULL) { GL4ES_HANDLE = dlopen(getenv("RENDERER"), RTLD_GLOBAL); - debug("libGL=%p", GL4ES_HANDLE); + debug("%s=%p, error=%s", getenv("RENDERER"), GL4ES_HANDLE, dlerror()); gl4esInitialize_func *gl4esInitialize = (gl4esInitialize_func*) dlsym(GL4ES_HANDLE, "initialize_gl4es"); // debug("initialize_gl4es = %p", gl4esInitialize); @@ -162,20 +162,12 @@ JNIEXPORT jboolean JNICALL Java_org_lwjgl_glfw_GLFW_nativeEglTerminate(JNIEnv* e bool stopMakeCurrent; JNIEXPORT jboolean JNICALL Java_org_lwjgl_glfw_GLFW_nativeEglSwapBuffers(JNIEnv *env, jclass clazz) { - if (stopMakeCurrent) { - return JNI_FALSE; - } - jboolean result = (jboolean) eglSwapBuffers(potatoBridge.eglDisplay, eglGetCurrentSurface(EGL_DRAW)); if (!result) { mach_port_t tid = pthread_mach_thread_np(pthread_self()); EGLint error = eglGetError(); debug("eglSwapBuffers error=%x, thread=%d isMainThread=%d", error, (int)tid, mainThreadID == tid); - if (error == EGL_BAD_SURFACE) { - stopMakeCurrent = true; - closeGLFWWindow(); - } } return result; diff --git a/Natives/input_bridge_v3.m b/Natives/input_bridge_v3.m index 480e9975..d8e273f7 100644 --- a/Natives/input_bridge_v3.m +++ b/Natives/input_bridge_v3.m @@ -115,6 +115,8 @@ void sendData(int type, int i1, int i2, int i3, int i4) { } void closeGLFWWindow() { + NSLog(@"Closing GLFW window"); + /* jclass glfwClazz = (*runtimeJNIEnvPtr_JRE)->FindClass(runtimeJNIEnvPtr_JRE, "org/lwjgl/glfw/GLFW"); assert(glfwClazz != NULL); @@ -160,14 +162,17 @@ void callback_SurfaceViewController_launchMinecraft(int width, int height) { uikitBridgeClass = (*runtimeJNIEnvPtr_JRE)->FindClass(runtimeJNIEnvPtr_JRE, "net/kdt/pojavlaunch/uikit/UIKit"); assert(uikitBridgeClass != NULL); } - - jmethodID method = (*runtimeJNIEnvPtr_JRE)->GetStaticMethodID(runtimeJNIEnvPtr_JRE, uikitBridgeClass, "callback_SurfaceViewController_launchMinecraft", "(II)V"); + + jstring rendererLibStr = (*runtimeJNIEnvPtr_JRE)->NewStringUTF(runtimeJNIEnvPtr_JRE, getenv("RENDERER")); + + jmethodID method = (*runtimeJNIEnvPtr_JRE)->GetStaticMethodID(runtimeJNIEnvPtr_JRE, uikitBridgeClass, "callback_SurfaceViewController_launchMinecraft", "(IILjava/lang/String;)V"); assert(method != NULL); (*runtimeJNIEnvPtr_JRE)->CallStaticVoidMethod( runtimeJNIEnvPtr_JRE, uikitBridgeClass, method, - width, height + width, height, + rendererLibStr ); } diff --git a/Natives/ios_uikit_bridge.m b/Natives/ios_uikit_bridge.m index 371619a5..21165616 100644 --- a/Natives/ios_uikit_bridge.m +++ b/Natives/ios_uikit_bridge.m @@ -48,11 +48,9 @@ JNIEXPORT void JNICALL Java_net_kdt_pojavlaunch_uikit_UIKit_showError(JNIEnv* en NSString *message_o = @(message_c); (*env)->ReleaseStringUTFChars(env, title, title_c); (*env)->ReleaseStringUTFChars(env, message, message_c); - + dispatch_async(dispatch_get_main_queue(), ^{ - UIViewController *viewController = UIApplication.sharedApplication.windows.lastObject.rootViewController; - UIAlertController* alert = [UIAlertController alertControllerWithTitle:title_o message:message_o preferredStyle:UIAlertControllerStyleAlert]; diff --git a/Natives/resources/Frameworks/MetalANGLE.framework/Info.plist b/Natives/resources/Frameworks/MetalANGLE.framework/Info.plist index 73907dcf..216926c4 100644 Binary files a/Natives/resources/Frameworks/MetalANGLE.framework/Info.plist and b/Natives/resources/Frameworks/MetalANGLE.framework/Info.plist differ diff --git a/Natives/resources/Frameworks/MetalANGLE.framework/MetalANGLE b/Natives/resources/Frameworks/MetalANGLE.framework/MetalANGLE index 650030e4..b582d913 100755 Binary files a/Natives/resources/Frameworks/MetalANGLE.framework/MetalANGLE and b/Natives/resources/Frameworks/MetalANGLE.framework/MetalANGLE differ diff --git a/Natives/resources/Frameworks/libgl4es_115.dylib b/Natives/resources/Frameworks/libgl4es_115.dylib index 3ea73986..e14d5aad 100644 Binary files a/Natives/resources/Frameworks/libgl4es_115.dylib and b/Natives/resources/Frameworks/libgl4es_115.dylib differ diff --git a/Natives/resources/Frameworks/liblwjgl.dylib b/Natives/resources/Frameworks/liblwjgl.dylib old mode 100755 new mode 100644 index 6aec8308..ce79ff20 Binary files a/Natives/resources/Frameworks/liblwjgl.dylib and b/Natives/resources/Frameworks/liblwjgl.dylib differ diff --git a/Natives/utils.h b/Natives/utils.h index d1d08f95..8196be92 100644 --- a/Natives/utils.h +++ b/Natives/utils.h @@ -32,6 +32,8 @@ #define SPECIALBTN_SCROLLUP -7 #define SPECIALBTN_SCROLLDOWN -8 +UIViewController *viewController; + MGLSharegroup* sharegroup; void* GL4ES_HANDLE;