Revert PR7009
This commit is contained in:
parent
a8b0104923
commit
052017e189
@ -83,12 +83,6 @@ FileSys::StorageId GetStorageIdForFrontendSlot(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void KProcessDeleter(Kernel::KProcess* process) {
|
|
||||||
process->Destroy();
|
|
||||||
}
|
|
||||||
|
|
||||||
using KProcessPtr = std::unique_ptr<Kernel::KProcess, decltype(&KProcessDeleter)>;
|
|
||||||
|
|
||||||
} // Anonymous namespace
|
} // Anonymous namespace
|
||||||
|
|
||||||
FileSys::VirtualFile GetGameFileFromPath(const FileSys::VirtualFilesystem& vfs,
|
FileSys::VirtualFile GetGameFileFromPath(const FileSys::VirtualFilesystem& vfs,
|
||||||
@ -261,11 +255,10 @@ struct System::Impl {
|
|||||||
}
|
}
|
||||||
|
|
||||||
telemetry_session->AddInitialInfo(*app_loader, fs_controller, *content_provider);
|
telemetry_session->AddInitialInfo(*app_loader, fs_controller, *content_provider);
|
||||||
main_process = KProcessPtr{Kernel::KProcess::Create(system.Kernel()), KProcessDeleter};
|
auto main_process = Kernel::KProcess::Create(system.Kernel());
|
||||||
ASSERT(Kernel::KProcess::Initialize(main_process.get(), system, "main",
|
ASSERT(Kernel::KProcess::Initialize(main_process, system, "main",
|
||||||
Kernel::KProcess::ProcessType::Userland)
|
Kernel::KProcess::ProcessType::Userland)
|
||||||
.IsSuccess());
|
.IsSuccess());
|
||||||
main_process->Open();
|
|
||||||
const auto [load_result, load_parameters] = app_loader->Load(*main_process, system);
|
const auto [load_result, load_parameters] = app_loader->Load(*main_process, system);
|
||||||
if (load_result != Loader::ResultStatus::Success) {
|
if (load_result != Loader::ResultStatus::Success) {
|
||||||
LOG_CRITICAL(Core, "Failed to load ROM (Error {})!", load_result);
|
LOG_CRITICAL(Core, "Failed to load ROM (Error {})!", load_result);
|
||||||
@ -275,7 +268,7 @@ struct System::Impl {
|
|||||||
static_cast<u32>(SystemResultStatus::ErrorLoader) + static_cast<u32>(load_result));
|
static_cast<u32>(SystemResultStatus::ErrorLoader) + static_cast<u32>(load_result));
|
||||||
}
|
}
|
||||||
AddGlueRegistrationForProcess(*app_loader, *main_process);
|
AddGlueRegistrationForProcess(*app_loader, *main_process);
|
||||||
kernel.MakeCurrentProcess(main_process.get());
|
kernel.MakeCurrentProcess(main_process);
|
||||||
kernel.InitializeCores();
|
kernel.InitializeCores();
|
||||||
|
|
||||||
// Initialize cheat engine
|
// Initialize cheat engine
|
||||||
@ -340,8 +333,6 @@ struct System::Impl {
|
|||||||
kernel.Shutdown();
|
kernel.Shutdown();
|
||||||
memory.Reset();
|
memory.Reset();
|
||||||
applet_manager.ClearAll();
|
applet_manager.ClearAll();
|
||||||
// TODO: The main process should be freed based on KAutoObject ref counting.
|
|
||||||
main_process.reset();
|
|
||||||
|
|
||||||
LOG_DEBUG(Core, "Shutdown OK");
|
LOG_DEBUG(Core, "Shutdown OK");
|
||||||
}
|
}
|
||||||
@ -403,7 +394,6 @@ struct System::Impl {
|
|||||||
std::unique_ptr<Tegra::GPU> gpu_core;
|
std::unique_ptr<Tegra::GPU> gpu_core;
|
||||||
std::unique_ptr<Hardware::InterruptManager> interrupt_manager;
|
std::unique_ptr<Hardware::InterruptManager> interrupt_manager;
|
||||||
std::unique_ptr<Core::DeviceMemory> device_memory;
|
std::unique_ptr<Core::DeviceMemory> device_memory;
|
||||||
KProcessPtr main_process{nullptr, KProcessDeleter};
|
|
||||||
Core::Memory::Memory memory;
|
Core::Memory::Memory memory;
|
||||||
CpuManager cpu_manager;
|
CpuManager cpu_manager;
|
||||||
std::atomic_bool is_powered_on{};
|
std::atomic_bool is_powered_on{};
|
||||||
|
@ -174,8 +174,8 @@ struct KernelCore::Impl {
|
|||||||
{
|
{
|
||||||
std::lock_guard lk(registered_in_use_objects_lock);
|
std::lock_guard lk(registered_in_use_objects_lock);
|
||||||
if (registered_in_use_objects.size()) {
|
if (registered_in_use_objects.size()) {
|
||||||
for (auto thread : registered_in_use_objects) {
|
for (auto& object : registered_in_use_objects) {
|
||||||
thread->Close();
|
object->Close();
|
||||||
}
|
}
|
||||||
registered_in_use_objects.clear();
|
registered_in_use_objects.clear();
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user