diff --git a/src/MeloNX/MeloNX.xcodeproj/project.xcworkspace/xcuserdata/stossy11.xcuserdatad/UserInterfaceState.xcuserstate b/src/MeloNX/MeloNX.xcodeproj/project.xcworkspace/xcuserdata/stossy11.xcuserdatad/UserInterfaceState.xcuserstate index 600b03485..498b0ca7f 100644 Binary files a/src/MeloNX/MeloNX.xcodeproj/project.xcworkspace/xcuserdata/stossy11.xcuserdatad/UserInterfaceState.xcuserstate and b/src/MeloNX/MeloNX.xcodeproj/project.xcworkspace/xcuserdata/stossy11.xcuserdatad/UserInterfaceState.xcuserstate differ diff --git a/src/MeloNX/MeloNX/App/Core/Ryujinx/Display/DisplayVisible.swift b/src/MeloNX/MeloNX/App/Core/Ryujinx/Display/DisplayVisible.swift index ec463cae8..fd5d2c302 100644 --- a/src/MeloNX/MeloNX/App/Core/Ryujinx/Display/DisplayVisible.swift +++ b/src/MeloNX/MeloNX/App/Core/Ryujinx/Display/DisplayVisible.swift @@ -17,7 +17,9 @@ extension UIWindow { // Makes the SDLWindow use the current WindowScene instead of making its own window. // Also waits for the window to append the on-screen controller @objc func wdb_makeKeyAndVisible() { - if #unavailable(iOS 17.0) { + let enabled = UserDefaults.standard.bool(forKey: "oldWindowCode") + + if #unavailable(iOS 17.0), enabled { self.windowScene = (UIApplication.shared.connectedScenes.first! as! UIWindowScene) } @@ -26,7 +28,7 @@ extension UIWindow { if #available(iOS 17, *) { Ryujinx.shared.repeatuntilfindLayer() - } else { + } else if UserDefaults.standard.bool(forKey: "isVirtualController") && enabled { waitForController() } } diff --git a/src/MeloNX/MeloNX/App/Core/Ryujinx/Ryujinx.swift b/src/MeloNX/MeloNX/App/Core/Ryujinx/Ryujinx.swift index ce788b114..7ed6c80ec 100644 --- a/src/MeloNX/MeloNX/App/Core/Ryujinx/Ryujinx.swift +++ b/src/MeloNX/MeloNX/App/Core/Ryujinx/Ryujinx.swift @@ -145,7 +145,7 @@ class Ryujinx { isRunning = true - MainThread { + RunLoop.current.perform { let url = URL(string: config.gamepath) @@ -190,22 +190,6 @@ class Ryujinx { } - func MainThread(_ block: @escaping @Sendable () -> Void) { - if #available(iOS 17.0, *) { - RunLoop.current.perform { - autoreleasepool { - block() - } - } - } else { - DispatchQueue.main.async { - autoreleasepool { - block() - } - } - } - } - func loadGames() -> [Game] { let fileManager = FileManager.default guard let documentsDirectory = fileManager.urls(for: .documentDirectory, in: .userDomainMask).first else { return [] } diff --git a/src/MeloNX/MeloNX/App/Views/SettingsView/SettingsView.swift b/src/MeloNX/MeloNX/App/Views/SettingsView/SettingsView.swift index 5ef6cbacb..9b1b52fce 100644 --- a/src/MeloNX/MeloNX/App/Views/SettingsView/SettingsView.swift +++ b/src/MeloNX/MeloNX/App/Views/SettingsView/SettingsView.swift @@ -37,6 +37,9 @@ struct SettingsView: View { @AppStorage("performacehud") var performacehud: Bool = false + @AppStorage("oldWindowCode") var windowCode: Bool = false + + @State private var showResolutionInfo = false @State private var showAnisotropicInfo = false @State private var searchText = "" @@ -68,6 +71,7 @@ struct SettingsView: View { } .tint(.blue) + Toggle(isOn: $config.enableTextureRecompression) { labelWithIcon("Texture Recompression", iconName: "rectangle.compress.vertical") } @@ -414,6 +418,13 @@ struct SettingsView: View { Section { labelWithIcon("JIT Acquisition: \(isJITEnabled() ? "Aquired" : "Not Aquired" )", iconName: "bolt.fill") + if #unavailable(iOS 17) { + Toggle(isOn: $windowCode) { + labelWithIcon("SDL Window", iconName: "macwindow.on.rectangle") + } + .tint(.blue) + } + DisclosureGroup { Toggle(isOn: $mVKPreFillBuffer) { @@ -464,7 +475,11 @@ struct SettingsView: View { .textCase(nil) .headerProminence(.increased) } footer: { - Text("For advanced users. See page size or add custom arguments for experimental features. (Please don't touch this if you don't know what you're doing)") + if #available(iOS 17, *) { + Text("For advanced users. See page size or add custom arguments for experimental features. (Please don't touch this if you don't know what you're doing).") + } else { + Text("For advanced users. See page size or add custom arguments for experimental features. (Please don't touch this if you don't know what you're doing). If the emulation is not showing (you may hear audio in some games), try enabling \"SDL Window\"") + } } }