mirror of
https://github.com/RPCS3/rpcs3.git
synced 2024-11-17 08:11:51 +00:00
Handle missing cases of Emu.BootGame failure
This commit is contained in:
parent
6784301376
commit
3359458175
@ -493,13 +493,15 @@ int main(int argc, char** argv)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const bool has_no_gui = parser.isSet(arg_no_gui);
|
||||||
|
|
||||||
if (auto gui_app = qobject_cast<gui_application*>(app.data()))
|
if (auto gui_app = qobject_cast<gui_application*>(app.data()))
|
||||||
{
|
{
|
||||||
gui_app->setAttribute(Qt::AA_UseHighDpiPixmaps);
|
gui_app->setAttribute(Qt::AA_UseHighDpiPixmaps);
|
||||||
gui_app->setAttribute(Qt::AA_DisableWindowContextHelpButton);
|
gui_app->setAttribute(Qt::AA_DisableWindowContextHelpButton);
|
||||||
gui_app->setAttribute(Qt::AA_DontCheckOpenGLContextThreadAffinity);
|
gui_app->setAttribute(Qt::AA_DontCheckOpenGLContextThreadAffinity);
|
||||||
|
|
||||||
gui_app->SetShowGui(!parser.isSet(arg_no_gui));
|
gui_app->SetShowGui(!has_no_gui);
|
||||||
gui_app->SetUseCliStyle(use_cli_style);
|
gui_app->SetUseCliStyle(use_cli_style);
|
||||||
gui_app->Init();
|
gui_app->Init();
|
||||||
}
|
}
|
||||||
@ -508,6 +510,11 @@ int main(int argc, char** argv)
|
|||||||
s_headless = true;
|
s_headless = true;
|
||||||
headless_app->Init();
|
headless_app->Init();
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// Should be unreachable
|
||||||
|
report_fatal_error("RPCS3 initialization failed!");
|
||||||
|
}
|
||||||
|
|
||||||
#ifdef _WIN32
|
#ifdef _WIN32
|
||||||
// Set 0.5 msec timer resolution for best performance
|
// Set 0.5 msec timer resolution for best performance
|
||||||
@ -560,11 +567,20 @@ int main(int argc, char** argv)
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Ugly workaround
|
// Ugly workaround
|
||||||
QTimer::singleShot(2, [config_override_path, path = sstr(QFileInfo(args.at(0)).absoluteFilePath()), argv = std::move(argv)]() mutable
|
QTimer::singleShot(2, [config_override_path, has_no_gui, path = sstr(QFileInfo(args.at(0)).absoluteFilePath()), argv = std::move(argv)]() mutable
|
||||||
{
|
{
|
||||||
Emu.argv = std::move(argv);
|
Emu.argv = std::move(argv);
|
||||||
Emu.SetForceBoot(true);
|
Emu.SetForceBoot(true);
|
||||||
Emu.BootGame(path, "", true);
|
|
||||||
|
if (const game_boot_result error = Emu.BootGame(path, "", true); error != game_boot_result::no_errors)
|
||||||
|
{
|
||||||
|
sys_log.error("Booting '%s' with cli argument failed: reason: %s", path, error);
|
||||||
|
|
||||||
|
if (s_headless || has_no_gui)
|
||||||
|
{
|
||||||
|
report_fatal_error(fmt::format("Booting '%s' failed!\n\nReason: %s", path, error));
|
||||||
|
}
|
||||||
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1259,7 +1259,6 @@ void main_window::OnEmuStop()
|
|||||||
{
|
{
|
||||||
const QString title = GetCurrentTitle();
|
const QString title = GetCurrentTitle();
|
||||||
const QString play_tooltip = Emu.IsReady() ? tr("Play %0").arg(title) : tr("Resume %0").arg(title);
|
const QString play_tooltip = Emu.IsReady() ? tr("Play %0").arg(title) : tr("Resume %0").arg(title);
|
||||||
const QString restart_tooltip = tr("Restart %0").arg(title);
|
|
||||||
|
|
||||||
m_debugger_frame->UpdateUI();
|
m_debugger_frame->UpdateUI();
|
||||||
|
|
||||||
@ -1280,6 +1279,8 @@ void main_window::OnEmuStop()
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
const QString restart_tooltip = tr("Restart %0").arg(title);
|
||||||
|
|
||||||
ui->toolbar_start->setEnabled(true);
|
ui->toolbar_start->setEnabled(true);
|
||||||
ui->toolbar_start->setIcon(m_icon_restart);
|
ui->toolbar_start->setIcon(m_icon_restart);
|
||||||
ui->toolbar_start->setText(tr("Restart"));
|
ui->toolbar_start->setText(tr("Restart"));
|
||||||
@ -2339,7 +2340,12 @@ void main_window::CreateFirmwareCache()
|
|||||||
}
|
}
|
||||||
|
|
||||||
Emu.SetForceBoot(true);
|
Emu.SetForceBoot(true);
|
||||||
Emu.BootGame(g_cfg.vfs.get_dev_flash() + "sys/external/", "", true);
|
|
||||||
|
if (const game_boot_result error = Emu.BootGame(g_cfg.vfs.get_dev_flash() + "sys/external/", "", true);
|
||||||
|
error != game_boot_result::no_errors)
|
||||||
|
{
|
||||||
|
gui_log.error("Creating firmware cache failed: reason: %s", error);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void main_window::keyPressEvent(QKeyEvent *keyEvent)
|
void main_window::keyPressEvent(QKeyEvent *keyEvent)
|
||||||
|
Loading…
Reference in New Issue
Block a user