Actually fix the race condition. Can't do any initialization step while waiting.

This commit is contained in:
Henrik Rydgård committed 2023-07-24 12:08:15 +02:00
1 parent 3ae520c35d
commit a72c4aa383
2 files changed
+10 -6

No files matched your search

+4 -6
View File
@@ -477,11 +477,6 @@ bool PSP_InitStart(const CoreParameter &coreParam, std::string *error_string) {
}
bool PSP_InitUpdate(std::string *error_string) {
if (Achievements::IsBlockingExecution()) {
// Keep waiting.
return false;
}
if (pspIsInited || !pspIsIniting) {
return true;
}
@@ -491,7 +486,10 @@ bool PSP_InitUpdate(std::string *error_string) {
}
bool success = !g_CoreParameter.fileToStart.empty();
*error_string = g_CoreParameter.errorString;
if (!g_CoreParameter.errorString.empty()) {
*error_string = g_CoreParameter.errorString;
}
if (success && gpu == nullptr) {
PSP_SetLoading("Starting graphics...");
Draw::DrawContext *draw = g_CoreParameter.graphicsContext ? g_CoreParameter.graphicsContext->GetDrawContext() : nullptr;
+6
View File
@@ -233,6 +233,11 @@ bool EmuScreen::bootAllowStorage(const Path &filename) {
void EmuScreen::bootGame(const Path &filename) {
auto sc = GetI18NCategory(I18NCat::SCREEN);
if (Achievements::IsBlockingExecution()) {
// Keep waiting.
return;
}
if (PSP_IsRebooting())
return;
if (PSP_IsInited()) {
@@ -244,6 +249,7 @@ void EmuScreen::bootGame(const Path &filename) {
if (PSP_IsIniting()) {
std::string error_string = "(unknown error)";
bootPending_ = !PSP_InitUpdate(&error_string);
if (!bootPending_) {