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)
{
switch(aptGetStatus())
{ {
case APP_RUNNING: case APP_RUNNING:
return true; return true;
case APP_EXITING:
return false;
case APP_SUSPENDING: case APP_SUSPENDING:
aptReturnToMenu(); aptReturnToMenu();
break; break;
case APP_SLEEPMODE: default:
//case APP_NOTINITIALIZED:
//case APP_PREPARE_SLEEPMODE:
//case APP_SLEEPMODE:
aptWaitStatusEvent(); aptWaitStatusEvent();
break; break;
case APP_EXITING: }
return false;
default:
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);
} }