From 3360a42f3db80ede0a459f0142a253d74bdd0ec7 Mon Sep 17 00:00:00 2001 From: lizzie Date: Mon, 23 Mar 2026 05:44:56 +0000 Subject: [PATCH] bridge changes/fixes --- src/ios/AppUI-Bridging-Header.h | 2 +- src/ios/AppUIGameInformation.mm | 7 ++-- src/ios/AppUIObjC.h | 2 +- src/ios/AppUIObjC.mm | 20 ++++------- src/ios/EmulationSession.h | 13 ++++--- src/ios/EmulationSession.mm | 63 +++------------------------------ src/ios/EmulationWindow.h | 10 ++++-- src/ios/EmulationWindow.mm | 9 ++--- 8 files changed, 37 insertions(+), 89 deletions(-) diff --git a/src/ios/AppUI-Bridging-Header.h b/src/ios/AppUI-Bridging-Header.h index 091fe7117f..d3bc77082f 100644 --- a/src/ios/AppUI-Bridging-Header.h +++ b/src/ios/AppUI-Bridging-Header.h @@ -9,6 +9,6 @@ #ifndef AppUI_Bridging_Header_h #define AppUI_Bridging_Header_h -#import "Wrapper/AppUIObjC.h" +#import "AppUIObjC.h" #endif /* AppUI_Bridging_Header_h */ diff --git a/src/ios/AppUIGameInformation.mm b/src/ios/AppUIGameInformation.mm index 2a76e7dc7d..4b69324420 100644 --- a/src/ios/AppUIGameInformation.mm +++ b/src/ios/AppUIGameInformation.mm @@ -1,9 +1,6 @@ // SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project // SPDX-License-Identifier: GPL-3.0-or-later -# SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project -# SPDX-License-Identifier: GPL-3.0-or-later - // // AppUIGameInformation.mm - Sudachi // Created by Jarrod Norwell on 1/20/24. @@ -11,7 +8,7 @@ #import #import "AppUIGameInformation.h" -#import "EmulationSession/EmulationSession.h" +#import "EmulationSession.h" #include "common/fs/fs.h" #include "common/fs/path_util.h" @@ -20,7 +17,7 @@ #include "core/file_sys/patch_manager.h" #include "core/loader/loader.h" #include "core/loader/nro.h" -#include "frontend_common/yuzu_config.h" +#include "frontend_common/config.h" struct GameMetadata { std::string title; diff --git a/src/ios/AppUIObjC.h b/src/ios/AppUIObjC.h index 1a79babf4f..ec5a5f1e8c 100644 --- a/src/ios/AppUIObjC.h +++ b/src/ios/AppUIObjC.h @@ -9,7 +9,7 @@ #import #import -#import "AppUIGameInformation/AppUIGameInformation.h" +#import "AppUIGameInformation.h" NS_ASSUME_NONNULL_BEGIN diff --git a/src/ios/AppUIObjC.mm b/src/ios/AppUIObjC.mm index 97cdc894b5..c03a20c530 100644 --- a/src/ios/AppUIObjC.mm +++ b/src/ios/AppUIObjC.mm @@ -8,9 +8,8 @@ #import "AppUIObjC.h" -#import "Config/Config.h" -#import "EmulationSession/EmulationSession.h" -#import "DirectoryManager/DirectoryManager.h" +#import "Config.h" +#import "EmulationSession.h" #include "common/fs/fs.h" #include "common/fs/path_util.h" @@ -30,8 +29,6 @@ #include "common/fs/path_util.h" #include "common/logging/backend.h" #include "common/logging/log.h" -#include "common/microprofile.h" -#include "common/scm_rev.h" #include "common/scope_exit.h" #include "common/settings.h" #include "common/string_util.h" @@ -56,8 +53,6 @@ #include "core/hle/service/am/frontend/applets.h" #include "core/hle/service/filesystem/filesystem.h" #include "core/loader/loader.h" -#include "frontend_common/yuzu_config.h" -#include "hid_core/frontend/emulated_controller.h" #include "hid_core/hid_core.h" #include "hid_core/hid_types.h" #include "video_core/renderer_base.h" @@ -77,7 +72,7 @@ const char *directory_cstr = [[dir_url path] UTF8String]; Common::FS::SetAppDirectory(directory_cstr); - Config{"config", Config::ConfigType::GlobalConfig}; + // Config{"config", Config::ConfigType::GlobalConfig}; EmulationSession::GetInstance().System().Initialize(); EmulationSession::GetInstance().InitializeSystem(false); @@ -87,7 +82,6 @@ Settings::values.dump_shaders.SetValue(true); Settings::values.use_asynchronous_shaders.SetValue(true); // Settings::values.astc_recompression.SetValue(Settings::AstcRecompression::Bc3); - Settings::values.shader_backend.SetValue(Settings::ShaderBackend::SpirV); // Settings::values.resolution_setup.SetValue(Settings::ResolutionSetup::Res1X); // Settings::values.scaling_filter.SetValue(Settings::ScalingFilter::Bilinear); } return self; @@ -168,7 +162,7 @@ -(void) configureLayer:(CAMetalLayer *)layer withSize:(CGSize)size { _layer = layer; _size = size; - EmulationSession::GetInstance().SetNativeWindow((__bridge CA::MetalLayer*)layer, size); + EmulationSession::GetInstance().SetNativeWindow(layer, size); } -(void) bootOS { @@ -251,13 +245,11 @@ -(void) orientationChanged:(UIInterfaceOrientation)orientation with:(CAMetalLayer *)layer size:(CGSize)size { _layer = layer; _size = size; - EmulationSession::GetInstance().Window().OnSurfaceChanged((__bridge CA::MetalLayer*)layer, size); + EmulationSession::GetInstance().Window().OnSurfaceChanged(layer, size); } -(void) settingsChanged { - Config{"config", Config::ConfigType::GlobalConfig}; + // } - - @end diff --git a/src/ios/EmulationSession.h b/src/ios/EmulationSession.h index 56c1930df6..287a65839d 100644 --- a/src/ios/EmulationSession.h +++ b/src/ios/EmulationSession.h @@ -8,10 +8,15 @@ #pragma once +#import #import +#if __has_include() #import -#import "EmulationWindow/EmulationWindow.h" +#else +#import +#endif +#import "EmulationWindow.h" #include "common/detached_tasks.h" #include "core/core.h" @@ -34,8 +39,8 @@ public: const EmulationWindow& Window() const; EmulationWindow& Window(); - CA::MetalLayer* NativeWindow() const; - void SetNativeWindow(CA::MetalLayer* native_window, CGSize size); + CAMetalLayer* NativeWindow() const; + void SetNativeWindow(CAMetalLayer* native_window, CGSize size); void SurfaceChanged(); void InitializeGpuDriver(); @@ -73,7 +78,7 @@ private: private: // Window management std::unique_ptr m_window; - CA::MetalLayer* m_native_window{}; + CAMetalLayer* m_native_window{}; // Core emulation Core::System m_system; diff --git a/src/ios/EmulationSession.mm b/src/ios/EmulationSession.mm index 2575f053e2..9b4171e082 100644 --- a/src/ios/EmulationSession.mm +++ b/src/ios/EmulationSession.mm @@ -27,7 +27,6 @@ #include "common/fs/path_util.h" #include "common/logging/backend.h" #include "common/logging/log.h" -#include "common/microprofile.h" #include "common/scm_rev.h" #include "common/scope_exit.h" #include "common/settings.h" @@ -53,7 +52,7 @@ #include "core/hle/service/am/frontend/applets.h" #include "core/hle/service/filesystem/filesystem.h" #include "core/loader/loader.h" -#include "frontend_common/yuzu_config.h" +#include "frontend_common/config.h" #include "hid_core/frontend/emulated_controller.h" #include "hid_core/hid_core.h" #include "hid_core/hid_types.h" @@ -99,11 +98,11 @@ EmulationWindow& EmulationSession::Window() { return *m_window; } -CA::MetalLayer* EmulationSession::NativeWindow() const { +CAMetalLayer* EmulationSession::NativeWindow() const { return m_native_window; } -void EmulationSession::SetNativeWindow(CA::MetalLayer* native_window, CGSize size) { +void EmulationSession::SetNativeWindow(CAMetalLayer* native_window, CGSize size) { m_native_window = native_window; m_size = size; } @@ -209,17 +208,7 @@ Core::SystemResultStatus EmulationSession::InitializeEmulation(const std::string m_system.ApplySettings(); Settings::LogSettings(); m_system.HIDCore().ReloadInputDevices(); - m_system.SetFrontendAppletSet({ - nullptr, // Amiibo Settings - nullptr, // Controller Selector - nullptr, // Error Display - nullptr, // Mii Editor - nullptr, // Parental Controls - nullptr, // Photo Viewer - nullptr, // Profile Selector - nullptr, // std::move(android_keyboard), // Software Keyboard - nullptr, // Web Browser - }); + m_system.SetFrontendAppletSet(Service::AM::Frontend::FrontendAppletSet{}); // Initialize filesystem. ConfigureFilesystemProvider(filepath); @@ -270,17 +259,7 @@ Core::SystemResultStatus EmulationSession::BootOS() { m_system.ApplySettings(); Settings::LogSettings(); m_system.HIDCore().ReloadInputDevices(); - m_system.SetFrontendAppletSet({ - nullptr, // Amiibo Settings - nullptr, // Controller Selector - nullptr, // Error Display - nullptr, // Mii Editor - nullptr, // Parental Controls - nullptr, // Photo Viewer - nullptr, // Profile Selector - nullptr, // std::move(android_keyboard), // Software Keyboard - nullptr, // Web Browser - }); + m_system.SetFrontendAppletSet(Service::AM::Frontend::FrontendAppletSet{}); constexpr u64 QLaunchId = static_cast(Service::AM::AppletProgramId::QLaunch); auto bis_system = m_system.GetFileSystemController().GetSystemNANDContents(); @@ -444,38 +423,6 @@ u64 EmulationSession::GetProgramId(std::string programId) { } } -static Core::SystemResultStatus RunEmulation(const std::string& filepath, - const size_t program_index, - const bool frontend_initiated) { - MicroProfileOnThreadCreate("EmuThread"); - SCOPE_EXIT { - MicroProfileShutdown(); - }; - - LOG_INFO(Frontend, "starting"); - - if (filepath.empty()) { - LOG_CRITICAL(Frontend, "failed to load: filepath empty!"); - return Core::SystemResultStatus::ErrorLoader; - } - - SCOPE_EXIT { - EmulationSession::GetInstance().ShutdownEmulation(); - }; - - jconst result = EmulationSession::GetInstance().InitializeEmulation(filepath, program_index, - frontend_initiated); - if (result != Core::SystemResultStatus::Success) { - return result; - } - - EmulationSession::GetInstance().RunEmulation(); - - return Core::SystemResultStatus::Success; -} - - - bool EmulationSession::IsHandheldOnly() { jconst npad_style_set = m_system.HIDCore().GetSupportedStyleTag(); diff --git a/src/ios/EmulationWindow.h b/src/ios/EmulationWindow.h index 4d8b0b888f..53162a7f58 100644 --- a/src/ios/EmulationWindow.h +++ b/src/ios/EmulationWindow.h @@ -8,9 +8,15 @@ #pragma once +#if __has_include() #import +#else +#import +#endif #import #import +#import +#import #include #include @@ -38,12 +44,12 @@ NS_ASSUME_NONNULL_BEGIN class EmulationWindow final : public Core::Frontend::EmuWindow { public: - EmulationWindow(InputCommon::InputSubsystem* input_subsystem, CA::MetalLayer* surface, CGSize size, + EmulationWindow(InputCommon::InputSubsystem* input_subsystem, CAMetalLayer* surface, CGSize size, std::shared_ptr driver_library); ~EmulationWindow() = default; - void OnSurfaceChanged(CA::MetalLayer* surface, CGSize size); + void OnSurfaceChanged(CAMetalLayer* surface, CGSize size); void OrientationChanged(UIInterfaceOrientation orientation); void OnFrameDisplayed() override; diff --git a/src/ios/EmulationWindow.mm b/src/ios/EmulationWindow.mm index f5c53309b4..638db800a8 100644 --- a/src/ios/EmulationWindow.mm +++ b/src/ios/EmulationWindow.mm @@ -7,7 +7,7 @@ // #import "EmulationWindow.h" -#import "EmulationSession/EmulationSession.h" +#import "EmulationSession.h" #include @@ -17,7 +17,7 @@ #include "input_common/drivers/virtual_gamepad.h" #include "input_common/main.h" -void EmulationWindow::OnSurfaceChanged(CA::MetalLayer* surface, CGSize size) { +void EmulationWindow::OnSurfaceChanged(CAMetalLayer* surface, CGSize size) { m_size = size; m_window_width = size.width; @@ -26,7 +26,7 @@ void EmulationWindow::OnSurfaceChanged(CA::MetalLayer* surface, CGSize size) { // Ensures that we emulate with the correct aspect ratio. // UpdateCurrentFramebufferLayout(m_window_width, m_window_height); - window_info.render_surface = reinterpret_cast(surface); + window_info.render_surface = (__bridge void *)surface; window_info.render_surface_scale = [[UIScreen mainScreen] nativeScale]; } @@ -68,7 +68,8 @@ void EmulationWindow::OnFrameDisplayed() { } } -EmulationWindow::EmulationWindow(InputCommon::InputSubsystem* input_subsystem, CA::MetalLayer* surface, CGSize size, std::shared_ptr driver_library) : m_input_subsystem{input_subsystem}, m_size{size}, m_driver_library{driver_library} { +EmulationWindow::EmulationWindow(InputCommon::InputSubsystem* input_subsystem, CAMetalLayer* surface, CGSize size, std::shared_ptr driver_library) + : m_window_width{}, m_window_height{}, m_size{size}, is_portrait{true}, m_input_subsystem{input_subsystem}, m_driver_library{driver_library}, m_first_frame{false} { LOG_INFO(Frontend, "initializing"); if (!surface) {