[VFS] Clear registered devices if launch failed

This commit is contained in:
Adrian 2024-05-23 23:31:04 +01:00 committed by Radosław Gliński
parent ff692589c7
commit a688f87f55
3 changed files with 8 additions and 0 deletions

View File

@ -1740,6 +1740,8 @@ xe::X_STATUS EmulatorWindow::RunTitle(std::filesystem::path path_to_file) {
xe::ui::ImGuiDialog::ShowMessageBox( xe::ui::ImGuiDialog::ShowMessageBox(
imgui_drawer_.get(), "Title Launch Failed!", imgui_drawer_.get(), "Title Launch Failed!",
"Failed to launch title.\n\nCheck xenia.log for technical details."); "Failed to launch title.\n\nCheck xenia.log for technical details.");
emulator_->file_system()->Clear();
} else { } else {
AddRecentlyLaunchedTitle(path_to_file, emulator_->title_name()); AddRecentlyLaunchedTitle(path_to_file, emulator_->title_name());

View File

@ -27,6 +27,10 @@ VirtualFileSystem::VirtualFileSystem() {}
VirtualFileSystem::~VirtualFileSystem() { VirtualFileSystem::~VirtualFileSystem() {
// Delete all devices. // Delete all devices.
// This will explode if anyone is still using data from them. // This will explode if anyone is still using data from them.
Clear();
}
void VirtualFileSystem::Clear() {
devices_.clear(); devices_.clear();
symlinks_.clear(); symlinks_.clear();
} }

View File

@ -28,6 +28,8 @@ class VirtualFileSystem {
VirtualFileSystem(); VirtualFileSystem();
~VirtualFileSystem(); ~VirtualFileSystem();
void Clear();
bool RegisterDevice(std::unique_ptr<Device> device); bool RegisterDevice(std::unique_ptr<Device> device);
bool UnregisterDevice(const std::string_view path); bool UnregisterDevice(const std::string_view path);