mirror of
				https://git.zaroz.cloud/nintendo-back-up/yuzu/yuzu-mainline.git
				synced 2025-03-21 01:53:15 +00:00 
			
		
		
		
	core: Store system-wide ContentProvider for the emulator
This commit is contained in:
		
							parent
							
								
									a6c7ae6fe8
								
							
						
					
					
						commit
						45cb41f517
					
				@ -17,6 +17,7 @@
 | 
			
		||||
#include "core/core_timing.h"
 | 
			
		||||
#include "core/cpu_core_manager.h"
 | 
			
		||||
#include "core/file_sys/mode.h"
 | 
			
		||||
#include "core/file_sys/registered_cache.h"
 | 
			
		||||
#include "core/file_sys/vfs_concat.h"
 | 
			
		||||
#include "core/file_sys/vfs_real.h"
 | 
			
		||||
#include "core/gdbstub/gdbstub.h"
 | 
			
		||||
@ -108,6 +109,8 @@ struct System::Impl {
 | 
			
		||||
        // Create a default fs if one doesn't already exist.
 | 
			
		||||
        if (virtual_filesystem == nullptr)
 | 
			
		||||
            virtual_filesystem = std::make_shared<FileSys::RealVfsFilesystem>();
 | 
			
		||||
        if (content_provider == nullptr)
 | 
			
		||||
            content_provider = std::make_unique<FileSys::ContentProviderUnion>();
 | 
			
		||||
 | 
			
		||||
        /// Create default implementations of applets if one is not provided.
 | 
			
		||||
        if (profile_selector == nullptr)
 | 
			
		||||
@ -249,6 +252,8 @@ struct System::Impl {
 | 
			
		||||
    Kernel::KernelCore kernel;
 | 
			
		||||
    /// RealVfsFilesystem instance
 | 
			
		||||
    FileSys::VirtualFilesystem virtual_filesystem;
 | 
			
		||||
    /// ContentProviderUnion instance
 | 
			
		||||
    std::unique_ptr<FileSys::ContentProviderUnion> content_provider;
 | 
			
		||||
    /// AppLoader used to load the current executing application
 | 
			
		||||
    std::unique_ptr<Loader::AppLoader> app_loader;
 | 
			
		||||
    std::unique_ptr<VideoCore::RendererBase> renderer;
 | 
			
		||||
@ -488,6 +493,27 @@ const Frontend::SoftwareKeyboardApplet& System::GetSoftwareKeyboard() const {
 | 
			
		||||
    return *impl->software_keyboard;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void System::SetContentProvider(std::unique_ptr<FileSys::ContentProviderUnion> provider) {
 | 
			
		||||
    impl->content_provider = std::move(provider);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
FileSys::ContentProvider& System::GetContentProvider() {
 | 
			
		||||
    return *impl->content_provider;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
const FileSys::ContentProvider& System::GetContentProvider() const {
 | 
			
		||||
    return *impl->content_provider;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void System::RegisterContentProvider(FileSys::ContentProviderUnionSlot slot,
 | 
			
		||||
                                     FileSys::ContentProvider* provider) {
 | 
			
		||||
    impl->content_provider->SetSlot(slot, provider);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void System::ClearContentProvider(FileSys::ContentProviderUnionSlot slot) {
 | 
			
		||||
    impl->content_provider->ClearSlot(slot);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void System::SetWebBrowser(std::unique_ptr<Frontend::WebBrowserApplet> applet) {
 | 
			
		||||
    impl->web_browser = std::move(applet);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -21,6 +21,9 @@ class WebBrowserApplet;
 | 
			
		||||
 | 
			
		||||
namespace FileSys {
 | 
			
		||||
class CheatList;
 | 
			
		||||
class ContentProvider;
 | 
			
		||||
class ContentProviderUnion;
 | 
			
		||||
enum class ContentProviderUnionSlot;
 | 
			
		||||
class VfsFilesystem;
 | 
			
		||||
} // namespace FileSys
 | 
			
		||||
 | 
			
		||||
@ -270,6 +273,17 @@ public:
 | 
			
		||||
    Frontend::WebBrowserApplet& GetWebBrowser();
 | 
			
		||||
    const Frontend::WebBrowserApplet& GetWebBrowser() const;
 | 
			
		||||
 | 
			
		||||
    void SetContentProvider(std::unique_ptr<FileSys::ContentProviderUnion> provider);
 | 
			
		||||
 | 
			
		||||
    FileSys::ContentProvider& GetContentProvider();
 | 
			
		||||
 | 
			
		||||
    const FileSys::ContentProvider& GetContentProvider() const;
 | 
			
		||||
 | 
			
		||||
    void RegisterContentProvider(FileSys::ContentProviderUnionSlot slot,
 | 
			
		||||
                                 FileSys::ContentProvider* provider);
 | 
			
		||||
 | 
			
		||||
    void ClearContentProvider(FileSys::ContentProviderUnionSlot slot);
 | 
			
		||||
 | 
			
		||||
private:
 | 
			
		||||
    System();
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user