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 }NS_APPID; // cf http://3dbrew.org/wiki/NS#AppIDs
typedef enum{ typedef enum{
APT_NOTINITIALIZED, APP_NOTINITIALIZED,
APP_RUNNING, APP_RUNNING,
APP_SUSPENDED, APP_SUSPENDED,
APP_EXITING, APP_EXITING,
APP_SUSPENDING, APP_SUSPENDING,
APP_SLEEPMODE APP_SLEEPMODE,
APP_PREPARE_SLEEPMODE
}APP_STATUS; }APP_STATUS;
extern Handle aptEvents[3]; 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 aptStatusMutex;
Handle aptStatusEvent = 0; Handle aptStatusEvent = 0;
u32 aptStatus = APT_NOTINITIALIZED; APP_STATUS aptStatus = APP_NOTINITIALIZED;
APP_STATUS aptStatus_beforesleepmode = APP_NOTINITIALIZED;
u32 aptStatusPower = 0; u32 aptStatusPower = 0;
u32 aptParameters[0x1000/4]; //TEMP u32 aptParameters[0x1000/4]; //TEMP
@ -212,21 +213,30 @@ void aptEventHandler(u32 arg)
break; break;
case 0x3: //preparing to enter sleep-mode case 0x3: //preparing to enter sleep-mode
aptStatus_beforesleepmode = aptGetStatus();
GSPGPU_SetLcdForceBlack(NULL, 1);
aptOpenSession(); aptOpenSession();
APT_ReplySleepQuery(NULL, currentAppId, 0x1); APT_ReplySleepQuery(NULL, currentAppId, 0x1);
aptCloseSession(); aptCloseSession();
aptSetStatus(APP_PREPARE_SLEEPMODE);
break; break;
case 0x5: //entering sleep-mode case 0x5: //entering sleep-mode
if(aptGetStatus()==APP_PREPARE_SLEEPMODE)
{
aptOpenSession(); aptOpenSession();
APT_ReplySleepNotificationComplete(NULL, currentAppId); APT_ReplySleepNotificationComplete(NULL, currentAppId);
aptCloseSession(); aptCloseSession();
aptSetStatus(APP_SLEEPMODE); aptSetStatus(APP_SLEEPMODE);
}
break; break;
case 0x6: //leaving sleep-mode case 0x6: //leaving sleep-mode
if(aptGetStatus()==APP_SLEEPMODE)
{
GSPGPU_SetLcdForceBlack(NULL, 0); GSPGPU_SetLcdForceBlack(NULL, 0);
aptSetStatus(APP_RUNNING); aptSetStatus(aptStatus_beforesleepmode);
}
break; break;
} }
} }
@ -385,7 +395,7 @@ void aptSetStatus(APP_STATUS status)
prevstatus = status; prevstatus = status;
aptStatus = status; aptStatus = status;
if(prevstatus!=APT_NOTINITIALIZED) if(prevstatus!=APP_NOTINITIALIZED)
{ {
if(status==APP_RUNNING)svc_signalEvent(aptStatusEvent); if(status==APP_RUNNING)svc_signalEvent(aptStatusEvent);
if(status==APP_EXITING)svc_signalEvent(aptStatusEvent); if(status==APP_EXITING)svc_signalEvent(aptStatusEvent);