Adjusted sleep-mode code so that the APP_STATUS on leaving sleep-mode, would be set to the status which was set when the prepare sleep-mode signal was triggered(and other minor changes).

This commit is contained in:
yellows8 2014-05-22 13:56:16 -04:00
parent d99ab43106
commit 4260edd6c9
2 changed files with 21 additions and 10 deletions

View File

@ -9,12 +9,13 @@ typedef enum{
}NS_APPID; // cf http://3dbrew.org/wiki/NS#AppIDs
typedef enum{
APT_NOTINITIALIZED,
APP_NOTINITIALIZED,
APP_RUNNING,
APP_SUSPENDED,
APP_EXITING,
APP_SUSPENDING,
APP_SLEEPMODE
APP_SLEEPMODE,
APP_PREPARE_SLEEPMODE
}APP_STATUS;
extern Handle aptEvents[3];

View File

@ -20,7 +20,8 @@ u64 aptEventHandlerStack[APT_HANDLER_STACKSIZE/8]; //u64 so that it's 8-byte ali
Handle aptStatusMutex;
Handle aptStatusEvent = 0;
u32 aptStatus = APT_NOTINITIALIZED;
APP_STATUS aptStatus = APP_NOTINITIALIZED;
APP_STATUS aptStatus_beforesleepmode = APP_NOTINITIALIZED;
u32 aptStatusPower = 0;
u32 aptParameters[0x1000/4]; //TEMP
@ -212,21 +213,30 @@ void aptEventHandler(u32 arg)
break;
case 0x3: //preparing to enter sleep-mode
aptStatus_beforesleepmode = aptGetStatus();
GSPGPU_SetLcdForceBlack(NULL, 1);
aptOpenSession();
APT_ReplySleepQuery(NULL, currentAppId, 0x1);
aptCloseSession();
aptSetStatus(APP_PREPARE_SLEEPMODE);
break;
case 0x5: //entering sleep-mode
aptOpenSession();
APT_ReplySleepNotificationComplete(NULL, currentAppId);
aptCloseSession();
aptSetStatus(APP_SLEEPMODE);
if(aptGetStatus()==APP_PREPARE_SLEEPMODE)
{
aptOpenSession();
APT_ReplySleepNotificationComplete(NULL, currentAppId);
aptCloseSession();
aptSetStatus(APP_SLEEPMODE);
}
break;
case 0x6: //leaving sleep-mode
GSPGPU_SetLcdForceBlack(NULL, 0);
aptSetStatus(APP_RUNNING);
if(aptGetStatus()==APP_SLEEPMODE)
{
GSPGPU_SetLcdForceBlack(NULL, 0);
aptSetStatus(aptStatus_beforesleepmode);
}
break;
}
}
@ -385,7 +395,7 @@ void aptSetStatus(APP_STATUS status)
prevstatus = status;
aptStatus = status;
if(prevstatus!=APT_NOTINITIALIZED)
if(prevstatus!=APP_NOTINITIALIZED)
{
if(status==APP_RUNNING)svc_signalEvent(aptStatusEvent);
if(status==APP_EXITING)svc_signalEvent(aptStatusEvent);