// SPDX-FileCopyrightText: Copyright 2024 yuzu Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later #pragma once #include "core/hle/service/cmif_types.h" #include "core/hle/service/service.h" namespace Service::AM { struct Applet; class IAppletCommonFunctions; class IAudioController; class ICommonStateGetter; class IDebugFunctions; class IDisplayController; class IHomeMenuFunctions; class IGlobalStateController; class ILibraryAppletCreator; class ILibraryAppletSelfAccessor; class IProcessWindingController; class ISelfController; class IWindowController; class ILibraryAppletProxy final : public ServiceFramework { public: explicit ILibraryAppletProxy(Core::System& system_, std::shared_ptr applet, Kernel::KProcess* process, Nvnflinger::Nvnflinger& nvnflinger); ~ILibraryAppletProxy(); private: Result GetAudioController(Out> out_audio_controller); Result GetDisplayController(Out> out_display_controller); Result GetProcessWindingController( Out> out_process_winding_controller); Result GetDebugFunctions(Out> out_debug_functions); Result GetWindowController(Out> out_window_controller); Result GetSelfController(Out> out_self_controller); Result GetCommonStateGetter(Out> out_common_state_getter); Result GetLibraryAppletCreator( Out> out_library_applet_creator); Result OpenLibraryAppletSelfAccessor( Out> out_library_applet_self_accessor); Result GetAppletCommonFunctions( Out> out_applet_common_functions); Result GetHomeMenuFunctions(Out> out_home_menu_functions); Result GetGlobalStateController( Out> out_global_state_controller); Nvnflinger::Nvnflinger& m_nvnflinger; Kernel::KProcess* const m_process; const std::shared_ptr m_applet; }; } // namespace Service::AM