From 64b21a45783104d70845fd8c93df37affbd1fc10 Mon Sep 17 00:00:00 2001 From: Emmanuel Hansen Date: Tue, 19 Dec 2023 13:45:13 +0000 Subject: [PATCH] android - add hack to fix orientation issue --- src/RyujinxAndroid/app/src/main/cpp/ryujinx.cpp | 13 +++++++++++-- .../src/main/java/org/ryujinx/android/GameHost.kt | 2 ++ .../main/java/org/ryujinx/android/NativeHelpers.kt | 1 + 3 files changed, 14 insertions(+), 2 deletions(-) diff --git a/src/RyujinxAndroid/app/src/main/cpp/ryujinx.cpp b/src/RyujinxAndroid/app/src/main/cpp/ryujinx.cpp index 391d71850..19f01679d 100644 --- a/src/RyujinxAndroid/app/src/main/cpp/ryujinx.cpp +++ b/src/RyujinxAndroid/app/src/main/cpp/ryujinx.cpp @@ -185,6 +185,8 @@ void setProgressInfo(char* info, float progressValue) { progress = progressValue; } +bool isInitialOrientationFlipped = true; + extern "C" void setCurrentTransform(long native_window, int transform){ if(native_window == 0 || native_window == -1) @@ -201,10 +203,10 @@ void setCurrentTransform(long native_window, int transform){ nativeTransform = ANativeWindowTransform::ANATIVEWINDOW_TRANSFORM_IDENTITY; break; case 0x2: - nativeTransform = ANativeWindowTransform::ANATIVEWINDOW_TRANSFORM_ROTATE_90; + nativeTransform = ANativeWindowTransform::ANATIVEWINDOW_TRANSFORM_ROTATE_90; break; case 0x4: - nativeTransform = ANativeWindowTransform::ANATIVEWINDOW_TRANSFORM_ROTATE_180; + nativeTransform = isInitialOrientationFlipped ? ANativeWindowTransform::ANATIVEWINDOW_TRANSFORM_IDENTITY : ANativeWindowTransform::ANATIVEWINDOW_TRANSFORM_ROTATE_180; break; case 0x8: nativeTransform = ANativeWindowTransform::ANATIVEWINDOW_TRANSFORM_ROTATE_270; @@ -337,3 +339,10 @@ JNIEXPORT jstring JNICALL Java_org_ryujinx_android_NativeHelpers_getStringJava(JNIEnv *env, jobject thiz, jlong id) { return createStringFromStdString(env, str_helper.get_stored(id)); } + +extern "C" +JNIEXPORT void JNICALL +Java_org_ryujinx_android_NativeHelpers_setIsInitialOrientationFlipped(JNIEnv *env, jobject thiz, + jboolean is_flipped) { + isInitialOrientationFlipped = is_flipped; +} diff --git a/src/RyujinxAndroid/app/src/main/java/org/ryujinx/android/GameHost.kt b/src/RyujinxAndroid/app/src/main/java/org/ryujinx/android/GameHost.kt index 27329285a..eaa9042db 100644 --- a/src/RyujinxAndroid/app/src/main/java/org/ryujinx/android/GameHost.kt +++ b/src/RyujinxAndroid/app/src/main/java/org/ryujinx/android/GameHost.kt @@ -95,6 +95,8 @@ class GameHost(context: Context?, private val mainViewModel: MainViewModel) : Su surfaceHolder.surfaceFrame.height() ) + NativeHelpers.instance.setIsInitialOrientationFlipped(mainViewModel.activity.display?.rotation == 3) + _guestThread = thread(start = true) { runGame() } diff --git a/src/RyujinxAndroid/app/src/main/java/org/ryujinx/android/NativeHelpers.kt b/src/RyujinxAndroid/app/src/main/java/org/ryujinx/android/NativeHelpers.kt index dceab1e1e..cc3cbde95 100644 --- a/src/RyujinxAndroid/app/src/main/java/org/ryujinx/android/NativeHelpers.kt +++ b/src/RyujinxAndroid/app/src/main/java/org/ryujinx/android/NativeHelpers.kt @@ -31,4 +31,5 @@ class NativeHelpers { external fun getProgressValue() : Float external fun storeStringJava(string: String) : Long external fun getStringJava(id: Long) : String + external fun setIsInitialOrientationFlipped(isFlipped: Boolean) }