Various fixes, some cleanup

Fixes:
- dlopen gets hooked no matter if installed in /Applications or container
- Jailbroken IPA installation always looked for /usr/lib/jvm instead of the internal one
- Metal returned 0 physical devices, caused all renderers to be broken
- Zink renderer tried to load VirGL stuff
This commit is contained in:
khanhduytran0 committed 2022-09-11 21:58:11 +07:00
1 parent dc089a29f5
commit c10e0af8ff
9 files changed
+22 -16

No files matched your search

+2 -2
View File
@@ -99,7 +99,7 @@ void init_loadCustomJvmFlags() {
}
NSString* environmentFailsafes(int minVersion) {
NSString *jvmPath = getenv("POJAV_DETECTEDJB") ? @"/usr/lib/jvm" : [NSString stringWithFormat:@"%s/jvm", getenv("BUNDLE_PATH")];
NSString *jvmPath = getenv("POJAV_PREFER_EXTERNAL_JRE") ? @"/usr/lib/jvm" : [NSString stringWithFormat:@"%s/jvm", getenv("BUNDLE_PATH")];
NSString *javaHome = nil;
NSString *jre8Path = [NSString stringWithFormat:@"%@/java-8-openjdk", jvmPath];
@@ -130,7 +130,7 @@ int launchJVM(NSString *username, id launchTarget, int width, int height, int mi
NSString *javaHome_pre = getPreference(@"java_home");
if (![javaHome_pre hasPrefix:@"/"]) {
javaHome_pre = [NSString stringWithFormat:@"%s/jvm/%@", getenv("POJAV_DETECTEDJB") ? "/usr/lib" : getenv("BUNDLE_PATH"), javaHome_pre];
javaHome_pre = [NSString stringWithFormat:@"%s/jvm/%@", getenv("POJAV_PREFER_EXTERNAL_JRE") ? "/usr/lib" : getenv("BUNDLE_PATH"), javaHome_pre];
}
// We handle unset JAVA_HOME right there
-4
View File
@@ -1,9 +1,5 @@
#import <UIKit/UIKit.h>
#define JRE8_HOME_JB @"/usr/lib/jvm/java-8-openjdk"
#define JRE16_HOME_JB @"/usr/lib/jvm/java-16-openjdk"
#define JRE17_HOME_JB @"/usr/lib/jvm/java-17-openjdk"
void loadPreferences(BOOL reset);
id getPreference(NSString* key);
NSMutableDictionary* getDictionary(NSString *type);
+1 -1
View File
@@ -116,7 +116,7 @@ void loadPreferences(BOOL reset) {
setDefaultValueForPref(envPrefDict, @"allocated_memory", [NSNumber numberWithFloat:roundf(([[NSProcessInfo processInfo] physicalMemory] / 1048576) * 0.25)]);
setDefaultValueForPref(prefDict, @"debug_logging", @(CONFIG_RELEASE != 1));
setDefaultValueForPref(prefDict, @"arccapes_enable", @YES);
setDefaultValueForPref(envPrefDict, @"java_home", @"");
setDefaultValueForPref(envPrefDict, @"java_home", @"java-8-openjdk");
setDefaultValueForPref(envPrefDict, @"renderer", @"auto");
fillDefaultWarningDict();
setDefaultValueForPref(prefDict, @"a7_allow", @NO);
@@ -1,10 +1,5 @@
#import <UIKit/UIKit.h>
#define JRE8_NAME_JB @"Java 8"
#define JRE16_NAME_JB @"Java 16"
#define JRE17_NAME_JB @"Java 17"
#define JRE8_NAME_SB @"Java 8 (sandbox)"
@interface LauncherPreferencesViewController2 : UITableViewController<UITextFieldDelegate>
@end
+2 -2
View File
@@ -226,11 +226,11 @@ jboolean pojavInit_OpenGL() {
NSString *renderer = @(getenv("POJAV_RENDERER"));
JNI_LWJGL_changeRenderer(renderer.UTF8String);
BOOL isAuto = [renderer isEqualToString:@"auto"];
if ([renderer isEqualToString:@"libOSMesa.8.dylib"]) {
/* if ([renderer isEqualToString:@"libOSMesa.8.dylib"]) {
config_renderer = RENDERER_VIRGL;
setenv("GALLIUM_DRIVER", "virpipe", 1);
loadSymbolsVirGL();
} else if (isAuto || [renderer isEqualToString:@ RENDERER_NAME_GL4ES]) {
} else */ if (isAuto || [renderer isEqualToString:@ RENDERER_NAME_GL4ES]) {
config_renderer = RENDERER_MTL_ANGLE;
setenv("POJAV_RENDERER", RENDERER_NAME_GL4ES, 1);
loadSymbols();
+5
View File
@@ -116,6 +116,11 @@ void init_logDeviceAndVer(char *argument) {
regLog("[Pre-Init] %s with iOS %s (Unjailbroken)", deviceHardware, deviceSoftware);
}
NSString *jvmPath = [NSString stringWithFormat:@"%s/jvm", getenv("BUNDLE_PATH")];
if (![fm fileExistsAtPath:jvmPath]) {
setenv("POJAV_PREFER_EXTERNAL_JRE", "1", 1);
}
regLog("[Pre-init] Entitlements availability:");
printEntitlementAvailability(@"com.apple.developer.kernel.extended-virtual-addressing");
printEntitlementAvailability(@"com.apple.developer.kernel.increased-memory-limit");
+1 -1
View File
@@ -26,7 +26,7 @@ int hooked_open(const char *path, int oflag, ...) {
}
void init_hookFunctions() {
if (getenv("POJAV_DETECTEDJB")) {
if (getenv("POJAV_PREFER_EXTERNAL_JRE")) {
// In this environment, libawt_xawt is not available/X11 only.
// hook dlopen to use our libawt_xawt
rebind_symbols((struct rebinding[1]){{"dlopen", hooked_dlopen, (void *)&orig_dlopen}}, 1);
+1 -1
View File
@@ -47,7 +47,7 @@
#define RENDERER_NAME_GL4ES "libgl4es_114.dylib"
#define RENDERER_NAME_MTL_ANGLE "libtinygl4angle.dylib"
#define RENDERER_NAME_VK_ZINK "libOSMesa.8.dylib"
#define RENDERER_NAME_VK_ZINK "libOSMesaOverride.dylib"
#define SPECIALBTN_KEYBOARD -1
#define SPECIALBTN_TOGGLECTRL -2
+10
View File
@@ -16,5 +16,15 @@
<!-- Disable sandbox so that PojavLauncher can enable JIT by itself -->
<key>com.apple.private.security.no-container</key>
<true/>
<!-- Required if sandbox is disabled -->
<key>com.apple.security.iokit-user-client-class</key>
<array>
<string>IOSurfaceRootUserClient</string>
<string>AGXDeviceUserClient</string>
<string>AGXSharedUserClient</string>
<string>AGXCommandQueue</string>
<string>AGXDevice</string>
</array>
</dict>
</plist>