am: stop emulation when all applets are closed

master
Liam 2024-01-27 14:39:55 +07:00
parent 68303ed601
commit 8e0a40434c
1 changed files with 8 additions and 0 deletions

@ -221,6 +221,7 @@ void AppletManager::InsertApplet(std::shared_ptr<Applet> applet) {
void AppletManager::TerminateAndRemoveApplet(AppletResourceUserId aruid) { void AppletManager::TerminateAndRemoveApplet(AppletResourceUserId aruid) {
std::shared_ptr<Applet> applet; std::shared_ptr<Applet> applet;
bool should_stop = false;
{ {
std::scoped_lock lk{m_lock}; std::scoped_lock lk{m_lock};
@ -231,10 +232,17 @@ void AppletManager::TerminateAndRemoveApplet(AppletResourceUserId aruid) {
applet = it->second; applet = it->second;
m_applets.erase(it); m_applets.erase(it);
should_stop = m_applets.empty();
} }
// Terminate process. // Terminate process.
applet->process->Terminate(); applet->process->Terminate();
// If there were no applets left, stop emulation.
if (should_stop) {
m_system.Exit();
}
} }
void AppletManager::CreateAndInsertByFrontendAppletParameters( void AppletManager::CreateAndInsertByFrontendAppletParameters(