Smoothly remove any left-over overlays on emuscreen exit.

This commit is contained in:
Henrik Rydgård 2023-07-10 21:04:22 +02:00
parent 9354f4af1c
commit 3f924d1494
3 changed files with 35 additions and 2 deletions

View file

@ -235,3 +235,32 @@ void OnScreenDisplay::RemoveProgressBar(std::string id) {
} }
} }
} }
// Fades out everything related to achievements. Should be used on game shutdown.
void OnScreenDisplay::ClearAchievementStuff() {
double now = time_now_d();
for (auto &iter : entries_) {
switch (iter.type) {
case OSDType::ACHIEVEMENT_CHALLENGE_INDICATOR:
case OSDType::ACHIEVEMENT_UNLOCKED:
case OSDType::ACHIEVEMENT_PROGRESS:
case OSDType::LEADERBOARD_TRACKER:
iter.endTime = now;
break;
default:
break;
}
}
for (auto &iter : sideEntries_) {
switch (iter.type) {
case OSDType::ACHIEVEMENT_CHALLENGE_INDICATOR:
case OSDType::ACHIEVEMENT_UNLOCKED:
case OSDType::ACHIEVEMENT_PROGRESS:
case OSDType::LEADERBOARD_TRACKER:
iter.endTime = now;
break;
default:
break;
}
}
}

View file

@ -57,6 +57,9 @@ public:
void SetShowSidebar(bool show) { showSidebar_ = show; } void SetShowSidebar(bool show) { showSidebar_ = show; }
bool ShowSidebar() const { return showSidebar_; } bool ShowSidebar() const { return showSidebar_; }
// Fades out everything related to achievements. Should be used on game shutdown.
void ClearAchievementStuff();
struct Entry { struct Entry {
OSDType type; OSDType type;
std::string text; std::string text;

View file

@ -404,11 +404,12 @@ void EmuScreen::bootComplete() {
} }
EmuScreen::~EmuScreen() { EmuScreen::~EmuScreen() {
if (!invalid_ || bootPending_) {
// If we were invalid, it would already be shutdown. // If we were invalid, it would already be shutdown.
Achievements::UnloadGame(); Achievements::UnloadGame();
if (!invalid_ || bootPending_) {
PSP_Shutdown(); PSP_Shutdown();
} }
g_OSD.ClearAchievementStuff();
SetExtraAssertInfo(nullptr); SetExtraAssertInfo(nullptr);