Attempt to fix APT hang during startup due to bad event handling

This commit is contained in:
fincs 2014-11-04 21:41:31 +01:00
parent a77e8ae1cd
commit e4aeaba747

View File

@ -339,6 +339,9 @@ Result aptInit(void)
currentAppId = __apt_appid; currentAppId = __apt_appid;
svcCreateEvent(&aptStatusEvent, 0);
svcCreateEvent(&aptSleepSync, 0);
if(!(__system_runflags&RUNFLAG_APTWORKAROUND)) if(!(__system_runflags&RUNFLAG_APTWORKAROUND))
{ {
aptOpenSession(); aptOpenSession();
@ -359,8 +362,6 @@ Result aptInit(void)
} else } else
aptAppStarted(); aptAppStarted();
svcCreateEvent(&aptStatusEvent, 0);
svcCreateEvent(&aptSleepSync, 0);
return 0; return 0;
} }
@ -396,20 +397,24 @@ void aptExit()
bool aptMainLoop() bool aptMainLoop()
{ {
for (;;) switch (aptGetStatus()) while(1)
{ {
case APP_RUNNING: switch(aptGetStatus())
return true; {
case APP_SUSPENDING: case APP_RUNNING:
aptReturnToMenu(); return true;
break; case APP_EXITING:
case APP_SLEEPMODE: return false;
aptWaitStatusEvent(); case APP_SUSPENDING:
break; aptReturnToMenu();
case APP_EXITING: break;
return false; default:
default: //case APP_NOTINITIALIZED:
break; //case APP_PREPARE_SLEEPMODE:
//case APP_SLEEPMODE:
aptWaitStatusEvent();
break;
}
} }
} }
@ -461,11 +466,11 @@ void aptSetStatus(APP_STATUS status)
prevstatus = aptStatus; prevstatus = aptStatus;
aptStatus = status; aptStatus = status;
if(prevstatus != APP_NOTINITIALIZED) //if(prevstatus != APP_NOTINITIALIZED)
{ //{
if(status == APP_RUNNING || status == APP_EXITING) if(status == APP_RUNNING || status == APP_EXITING || status == APP_SLEEPMODE)
svcSignalEvent(aptStatusEvent); svcSignalEvent(aptStatusEvent);
} //}
svcReleaseMutex(aptStatusMutex); svcReleaseMutex(aptStatusMutex);
} }