mirror of
https://github.com/stenzek/duckstation.git
synced 2025-06-07 20:15:32 +00:00
FullscreenUI: Fix assert when booting+loading state
This commit is contained in:
parent
03d7af2efc
commit
9411e40c20
@ -5033,10 +5033,9 @@ void FullscreenUI::DrawGraphicsSettingsPage()
|
|||||||
|
|
||||||
if (is_hardware)
|
if (is_hardware)
|
||||||
{
|
{
|
||||||
DrawIntListSetting(
|
DrawIntListSetting(bsi, FSUI_ICONSTR(ICON_FA_EXPAND_ALT, "Internal Resolution"),
|
||||||
bsi, FSUI_ICONSTR(ICON_FA_EXPAND_ALT, "Internal Resolution"),
|
FSUI_CSTR("Upscales the game's rendering by the specified multiplier."), "GPU",
|
||||||
FSUI_CSTR("Upscales the game's rendering by the specified multiplier."),
|
"ResolutionScale", 1, resolution_scales);
|
||||||
"GPU", "ResolutionScale", 1, resolution_scales);
|
|
||||||
|
|
||||||
DrawEnumSetting(bsi, FSUI_ICONSTR(ICON_FA_COMPRESS_ALT, "Downsampling"),
|
DrawEnumSetting(bsi, FSUI_ICONSTR(ICON_FA_COMPRESS_ALT, "Downsampling"),
|
||||||
FSUI_CSTR("Downsamples the rendered image prior to displaying it. Can improve "
|
FSUI_CSTR("Downsamples the rendered image prior to displaying it. Can improve "
|
||||||
@ -7339,34 +7338,37 @@ void FullscreenUI::DoLoadState(std::string path)
|
|||||||
std::string boot_path = std::move(s_state.save_state_selector_game_path);
|
std::string boot_path = std::move(s_state.save_state_selector_game_path);
|
||||||
CloseSaveStateSelector();
|
CloseSaveStateSelector();
|
||||||
|
|
||||||
Host::RunOnCPUThread([boot_path = std::move(boot_path), path = std::move(path)]() mutable {
|
if (GPUThread::HasGPUBackend())
|
||||||
if (System::IsValid())
|
{
|
||||||
{
|
Host::RunOnCPUThread([boot_path = std::move(boot_path), path = std::move(path)]() mutable {
|
||||||
if (path.empty())
|
if (System::IsValid())
|
||||||
{
|
{
|
||||||
// Loading undo state.
|
if (path.empty())
|
||||||
if (!System::UndoLoadState())
|
|
||||||
{
|
{
|
||||||
GPUThread::RunOnThread(
|
// Loading undo state.
|
||||||
[]() { ShowToast(std::string(), TRANSLATE_STR("System", "Failed to undo load state.")); });
|
if (!System::UndoLoadState())
|
||||||
|
{
|
||||||
|
GPUThread::RunOnThread(
|
||||||
|
[]() { ShowToast(std::string(), TRANSLATE_STR("System", "Failed to undo load state.")); });
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Error error;
|
||||||
|
if (!System::LoadState(path.c_str(), &error, true, false))
|
||||||
|
{
|
||||||
|
GPUThread::RunOnThread([error_desc = error.TakeDescription()]() {
|
||||||
|
ShowToast(std::string(), fmt::format(TRANSLATE_FS("System", "Failed to load state: {}"), error_desc));
|
||||||
|
});
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
});
|
||||||
{
|
}
|
||||||
Error error;
|
else
|
||||||
if (!System::LoadState(path.c_str(), &error, true, false))
|
{
|
||||||
{
|
DoStartPath(std::move(boot_path), std::move(path));
|
||||||
GPUThread::RunOnThread([error_desc = error.TakeDescription()]() {
|
}
|
||||||
ShowToast(std::string(), fmt::format(TRANSLATE_FS("System", "Failed to load state: {}"), error_desc));
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
DoStartPath(std::move(boot_path), std::move(path));
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void FullscreenUI::DoSaveState(s32 slot, bool global)
|
void FullscreenUI::DoSaveState(s32 slot, bool global)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user