int LPP_UtilsMsgDialogUpdate(void) { int res = -1; switch(sceUtilityMsgDialogGetStatus()) { case PSP_UTILITY_DIALOG_NONE : res = lpp_UtilsMsgDialogParams.buttonPressed; break; case PSP_UTILITY_DIALOG_VISIBLE: sceUtilityMsgDialogUpdate(1); break; case PSP_UTILITY_DIALOG_QUIT : sceUtilityMsgDialogShutdownStart(); break; case PSP_UTILITY_DIALOG_FINISHED: break; default: break; } if(res != -1) { if(!(lpp_UtilsMsgDialogParams.options & LPP_UTILS_MSG_DIALOG_YESNO_BUTTONS)) res = LPP_UTILS_MSG_DIALOG_RESULT_BACK; } return(res); }
static int messagebubble(int buttonif, const char *message) { sceDisplayWaitVblankStart(); sceKernelDelayThread(100 * 1000); ShowMessageDialog(message, buttonif); sceKernelDelayThread(300 * 1000); sceUtilityMsgDialogShutdownStart(); return 1; }
static void ShowMessageDialog(const char *message, int enableYesno) { clearScreen(0); flipScreen(); clearScreen(0); flipScreen(); ConfigureDialog(&dialog, sizeof(dialog)); dialog.mode = PSP_UTILITY_MSGDIALOG_MODE_TEXT; dialog.options = PSP_UTILITY_MSGDIALOG_OPTION_TEXT; if(enableYesno) dialog.options |= PSP_UTILITY_MSGDIALOG_OPTION_YESNO_BUTTONS|PSP_UTILITY_MSGDIALOG_OPTION_DEFAULT_NO; strcpy(dialog.message, message); sceUtilityMsgDialogInitStart(&dialog); for(;;) { switch(sceUtilityMsgDialogGetStatus()) { case 2: sceUtilityMsgDialogUpdate(1); break; case 3: sceUtilityMsgDialogShutdownStart(); break; case 0: return; } sceDisplayWaitVblankStart(); } }
void oslDrawDialog() { if (dialogType == OSL_DIALOG_MESSAGE || dialogType == OSL_DIALOG_ERROR){ switch(sceUtilityMsgDialogGetStatus()) { case PSP_UTILITY_DIALOG_INIT: case PSP_UTILITY_DIALOG_VISIBLE: sceGuFinish(); sceGuSync(0,0); sceUtilityMsgDialogUpdate(1); sceGuStart(GU_DIRECT, osl_list); oslSetAlpha(OSL_FX_RGBA, 0xff); break; case PSP_UTILITY_DIALOG_QUIT: sceUtilityMsgDialogShutdownStart(); break; case PSP_UTILITY_DIALOG_NONE: break; } }else if (dialogType == OSL_DIALOG_NETCONF){ switch(sceUtilityNetconfGetStatus()){ case PSP_UTILITY_DIALOG_INIT: case PSP_UTILITY_DIALOG_VISIBLE: sceGuFinish(); sceGuSync(0,0); sceUtilityNetconfUpdate(1); sceGuStart(GU_DIRECT, osl_list); oslSetAlpha(OSL_FX_RGBA, 0xff); break; case PSP_UTILITY_DIALOG_QUIT: sceUtilityNetconfShutdownStart(); break; case PSP_UTILITY_DIALOG_NONE: case PSP_UTILITY_DIALOG_FINISHED: break; } } }
void ui_msg_dialog (UI * ui, const char * msg) { pspUtilityMsgDialogParams params; unsigned int swap_count = 0; SceCtrlLatch latch; memset (¶ms, 0, sizeof (params)); params.base.size = sizeof (params); params.base.language = PSP_SYSTEMPARAM_LANGUAGE_ENGLISH; params.base.buttonSwap = PSP_UTILITY_ACCEPT_CROSS; /* Thread priorities */ params.base.graphicsThread = 17; params.base.accessThread = 19; params.base.fontThread = 18; params.base.soundThread = 16; params.mode = PSP_UTILITY_MSGDIALOG_MODE_TEXT; params.options = PSP_UTILITY_MSGDIALOG_OPTION_TEXT; snprintf (params.message, 512, msg); sceUtilityMsgDialogInitStart (¶ms); while (running) { int done = 0; /* directly use GU to avoid flickering with SDL */ sceGuStart (GU_DIRECT, list); sceGuClearColor (0xff554433); sceGuClearDepth (0); sceGuClear (GU_COLOR_BUFFER_BIT|GU_DEPTH_BUFFER_BIT); sceGuFinish (); sceGuSync (0,0); switch (sceUtilityMsgDialogGetStatus ()) { case PSP_UTILITY_DIALOG_NONE: break; case PSP_UTILITY_DIALOG_VISIBLE: sceUtilityMsgDialogUpdate (1); break; case PSP_UTILITY_DIALOG_QUIT: sceUtilityMsgDialogShutdownStart (); break; case PSP_UTILITY_DIALOG_FINISHED: done = 1; break; default: break; } sceDisplayWaitVblankStart (); sceGuSwapBuffers (); swap_count++; if (done) break; } /* hack for SDL compatibility. * if it end up on an odd buffer, SDL won't be displayed. * ie SDL will display in an hidden buffer */ if (swap_count & 1) sceGuSwapBuffers (); /* message dialog seems to causes strange latch behavior, next read * of latch will contains all button pressed during dialog. * read one to reset it */ sceCtrlReadLatch (&latch); }