From 77370a01ead42ecb40decd003e1a181f1a892abe Mon Sep 17 00:00:00 2001 From: Duy Tran Khanh Date: Fri, 16 Sep 2022 17:43:53 +0700 Subject: [PATCH] Self-controlled Jetsam limit for unsandboxed env --- Natives/SurfaceViewController.m | 17 +++++++++++++++++ entitlements.xml | 4 ++++ entitlements_ipa.xml | 4 ++++ 3 files changed, 25 insertions(+) diff --git a/Natives/SurfaceViewController.m b/Natives/SurfaceViewController.m index 1d9fbf7b..1b5d582b 100644 --- a/Natives/SurfaceViewController.m +++ b/Natives/SurfaceViewController.m @@ -21,6 +21,9 @@ #include "glfw_keycodes.h" #include "utils.h" +int memorystatus_control(uint32_t command, int32_t pid, uint32_t flags, void *buffer, size_t buffersize); +#define MEMORYSTATUS_CMD_SET_JETSAM_TASK_LIMIT 6 + // Debugging only // #define DEBUG_VISIBLE_TEXT_FIELD // #define DEBUG_VISIBLE_TOUCH @@ -401,11 +404,25 @@ self.view.frame.size.width * 0.3 - 36.0 * 0.7, self.view.frame.size.height)]; */ // [self setPreferredFramesPerSecond:1000]; + [self updateJetsamControl]; [self updatePreferenceChanges]; [self executebtn_special_togglebtn:0]; [self launchMinecraft]; } +- (void)updateJetsamControl { + if (!getEntitlementValue(@"com.apple.private.memorystatus")) { + return; + } + // More 1024MB is necessary for other memory regions (native, Java GC, etc.) + int limit = [getPreference(@"allocated_memory") intValue] + 1024; + if (memorystatus_control(MEMORYSTATUS_CMD_SET_JETSAM_TASK_LIMIT, getpid(), limit, NULL, 0) == -1) { + NSLog(@"Failed to set Jetsam task limit: error: %s", strerror(errno)); + } else { + NSLog(@"Successfully set Jetsam task limit"); + } +} + - (void)updatePreferenceChanges { self.mouseSpeed = [getPreference(@"mouse_speed") floatValue] / 100.0; slideableHotbar = [getPreference(@"slideable_hotbar") boolValue]; diff --git a/entitlements.xml b/entitlements.xml index 0f64cd0b..c6d527b8 100644 --- a/entitlements.xml +++ b/entitlements.xml @@ -19,5 +19,9 @@ dynamic-codesigning + + + com.apple.private.memorystatus + diff --git a/entitlements_ipa.xml b/entitlements_ipa.xml index 66e11cbd..217ba4f1 100644 --- a/entitlements_ipa.xml +++ b/entitlements_ipa.xml @@ -13,6 +13,10 @@ com.apple.private.mobileinstall.upgrade-enabled + + com.apple.private.memorystatus + + com.apple.private.security.no-container