diff options
| author | 2021-10-26 12:43:27 +0800 | |
|---|---|---|
| committer | 2021-10-27 09:06:30 +0800 | |
| commit | 052017e189a2558dba1dd47147ab9274f218b7fc (patch) | |
| tree | 0ae2a46af72d4b8b4244d8710f0202303c50bdad /src/core/core.cpp | |
| parent | Fix memory leak (diff) | |
| download | yuzu-052017e189a2558dba1dd47147ab9274f218b7fc.tar.gz yuzu-052017e189a2558dba1dd47147ab9274f218b7fc.tar.xz yuzu-052017e189a2558dba1dd47147ab9274f218b7fc.zip | |
Revert PR7009
Diffstat (limited to 'src/core/core.cpp')
| -rw-r--r-- | src/core/core.cpp | 16 |
1 files changed, 3 insertions, 13 deletions
diff --git a/src/core/core.cpp b/src/core/core.cpp index 3c75f42ae..c3a0f9dae 100644 --- a/src/core/core.cpp +++ b/src/core/core.cpp | |||
| @@ -83,12 +83,6 @@ FileSys::StorageId GetStorageIdForFrontendSlot( | |||
| 83 | } | 83 | } |
| 84 | } | 84 | } |
| 85 | 85 | ||
| 86 | void KProcessDeleter(Kernel::KProcess* process) { | ||
| 87 | process->Destroy(); | ||
| 88 | } | ||
| 89 | |||
| 90 | using KProcessPtr = std::unique_ptr<Kernel::KProcess, decltype(&KProcessDeleter)>; | ||
| 91 | |||
| 92 | } // Anonymous namespace | 86 | } // Anonymous namespace |
| 93 | 87 | ||
| 94 | FileSys::VirtualFile GetGameFileFromPath(const FileSys::VirtualFilesystem& vfs, | 88 | FileSys::VirtualFile GetGameFileFromPath(const FileSys::VirtualFilesystem& vfs, |
| @@ -261,11 +255,10 @@ struct System::Impl { | |||
| 261 | } | 255 | } |
| 262 | 256 | ||
| 263 | telemetry_session->AddInitialInfo(*app_loader, fs_controller, *content_provider); | 257 | telemetry_session->AddInitialInfo(*app_loader, fs_controller, *content_provider); |
| 264 | main_process = KProcessPtr{Kernel::KProcess::Create(system.Kernel()), KProcessDeleter}; | 258 | auto main_process = Kernel::KProcess::Create(system.Kernel()); |
| 265 | ASSERT(Kernel::KProcess::Initialize(main_process.get(), system, "main", | 259 | ASSERT(Kernel::KProcess::Initialize(main_process, system, "main", |
| 266 | Kernel::KProcess::ProcessType::Userland) | 260 | Kernel::KProcess::ProcessType::Userland) |
| 267 | .IsSuccess()); | 261 | .IsSuccess()); |
| 268 | main_process->Open(); | ||
| 269 | const auto [load_result, load_parameters] = app_loader->Load(*main_process, system); | 262 | const auto [load_result, load_parameters] = app_loader->Load(*main_process, system); |
| 270 | if (load_result != Loader::ResultStatus::Success) { | 263 | if (load_result != Loader::ResultStatus::Success) { |
| 271 | LOG_CRITICAL(Core, "Failed to load ROM (Error {})!", load_result); | 264 | LOG_CRITICAL(Core, "Failed to load ROM (Error {})!", load_result); |
| @@ -275,7 +268,7 @@ struct System::Impl { | |||
| 275 | static_cast<u32>(SystemResultStatus::ErrorLoader) + static_cast<u32>(load_result)); | 268 | static_cast<u32>(SystemResultStatus::ErrorLoader) + static_cast<u32>(load_result)); |
| 276 | } | 269 | } |
| 277 | AddGlueRegistrationForProcess(*app_loader, *main_process); | 270 | AddGlueRegistrationForProcess(*app_loader, *main_process); |
| 278 | kernel.MakeCurrentProcess(main_process.get()); | 271 | kernel.MakeCurrentProcess(main_process); |
| 279 | kernel.InitializeCores(); | 272 | kernel.InitializeCores(); |
| 280 | 273 | ||
| 281 | // Initialize cheat engine | 274 | // Initialize cheat engine |
| @@ -340,8 +333,6 @@ struct System::Impl { | |||
| 340 | kernel.Shutdown(); | 333 | kernel.Shutdown(); |
| 341 | memory.Reset(); | 334 | memory.Reset(); |
| 342 | applet_manager.ClearAll(); | 335 | applet_manager.ClearAll(); |
| 343 | // TODO: The main process should be freed based on KAutoObject ref counting. | ||
| 344 | main_process.reset(); | ||
| 345 | 336 | ||
| 346 | LOG_DEBUG(Core, "Shutdown OK"); | 337 | LOG_DEBUG(Core, "Shutdown OK"); |
| 347 | } | 338 | } |
| @@ -403,7 +394,6 @@ struct System::Impl { | |||
| 403 | std::unique_ptr<Tegra::GPU> gpu_core; | 394 | std::unique_ptr<Tegra::GPU> gpu_core; |
| 404 | std::unique_ptr<Hardware::InterruptManager> interrupt_manager; | 395 | std::unique_ptr<Hardware::InterruptManager> interrupt_manager; |
| 405 | std::unique_ptr<Core::DeviceMemory> device_memory; | 396 | std::unique_ptr<Core::DeviceMemory> device_memory; |
| 406 | KProcessPtr main_process{nullptr, KProcessDeleter}; | ||
| 407 | Core::Memory::Memory memory; | 397 | Core::Memory::Memory memory; |
| 408 | CpuManager cpu_manager; | 398 | CpuManager cpu_manager; |
| 409 | std::atomic_bool is_powered_on{}; | 399 | std::atomic_bool is_powered_on{}; |