X-Git-Url: https://notaz.gp2x.de/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=psp%2Fpsp.c;h=cdf26ae2436a3c1858ede9289ce66e7dcf8af996;hb=426ecc582f3f6f3d04f7b7ae25b548be7178c4fd;hp=c507e5dade43eb710b08b0911ae7f79f357b8290;hpb=6d741b3258179dadc7890f45e155b0a6871ebdc5;p=libpicofe.git diff --git a/psp/psp.c b/psp/psp.c index c507e5d..cdf26ae 100644 --- a/psp/psp.c +++ b/psp/psp.c @@ -70,12 +70,21 @@ static int exit_callback(int arg1, int arg2, void *common) /* Power Callback */ static int power_callback(int unknown, int pwrflags, void *common) { + static int old_state = PGS_Menu; + + lprintf("power_callback: flags: 0x%08X\n", pwrflags); + /* check for power switch and suspending as one is manual and the other automatic */ - if (pwrflags & PSP_POWER_CB_POWER_SWITCH || pwrflags & PSP_POWER_CB_SUSPENDING) + if (pwrflags & PSP_POWER_CB_POWER_SWITCH || pwrflags & PSP_POWER_CB_SUSPENDING || pwrflags & PSP_POWER_CB_STANDBY) { - lprintf("power_callback: flags: 0x%08X: suspending\n", pwrflags); - engineState = PGS_Menu; + if (engineState != PGS_Suspending) { + old_state = engineState; + engineState = PGS_Suspending; + } } + else if (pwrflags & PSP_POWER_CB_RESUME_COMPLETE) + engineState = old_state; + //sceDisplayWaitVblankStart(); return 0; } @@ -238,6 +247,12 @@ char *psp_get_status_line(void) return buff; } +void psp_wait_suspend(void) +{ + // probably should do something smarter here? + sceDisplayWaitVblankStart(); +} + /* alt logging */ #define LOG_FILE "log.txt" @@ -251,7 +266,7 @@ typedef struct _log_entry static log_entry *le_root = NULL; #endif -void lprintf_f(const char *fmt, ...) +void lprintf(const char *fmt, ...) { va_list vl;