From 98ecda573cbfa572b1524859126f1fda80f71053 Mon Sep 17 00:00:00 2001 From: Duy Tran Khanh Date: Sun, 8 Aug 2021 06:56:17 +0700 Subject: [PATCH 1/4] Fixes #253: symlink for libawt_headless.dylib --- Makefile | 8 ++++++-- Natives/CMakeLists.txt | 8 ++++---- 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/Makefile b/Makefile index ce39ccf3..ba29b101 100644 --- a/Makefile +++ b/Makefile @@ -144,6 +144,7 @@ package: @if [ '$(IOS)' = '0' ]; then \ cp -R Natives/resources/* Natives/build/PojavLauncher.app/ || exit 1; \ cp Natives/build/libawt_xawt.dylib Natives/build/PojavLauncher.app/Frameworks/ || exit 1; \ + ( cd Natives/build/PojavLauncher.app/Frameworks; ln -sf libawt_xawt.dylib libawt_headless.dylib ) || exit 1; \ cp Natives/build/libpojavexec.dylib Natives/build/PojavLauncher.app/Frameworks/ || exit 1; \ mkdir Natives/build/PojavLauncher.app/{libs,libs_caciocavallo}; \ cp JavaApp/local_out/launcher.jar Natives/build/PojavLauncher.app/libs/launcher.jar || exit 1; \ @@ -161,6 +162,7 @@ package: cp -R Natives/Info.plist Natives/build/PojavLauncher.app/Info.plist || exit 1;\ cp -R Natives/PkgInfo Natives/build/PojavLauncher.app/PkgInfo || exit 1; \ cp Natives/build/libawt_xawt.dylib Natives/build/PojavLauncher.app/Frameworks/ || exit 1; \ + ( cd Natives/build/PojavLauncher.app/Frameworks; ln -sf libawt_xawt.dylib libawt_headless.dylib ) || exit 1; \ cp Natives/build/libpojavexec.dylib Natives/build/PojavLauncher.app/Frameworks/ || exit 1; \ cp -R Natives/resources/* Natives/build/PojavLauncher.app/ || exit 1; \ cp -R JavaApp/libs Natives/build/PojavLauncher.app/libs || exit 1; \ @@ -210,14 +212,14 @@ deploy: Natives/build/PojavLauncher.app/PojavLauncher \ JavaApp/local_out/launcher.jar \ root@$(DEVICE_IP):/var/tmp; \ - ssh root@$(DEVICE_IP) -p $(DEVICE_PORT) -t "mv /var/tmp/libawt_xawt.dylib /Applications/PojavLauncher.app/Frameworks/libawt_xawt.dylib && mv /var/tmp/libpojavexec.dylib /Applications/PojavLauncher.app/Frameworks/libpojavexec.dylib && mv /var/tmp/PojavLauncher /Applications/PojavLauncher.app/PojavLauncher && mv /var/tmp/launcher.jar /Applications/PojavLauncher.app/libs/launcher.jar && killall PojavLauncher"; \ + ssh root@$(DEVICE_IP) -p $(DEVICE_PORT) -t "mv /var/tmp/libawt_xawt.dylib /Applications/PojavLauncher.app/Frameworks/libawt_xawt.dylib && mv /var/tmp/libpojavexec.dylib /Applications/PojavLauncher.app/Frameworks/libpojavexec.dylib && mv /var/tmp/PojavLauncher /Applications/PojavLauncher.app/PojavLauncher && mv /var/tmp/launcher.jar /Applications/PojavLauncher.app/libs/launcher.jar && cd /Application/PojavLauncher.app/Frameworks && ln -sf libawt_xawt.dylib libawt_headless.dylib && killall PojavLauncher"; \ else \ scp -o "StrictHostKeyChecking no" -o "UserKnownHostsFile=/dev/null" Natives/build/libpojavexec.dylib \ Natives/build/libawt_xawt.dylib \ Natives/build/PojavLauncher.app/PojavLauncher \ JavaApp/local_out/launcher.jar \ root@$(DEVICE_IP):/var/tmp; \ - ssh root@$(DEVICE_IP) -t "mv /var/tmp/libawt_xawt.dylib /Applications/PojavLauncher.app/Frameworks/libawt_xawt.dylib && mv /var/tmp/libpojavexec.dylib /Applications/PojavLauncher.app/Frameworks/libpojavexec.dylib && mv /var/tmp/PojavLauncher /Applications/PojavLauncher.app/PojavLauncher && mv /var/tmp/launcher.jar /Applications/PojavLauncher.app/libs/launcher.jar && killall PojavLauncher"; \ + ssh root@$(DEVICE_IP) -t "mv /var/tmp/libawt_xawt.dylib /Applications/PojavLauncher.app/Frameworks/libawt_xawt.dylib && mv /var/tmp/libpojavexec.dylib /Applications/PojavLauncher.app/Frameworks/libpojavexec.dylib && mv /var/tmp/PojavLauncher /Applications/PojavLauncher.app/PojavLauncher && mv /var/tmp/launcher.jar /Applications/PojavLauncher.app/libs/launcher.jar && cd /Application/PojavLauncher.app/Frameworks && ln -sf libawt_xawt.dylib libawt_headless.dylib && killall PojavLauncher"; \ fi; \ else \ echo 'You need to run '\''export DEVICE_IP='\'' to use make deploy.'; \ @@ -229,6 +231,8 @@ deploy: sudo cp Natives/build/PojavLauncher.app/PojavLauncher /Applications/PojavLauncher.app/PojavLauncher; \ sudo cp Natives/build/libawt_xawt.dylib /Applications/PojavLauncher.app/Frameworks/; \ sudo cp Natives/build/libpojavexec.dylib /Applications/PojavLauncher.app/Frameworks/; \ + cd /Applications/PojavLauncher.app/Frameworks; \ + sudo ln -sf libawt_xawt.dylib libawt_headless.dylib; \ sudo killall PojavLauncher; \ fi @echo 'Finished build task - deploy to local device' diff --git a/Natives/CMakeLists.txt b/Natives/CMakeLists.txt index c47c793f..af6e747d 100644 --- a/Natives/CMakeLists.txt +++ b/Natives/CMakeLists.txt @@ -4,10 +4,6 @@ project(PojavLauncher) set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fcommon -fobjc-arc -ObjC -I'${CMAKE_CURRENT_LIST_DIR}/resources/Frameworks/MetalANGLE.framework/Headers' -I'${CMAKE_CURRENT_LIST_DIR}/external/DBNumberedSlider/Classes'" ) -set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -rpath @executable_path/Frameworks -rpath @loader_path/Frameworks") - -set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -rpath @executable_path/Frameworks -rpath @loader_path/Frameworks") - # For cacio support library set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -rpath /usr/lib/jvm/java-8-openjdk/lib") @@ -29,6 +25,10 @@ target_link_libraries(awt_xawt "-lawt_headless" ) +set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -rpath @executable_path/Frameworks -rpath @loader_path/Frameworks") + +set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -rpath @executable_path/Frameworks -rpath @loader_path/Frameworks") + add_library(pojavexec SHARED AboutLauncherViewController.m AppDelegate.m From 021202285972346290ab18101c1a23c5d1eef693 Mon Sep 17 00:00:00 2001 From: Duy Tran Khanh Date: Sun, 8 Aug 2021 13:02:09 +0700 Subject: [PATCH 2/4] Bug fix: the GUI button hides itself --- Natives/SurfaceViewController.m | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/Natives/SurfaceViewController.m b/Natives/SurfaceViewController.m index 288578cb..d56dfd19 100644 --- a/Natives/SurfaceViewController.m +++ b/Natives/SurfaceViewController.m @@ -173,15 +173,19 @@ int notchOffset; [button addTarget:self action:@selector(executebtn_up:) forControlEvents:UIControlEventTouchUpInside | UIControlEventTouchUpOutside]; [self.view addSubview:button]; + BOOL isToggleCtrlBtn = NO; for (int i = 0; i < 4; i++) { int keycodeInt = ((NSNumber *)cc_buttonDict[@"keycodes"][i]).intValue; if (keycodeInt == SPECIALBTN_KEYBOARD) { inputView.frame = button.frame; } - if (keycodeInt != SPECIALBTN_TOGGLECTRL) { - togglableVisibleButtons[++togglableVisibleButtonIndex] = button; + if (keycodeInt == SPECIALBTN_TOGGLECTRL) { + isToggleCtrlBtn = YES; } } + if (!isToggleCtrlBtn) { + togglableVisibleButtons[++togglableVisibleButtonIndex] = button; + } } self.cc_dictionary[@"scaledAt"] = @(savedScale); } From 934f4f1354538e20092f3220e31cf8a6d2cb7943 Mon Sep 17 00:00:00 2001 From: Duy Tran Khanh Date: Sun, 8 Aug 2021 17:34:09 +0700 Subject: [PATCH 3/4] FPS limiter :) --- JavaApp/src/main/java/org/lwjgl/glfw/GLFW.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/JavaApp/src/main/java/org/lwjgl/glfw/GLFW.java b/JavaApp/src/main/java/org/lwjgl/glfw/GLFW.java index 5c74ff2e..5c6b35a4 100644 --- a/JavaApp/src/main/java/org/lwjgl/glfw/GLFW.java +++ b/JavaApp/src/main/java/org/lwjgl/glfw/GLFW.java @@ -1140,12 +1140,12 @@ public class GLFW public static void glfwWaitEventsTimeout(double timeout) { // Boardwalk: this isn't how you do a frame limiter, but oh well // System.out.println("Frame limiter"); - /* + try { Thread.sleep((long)(timeout * 1000)); } catch (InterruptedException ie) { } - */ + // System.out.println("Out of the frame limiter"); } From 2858c06755b9dd6b6c33431faab21370e25d145d Mon Sep 17 00:00:00 2001 From: Duy Tran Khanh <40482367+khanhduytran0@users.noreply.github.com> Date: Sun, 8 Aug 2021 17:49:36 +0700 Subject: [PATCH 4/4] oof LIBGL_NOINTOVLHACK=1 --- Natives/JavaLauncher.m | 3 +++ 1 file changed, 3 insertions(+) diff --git a/Natives/JavaLauncher.m b/Natives/JavaLauncher.m index 98e8fe4b..dea1e29c 100644 --- a/Natives/JavaLauncher.m +++ b/Natives/JavaLauncher.m @@ -210,6 +210,9 @@ int launchJVM(int argc, char *argv[]) { // Fix white color on banner and sheep, since GL4ES 1.1.5 setenv("LIBGL_NORMALIZE", "1", 1); + // Disable overloaded functions hack for Minecraft 1.17+ + setenv("LIBGL_NOINTOVLHACK", "1", 1); + javaHome_pre = getPreference(@"java_home"); javaHome = [javaHome_pre cStringUsingEncoding:NSUTF8StringEncoding]; if ([javaHome_pre length] == 0) {