services: Pass FileSystemController as reference to services that need it
This commit is contained in:
		
							parent
							
								
									1b04b72653
								
							
						
					
					
						commit
						4b91057688
					
				@ -1268,7 +1268,7 @@ void IApplicationFunctions::ExtendSaveData(Kernel::HLERequestContext& ctx) {
 | 
			
		||||
              "new_journal={:016X}",
 | 
			
		||||
              static_cast<u8>(type), user_id[1], user_id[0], new_normal_size, new_journal_size);
 | 
			
		||||
 | 
			
		||||
    fsc.WriteSaveDataSize(type, Core::CurrentProcess()->GetTitleID(), user_id,
 | 
			
		||||
    fsc.WriteSaveDataSize(type, system.CurrentProcess()->GetTitleID(), user_id,
 | 
			
		||||
                          {new_normal_size, new_journal_size});
 | 
			
		||||
 | 
			
		||||
    IPC::ResponseBuilder rb{ctx, 4};
 | 
			
		||||
@ -1288,7 +1288,8 @@ void IApplicationFunctions::GetSaveDataSize(Kernel::HLERequestContext& ctx) {
 | 
			
		||||
    LOG_DEBUG(Service_AM, "called with type={:02X}, user_id={:016X}{:016X}", static_cast<u8>(type),
 | 
			
		||||
              user_id[1], user_id[0]);
 | 
			
		||||
 | 
			
		||||
    const auto size = fsc.ReadSaveDataSize(type, Core::CurrentProcess()->GetTitleID(), user_id);
 | 
			
		||||
    const auto size = system.FileSystemController().ReadSaveDataSize(
 | 
			
		||||
        type, system.CurrentProcess()->GetTitleID(), user_id);
 | 
			
		||||
 | 
			
		||||
    IPC::ResponseBuilder rb{ctx, 6};
 | 
			
		||||
    rb.Push(RESULT_SUCCESS);
 | 
			
		||||
 | 
			
		||||
@ -106,7 +106,7 @@ private:
 | 
			
		||||
 | 
			
		||||
        IPC::ResponseBuilder rb{ctx, 2, 0, 1};
 | 
			
		||||
        rb.Push(RESULT_SUCCESS);
 | 
			
		||||
        rb.PushIpcInterface<IApplicationFunctions>(system);
 | 
			
		||||
        rb.PushIpcInterface<IApplicationFunctions>(system.FileSystemController());
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    std::shared_ptr<NVFlinger::NVFlinger> nvflinger;
 | 
			
		||||
 | 
			
		||||
@ -9,6 +9,10 @@
 | 
			
		||||
#include "core/hle/service/service.h"
 | 
			
		||||
 | 
			
		||||
namespace Service {
 | 
			
		||||
namespace FileSystem {
 | 
			
		||||
class FileSystemController;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
namespace NVFlinger {
 | 
			
		||||
class NVFlinger;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -95,7 +95,7 @@ private:
 | 
			
		||||
 | 
			
		||||
        IPC::ResponseBuilder rb{ctx, 2, 0, 1};
 | 
			
		||||
        rb.Push(RESULT_SUCCESS);
 | 
			
		||||
        rb.PushIpcInterface<IApplicationFunctions>(system);
 | 
			
		||||
        rb.PushIpcInterface<IApplicationFunctions>(system.FileSystemController());
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    std::shared_ptr<NVFlinger::NVFlinger> nvflinger;
 | 
			
		||||
 | 
			
		||||
@ -9,6 +9,10 @@
 | 
			
		||||
#include "core/hle/service/service.h"
 | 
			
		||||
 | 
			
		||||
namespace Service {
 | 
			
		||||
namespace FileSystem {
 | 
			
		||||
class FileSystemController;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
namespace NVFlinger {
 | 
			
		||||
class NVFlinger;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -617,7 +617,7 @@ public:
 | 
			
		||||
    }
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
void InstallInterfaces(SM::ServiceManager& service_manager) {
 | 
			
		||||
void InstallInterfaces(SM::ServiceManager& service_manager, FileSystem::FileSystemController& fsc) {
 | 
			
		||||
    std::make_shared<NS>("ns:am2")->InstallAsService(service_manager);
 | 
			
		||||
    std::make_shared<NS>("ns:ec")->InstallAsService(service_manager);
 | 
			
		||||
    std::make_shared<NS>("ns:rid")->InstallAsService(service_manager);
 | 
			
		||||
@ -628,7 +628,7 @@ void InstallInterfaces(SM::ServiceManager& service_manager) {
 | 
			
		||||
    std::make_shared<NS_SU>()->InstallAsService(service_manager);
 | 
			
		||||
    std::make_shared<NS_VM>()->InstallAsService(service_manager);
 | 
			
		||||
 | 
			
		||||
    std::make_shared<PL_U>()->InstallAsService(service_manager);
 | 
			
		||||
    std::make_shared<PL_U>(fsc)->InstallAsService(service_manager);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
} // namespace Service::NS
 | 
			
		||||
 | 
			
		||||
@ -6,7 +6,13 @@
 | 
			
		||||
 | 
			
		||||
#include "core/hle/service/service.h"
 | 
			
		||||
 | 
			
		||||
namespace Service::NS {
 | 
			
		||||
namespace Service {
 | 
			
		||||
 | 
			
		||||
namespace FileSystem {
 | 
			
		||||
class FileSystemController;
 | 
			
		||||
} // namespace FileSystem
 | 
			
		||||
 | 
			
		||||
namespace NS {
 | 
			
		||||
 | 
			
		||||
class IAccountProxyInterface final : public ServiceFramework<IAccountProxyInterface> {
 | 
			
		||||
public:
 | 
			
		||||
@ -91,6 +97,8 @@ private:
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
/// Registers all NS services with the specified service manager.
 | 
			
		||||
void InstallInterfaces(SM::ServiceManager& service_manager);
 | 
			
		||||
void InstallInterfaces(SM::ServiceManager& service_manager, FileSystem::FileSystemController& fsc);
 | 
			
		||||
 | 
			
		||||
} // namespace Service::NS
 | 
			
		||||
} // namespace NS
 | 
			
		||||
 | 
			
		||||
} // namespace Service
 | 
			
		||||
 | 
			
		||||
@ -150,7 +150,8 @@ struct PL_U::Impl {
 | 
			
		||||
    std::vector<FontRegion> shared_font_regions;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
PL_U::PL_U() : ServiceFramework("pl:u"), impl{std::make_unique<Impl>()} {
 | 
			
		||||
PL_U::PL_U(FileSystem::FileSystemController& fsc)
 | 
			
		||||
    : ServiceFramework("pl:u"), impl{std::make_unique<Impl>()} {
 | 
			
		||||
    static const FunctionInfo functions[] = {
 | 
			
		||||
        {0, &PL_U::RequestLoad, "RequestLoad"},
 | 
			
		||||
        {1, &PL_U::GetLoadState, "GetLoadState"},
 | 
			
		||||
@ -161,7 +162,7 @@ PL_U::PL_U() : ServiceFramework("pl:u"), impl{std::make_unique<Impl>()} {
 | 
			
		||||
    };
 | 
			
		||||
    RegisterHandlers(functions);
 | 
			
		||||
    // Attempt to load shared font data from disk
 | 
			
		||||
    const auto* nand = FileSystem::GetSystemNANDContents();
 | 
			
		||||
    const auto* nand = fsc.GetSystemNANDContents();
 | 
			
		||||
    std::size_t offset = 0;
 | 
			
		||||
    // Rebuild shared fonts from data ncas
 | 
			
		||||
    if (nand->HasEntry(static_cast<u64>(FontArchives::Standard),
 | 
			
		||||
 | 
			
		||||
@ -7,11 +7,17 @@
 | 
			
		||||
#include <memory>
 | 
			
		||||
#include "core/hle/service/service.h"
 | 
			
		||||
 | 
			
		||||
namespace Service::NS {
 | 
			
		||||
namespace Service {
 | 
			
		||||
 | 
			
		||||
namespace FileSystem {
 | 
			
		||||
class FileSystemController;
 | 
			
		||||
} // namespace FileSystem
 | 
			
		||||
 | 
			
		||||
namespace NS {
 | 
			
		||||
 | 
			
		||||
class PL_U final : public ServiceFramework<PL_U> {
 | 
			
		||||
public:
 | 
			
		||||
    PL_U();
 | 
			
		||||
    PL_U(FileSystem::FileSystemController& fsc);
 | 
			
		||||
    ~PL_U() override;
 | 
			
		||||
 | 
			
		||||
private:
 | 
			
		||||
@ -26,4 +32,6 @@ private:
 | 
			
		||||
    std::unique_ptr<Impl> impl;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
} // namespace Service::NS
 | 
			
		||||
} // namespace NS
 | 
			
		||||
 | 
			
		||||
} // namespace Service
 | 
			
		||||
 | 
			
		||||
@ -199,6 +199,7 @@ void Init(std::shared_ptr<SM::ServiceManager>& sm, Core::System& system) {
 | 
			
		||||
    // NVFlinger needs to be accessed by several services like Vi and AppletOE so we instantiate it
 | 
			
		||||
    // here and pass it into the respective InstallInterfaces functions.
 | 
			
		||||
    auto nv_flinger = std::make_shared<NVFlinger::NVFlinger>(system.CoreTiming());
 | 
			
		||||
    fsc.CreateFactories(*system.GetFilesystem(), false);
 | 
			
		||||
 | 
			
		||||
    SM::ServiceManager::InstallInterfaces(sm);
 | 
			
		||||
 | 
			
		||||
@ -229,13 +230,13 @@ void Init(std::shared_ptr<SM::ServiceManager>& sm, Core::System& system) {
 | 
			
		||||
    Migration::InstallInterfaces(*sm);
 | 
			
		||||
    Mii::InstallInterfaces(*sm);
 | 
			
		||||
    MM::InstallInterfaces(*sm);
 | 
			
		||||
    NCM::InstallInterfaces(*sm);
 | 
			
		||||
    NCM::InstallInterfaces(*sm, fsc);
 | 
			
		||||
    NFC::InstallInterfaces(*sm);
 | 
			
		||||
    NFP::InstallInterfaces(*sm);
 | 
			
		||||
    NIFM::InstallInterfaces(*sm);
 | 
			
		||||
    NIM::InstallInterfaces(*sm);
 | 
			
		||||
    NPNS::InstallInterfaces(*sm);
 | 
			
		||||
    NS::InstallInterfaces(*sm);
 | 
			
		||||
    NS::InstallInterfaces(*sm, fsc);
 | 
			
		||||
    Nvidia::InstallInterfaces(*sm, *nv_flinger, system);
 | 
			
		||||
    PCIe::InstallInterfaces(*sm);
 | 
			
		||||
    PCTL::InstallInterfaces(*sm);
 | 
			
		||||
 | 
			
		||||
@ -18,10 +18,6 @@ namespace Core {
 | 
			
		||||
class System;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
namespace FileSys {
 | 
			
		||||
class VfsFilesystem;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
namespace Kernel {
 | 
			
		||||
class ClientPort;
 | 
			
		||||
class ServerPort;
 | 
			
		||||
@ -31,6 +27,10 @@ class HLERequestContext;
 | 
			
		||||
 | 
			
		||||
namespace Service {
 | 
			
		||||
 | 
			
		||||
namespace FileSystem {
 | 
			
		||||
class FileSystemController;
 | 
			
		||||
} // namespace FileSystem
 | 
			
		||||
 | 
			
		||||
namespace SM {
 | 
			
		||||
class ServiceManager;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user