some minor adjustments
[libpicofe.git] / psp / psp.c
index c507e5d..cdf26ae 100644 (file)
--- 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;