diff --git a/src/MeloNX-Skip/melonx-native/Android/app/src/main/AndroidManifest.xml b/src/MeloNX-Skip/melonx-native/Android/app/src/main/AndroidManifest.xml index f06d650a3..1d276952e 100644 --- a/src/MeloNX-Skip/melonx-native/Android/app/src/main/AndroidManifest.xml +++ b/src/MeloNX-Skip/melonx-native/Android/app/src/main/AndroidManifest.xml @@ -32,6 +32,7 @@ + diff --git a/src/MeloNX-Skip/melonx-native/Android/app/src/main/java/org/libsdl/app/SDLActivity.java b/src/MeloNX-Skip/melonx-native/Android/app/src/main/java/org/libsdl/app/SDLActivity.java index 31164f80f..3aba5b368 100644 --- a/src/MeloNX-Skip/melonx-native/Android/app/src/main/java/org/libsdl/app/SDLActivity.java +++ b/src/MeloNX-Skip/melonx-native/Android/app/src/main/java/org/libsdl/app/SDLActivity.java @@ -398,7 +398,7 @@ public class SDLActivity extends AppCompatActivity implements View.OnSystemUiVis mSurface = createSDLSurface(this); mLayout = new RelativeLayout(this); - mLayout.addView(mSurface); +// mLayout.addView(mSurface); // Get our current screen orientation and pass it down. mCurrentOrientation = SDLActivity.getCurrentOrientation(); @@ -1883,15 +1883,15 @@ class SDLMain implements Runnable { Log.v("SDL", "Running main function " + function + " from library " + library); - SDLActivity.nativeRunMain(library, function, arguments); +// SDLActivity.nativeRunMain(library, function, arguments); - Log.v("SDL", "Finished main function"); - - if (SDLActivity.mSingleton != null && !SDLActivity.mSingleton.isFinishing()) { - // Let's finish the Activity - SDLActivity.mSDLThread = null; - SDLActivity.mSingleton.finish(); - } // else: Activity is already being destroyed +// Log.v("SDL", "Finished main function"); +// +// if (SDLActivity.mSingleton != null && !SDLActivity.mSingleton.isFinishing()) { +// // Let's finish the Activity +// SDLActivity.mSDLThread = null; +// SDLActivity.mSingleton.finish(); +// } // else: Activity is already being destroyed } } diff --git a/src/MeloNX-Skip/melonx-native/Android/app/src/main/jniLibs/arm64-v8a/libRyujinx.Headless.SDL2.so b/src/MeloNX-Skip/melonx-native/Android/app/src/main/jniLibs/arm64-v8a/libRyujinx.Headless.SDL2.so index dbeab145e..fcd96d292 100644 Binary files a/src/MeloNX-Skip/melonx-native/Android/app/src/main/jniLibs/arm64-v8a/libRyujinx.Headless.SDL2.so and b/src/MeloNX-Skip/melonx-native/Android/app/src/main/jniLibs/arm64-v8a/libRyujinx.Headless.SDL2.so differ diff --git a/src/MeloNX-Skip/melonx-native/Android/app/src/main/jniLibs/arm64-v8a/libmain.so1 b/src/MeloNX-Skip/melonx-native/Android/app/src/main/jniLibs/arm64-v8a/libmain.so1 index 8c3cfa46d..3b72dcc17 100644 Binary files a/src/MeloNX-Skip/melonx-native/Android/app/src/main/jniLibs/arm64-v8a/libmain.so1 and b/src/MeloNX-Skip/melonx-native/Android/app/src/main/jniLibs/arm64-v8a/libmain.so1 differ diff --git a/src/MeloNX-Skip/melonx-native/Android/app/src/main/jniLibs/arm64-v8a/libsdl2.so b/src/MeloNX-Skip/melonx-native/Android/app/src/main/jniLibs/arm64-v8a/libsdl2.so index e236a9803..e73d30d28 100755 Binary files a/src/MeloNX-Skip/melonx-native/Android/app/src/main/jniLibs/arm64-v8a/libsdl2.so and b/src/MeloNX-Skip/melonx-native/Android/app/src/main/jniLibs/arm64-v8a/libsdl2.so differ diff --git a/src/MeloNX-Skip/melonx-native/Android/app/src/main/kotlin/Main.kt b/src/MeloNX-Skip/melonx-native/Android/app/src/main/kotlin/Main.kt index 231462b4c..b6f918bfa 100644 --- a/src/MeloNX-Skip/melonx-native/Android/app/src/main/kotlin/Main.kt +++ b/src/MeloNX-Skip/melonx-native/Android/app/src/main/kotlin/Main.kt @@ -10,14 +10,19 @@ import android.app.Application import androidx.activity.enableEdgeToEdge import androidx.activity.compose.setContent import androidx.appcompat.app.AppCompatActivity +import androidx.compose.foundation.background import androidx.compose.foundation.isSystemInDarkTheme import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.size import androidx.compose.runtime.Composable import androidx.compose.runtime.SideEffect import androidx.compose.runtime.saveable.rememberSaveableStateHolder import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.unit.dp +import androidx.compose.ui.viewinterop.AndroidView import androidx.core.app.ActivityCompat import org.libsdl.app.SDLActivity @@ -50,10 +55,14 @@ open class MainActivity: SDLActivity { enableEdgeToEdge() setContent { - val saveableStateHolder = rememberSaveableStateHolder() - saveableStateHolder.SaveableStateProvider(true) { - PresentationRootView(ComposeContext()) - SideEffect { saveableStateHolder.removeState(true) } + Box { + SDLComposeSurface() + + val saveableStateHolder = rememberSaveableStateHolder() + saveableStateHolder.SaveableStateProvider(true) { + PresentationRootView(ComposeContext()) + SideEffect { saveableStateHolder.removeState(true) } + } } } @@ -119,6 +128,15 @@ open class MainActivity: SDLActivity { companion object { } + + @Composable + fun SDLComposeSurface() { + AndroidView( + factory = { context -> + mSurface + } + ) + } } @Composable diff --git a/src/MeloNX-Skip/melonx-native/Sources/MeloNXModel/Ryujinx.swift b/src/MeloNX-Skip/melonx-native/Sources/MeloNXModel/Ryujinx.swift index 66430609f..8e1316346 100644 --- a/src/MeloNX-Skip/melonx-native/Sources/MeloNXModel/Ryujinx.swift +++ b/src/MeloNX-Skip/melonx-native/Sources/MeloNXModel/Ryujinx.swift @@ -139,8 +139,8 @@ private extension Ryujinx { args.append(config.gamepath) // Starts with vulkan -// args.append("--graphics-backend") -// args.append("Vulkan") + args.append("--graphics-backend") + args.append("Vulkan") args.append(contentsOf: ["--memory-manager-mode", config.memoryManagerMode]) diff --git a/src/MeloNX-Skip/melonx-native/Sources/melonx/melonxApp.swift b/src/MeloNX-Skip/melonx-native/Sources/melonx/melonxApp.swift index 67535a0b3..0224352b1 100644 --- a/src/MeloNX-Skip/melonx-native/Sources/melonx/melonxApp.swift +++ b/src/MeloNX-Skip/melonx-native/Sources/melonx/melonxApp.swift @@ -22,6 +22,7 @@ public struct melonxRootView : View { logger.info("Welcome to Skip on \(androidSDK != nil ? "Android" : "Darwin")!") logger.info("Skip app logs are viewable in the Xcode console for iOS; Android logs can be viewed in Studio or using adb logcat") } + .opacity(0.3) } } diff --git a/src/Ryujinx.Headless.SDL2/WindowBase.cs b/src/Ryujinx.Headless.SDL2/WindowBase.cs index 2ce4416f0..68c0eee81 100644 --- a/src/Ryujinx.Headless.SDL2/WindowBase.cs +++ b/src/Ryujinx.Headless.SDL2/WindowBase.cs @@ -18,6 +18,7 @@ using System.Collections.Generic; using System.Diagnostics; using System.IO; using System.Runtime.InteropServices; +using System.Runtime.Versioning; using System.Threading; using static SDL2.SDL; using AntiAliasing = Ryujinx.Common.Configuration.AntiAliasing; @@ -36,7 +37,7 @@ namespace Ryujinx.Headless.SDL2 private static readonly ConcurrentQueue _mainThreadActions = new(); - [LibraryImport("SDL2.framework/SDL2")] + [LibraryImport("SDL2", SetLastError = true)] // TODO: Remove this as soon as SDL2-CS was updated to expose this method publicly private static partial IntPtr SDL_LoadBMP_RW(IntPtr src, int freesrc);