Attempt to fix APT hang during startup due to bad event handling
This commit is contained in:
parent
a77e8ae1cd
commit
e4aeaba747
@ -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);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user