(PS3) Sysutil exit callback works in menu too

This commit is contained in:
TwinAphex51224 2012-01-13 01:27:18 +01:00
parent 83c3d7be57
commit 2dce493240
4 changed files with 20 additions and 233 deletions

View File

@ -213,6 +213,21 @@ static void get_path_settings(bool multiman_support)
}
}
static void callback_sysutil_exit(uint64_t status, uint64_t param, void *userdata)
{
(void) param;
(void) userdata;
switch (status)
{
case CELL_SYSUTIL_REQUEST_EXITGAME:
menu_is_running = 0;
g_quitting = true;
sys_process_exit(0);
break;
}
}
// Temporary, a more sane implementation should go here.
int main(int argc, char *argv[])
{
@ -222,6 +237,9 @@ int main(int argc, char *argv[])
cellSysmoduleLoadModule(CELL_SYSMODULE_FS);
cellSysmoduleLoadModule(CELL_SYSMODULE_SYSUTIL_GAME);
SSNES_LOG("Registering Callback\n");
cellSysutilRegisterCallback(0, callback_sysutil_exit, NULL);
g_rom_loaded = false;
#ifdef MULTIMAN_SUPPORT
return_to_MM = true;

View File

@ -498,225 +498,10 @@ static void do_pathChoice(uint32_t menu_id)
static void display_help_text(int currentsetting)
{
switch(currentsetting)
{
case SETTING_HW_TEXTURE_FILTER:
case SETTING_HW_TEXTURE_FILTER_2:
case SETTING_SCALE_ENABLED:
case SETTING_ENABLE_SCREENSHOTS:
case SETTING_TRIPLE_BUFFERING:
case SETTING_THROTTLE_MODE:
case SETTING_APPLY_SHADER_PRESET_ON_STARTUP:
print_help_message_yesno(menu_generalvideosettings, currentsetting);
break;
case SETTING_SCALE_FACTOR:
snprintf(menu_generalvideosettings.items[currentsetting].comment, sizeof(menu_generalvideosettings.items[currentsetting].comment), "INFO - [Custom Scaling Factor] is set to: %dx (X), %dx (Y).", g_settings.video.fbo_scale_x, g_settings.video.fbo_scale_y);
print_help_message(menu_generalvideosettings, currentsetting);
break;
case SETTING_KEEP_ASPECT_RATIO:
break;
case SETTING_SOUND_MODE:
print_help_message(menu_generalaudiosettings, currentsetting);
break;
case SETTING_BORDER:
/*case SETTING_GAME_AWARE_SHADER:*/
case SETTING_SHADER:
case SETTING_SHADER_2:
case SETTING_FONT_SIZE:
case SETTING_CHANGE_RESOLUTION:
case SETTING_HW_OVERSCAN_AMOUNT:
case SETTING_DEFAULT_VIDEO_ALL:
case SETTING_SAVE_SHADER_PRESET:
print_help_message(menu_generalvideosettings, currentsetting);
break;
case SETTING_DEFAULT_AUDIO_ALL:
case SETTING_RSOUND_SERVER_IP_ADDRESS:
print_help_message(menu_generalaudiosettings, currentsetting);
break;
case SETTING_CONTROLS_SCHEME:
break;
case SETTING_CONTROLS_DPAD_UP:
case SETTING_CONTROLS_DPAD_DOWN:
case SETTING_CONTROLS_DPAD_LEFT:
case SETTING_CONTROLS_DPAD_RIGHT:
case SETTING_CONTROLS_BUTTON_CIRCLE:
case SETTING_CONTROLS_BUTTON_CROSS:
case SETTING_CONTROLS_BUTTON_TRIANGLE:
case SETTING_CONTROLS_BUTTON_SQUARE:
case SETTING_CONTROLS_BUTTON_SELECT:
case SETTING_CONTROLS_BUTTON_START:
case SETTING_CONTROLS_BUTTON_L1:
case SETTING_CONTROLS_BUTTON_R1:
case SETTING_CONTROLS_BUTTON_L2:
case SETTING_CONTROLS_BUTTON_R2:
case SETTING_CONTROLS_BUTTON_L3:
case SETTING_CONTROLS_BUTTON_R3:
case SETTING_CONTROLS_BUTTON_L2_BUTTON_L3:
case SETTING_CONTROLS_BUTTON_L2_BUTTON_R3:
case SETTING_CONTROLS_BUTTON_L2_ANALOG_R_RIGHT:
case SETTING_CONTROLS_BUTTON_L2_ANALOG_R_LEFT:
case SETTING_CONTROLS_BUTTON_L2_ANALOG_R_UP:
case SETTING_CONTROLS_BUTTON_L2_ANALOG_R_DOWN:
case SETTING_CONTROLS_BUTTON_R2_ANALOG_R_RIGHT:
case SETTING_CONTROLS_BUTTON_R2_ANALOG_R_LEFT:
case SETTING_CONTROLS_BUTTON_R2_ANALOG_R_UP:
case SETTING_CONTROLS_BUTTON_R2_ANALOG_R_DOWN:
case SETTING_CONTROLS_BUTTON_R2_BUTTON_R3:
case SETTING_CONTROLS_BUTTON_R3_BUTTON_L3:
case SETTING_CONTROLS_ANALOG_R_UP:
case SETTING_CONTROLS_ANALOG_R_DOWN:
case SETTING_CONTROLS_ANALOG_R_LEFT:
case SETTING_CONTROLS_ANALOG_R_RIGHT:
//cellDbgFontPrintf(0.09f, 0.83f, 0.86f, LIGHTBLUE, "INFO - [%s] on the PS3 controller is mapped to action:\n[%s].", menu_controlssettings.items[currentsetting].text, Input_PrintMappedButton(control_binds[currently_selected_controller_menu][currentsetting-FIRST_CONTROL_BIND]));
break;
case SETTING_CONTROLS_SAVE_CUSTOM_CONTROLS:
cellDbgFontPuts(0.09f, 0.83f, 0.86f, LIGHTBLUE, "INFO - Save the custom control settings.\nNOTE: This option will not do anything with Control Scheme [New] or [Default].");
break;
case SETTING_CONTROLS_DEFAULT_ALL:
cellDbgFontPuts(0.09f, 0.83f, 0.86f, LIGHTBLUE, "INFO - Set all 'Controls' settings back to their default values.");
break;
case SETTING_EMU_CURRENT_SAVE_STATE_SLOT:
case SETTING_EMU_DEFAULT_ALL:
print_help_message(menu_emu_settings, currentsetting);
case SETTING_EMU_VIDEO_DEFAULT_ALL:
print_help_message(menu_emu_videosettings, currentsetting);
break;
case SETTING_EMU_AUDIO_DEFAULT_ALL:
print_help_message(menu_emu_audiosettings, currentsetting);
break;
case SETTING_PATH_SAVESTATES_DIRECTORY:
case SETTING_PATH_DEFAULT_ROM_DIRECTORY:
case SETTING_PATH_SRAM_DIRECTORY:
case SETTING_PATH_CHEATS:
case SETTING_PATH_DEFAULT_ALL:
print_help_message(menu_pathsettings, currentsetting);
break;
/*
case SETTING_PAL60_MODE:
cellDbgFontPrintf(0.09f, 0.83f, 0.86f, LIGHTBLUE, "%s", Settings.PS3PALTemporalMode60Hz ? "INFO - PAL 60Hz mode is enabled - 60Hz NTSC games will run correctly at 576p PAL\nresolution. NOTE: This is configured on-the-fly." : "INFO - PAL 60Hz mode disabled - 50Hz PAL games will run correctly at 576p PAL\nresolution. NOTE: This is configured on-the-fly.");
break;
*/
}
}
static void display_label_value(uint64_t switchvalue)
{
switch(switchvalue)
{
case SETTING_CHANGE_RESOLUTION:
{
cellDbgFontPrintf(0.5f, menu_generalvideosettings.items[switchvalue].text_ypos, FONT_SIZE, GREEN, "Unimplemented");
cellDbgFontDraw();
break;
}
#if 0
case SETTING_PAL60_MODE:
cellDbgFontPuts (menu_generalvideosettings.items[switchvalue].text_xpos, menu_generalvideosettings.items[switchvalue].text_ypos, FONT_SIZE, currently_selected_setting == menu_generalvideosettings.items[switchvalue].enum_id ? YELLOW : WHITE, "PAL60 Mode (576p only)");
cellDbgFontPrintf (0.5f, menu_generalvideosettings.items[switchvalue].text_ypos, FONT_SIZE, Settings.PS3PALTemporalMode60Hz ? ORANGE : GREEN, Settings.PS3PALTemporalMode60Hz ? "ON" : "OFF");
break;
#endif
#if 0
case SETTING_GAME_AWARE_SHADER:
cellDbgFontPrintf(0.5f, menu_generalvideosettings.items[menu_generalvideosettings.items[switchvalue].enum_id].text_ypos, FONT_SIZE, Settings.GameAwareShaderPath == "" ? GREEN : ORANGE, "%s", Settings.GameAwareShaderPath);
break;
#endif
case SETTING_SHADER_PRESETS:
break;
case SETTING_BORDER:
{
}
break;
case SETTING_SHADER:
{
}
break;
case SETTING_SHADER_2:
{
}
break;
case SETTING_FONT_SIZE:
cellDbgFontPrintf(0.5f, menu_generalvideosettings.items[switchvalue].text_ypos, FONT_SIZE, GREEN, "%f", FONT_SIZE);
break;
case SETTING_KEEP_ASPECT_RATIO:
cellDbgFontDraw();
break;
case SETTING_HW_TEXTURE_FILTER:
cellDbgFontPrintf(0.5f, menu_generalvideosettings.items[switchvalue].text_ypos, FONT_SIZE, g_settings.video.smooth ? GREEN : ORANGE, g_settings.video.smooth ? "Linear interpolation" : "Point filtering");
break;
case SETTING_HW_TEXTURE_FILTER_2:
cellDbgFontPrintf(0.5f, menu_generalvideosettings.items[switchvalue].text_ypos, FONT_SIZE, !(menu_generalvideosettings.items[menu_generalvideosettings.items[switchvalue].enum_id].enabled) ? SILVER : g_settings.video.second_pass_smooth ? GREEN : ORANGE, g_settings.video.second_pass_smooth ? "Linear interpolation" : "Point filtering");
break;
case SETTING_SCALE_FACTOR:
cellDbgFontPrintf(0.5f, menu_generalvideosettings.items[menu_generalvideosettings.items[switchvalue].enum_id].text_ypos, FONT_SIZE, (menu_generalvideosettings.items[menu_generalvideosettings.items[switchvalue].enum_id].enabled == 0) ? SILVER : g_settings.video.fbo_scale_x == 2 && g_settings.video.fbo_scale_y ? GREEN : ORANGE, "%dx (X), %dx (Y)", g_settings.video.fbo_scale_x, g_settings.video.fbo_scale_y);
break;
case SETTING_HW_OVERSCAN_AMOUNT:
break;
case SETTING_SOUND_MODE:
break;
case SETTING_RSOUND_SERVER_IP_ADDRESS:
break;
case SETTING_THROTTLE_MODE:
case SETTING_ENABLE_SCREENSHOTS:
case SETTING_TRIPLE_BUFFERING:
case SETTING_SCALE_ENABLED:
case SETTING_APPLY_SHADER_PRESET_ON_STARTUP:
break;
case SETTING_EMU_CURRENT_SAVE_STATE_SLOT:
cellDbgFontPrintf(0.5f, menu_emu_settings.items[menu_emu_settings.items[switchvalue].enum_id].text_ypos, FONT_SIZE, g_extern.state_slot == 0 ? GREEN : ORANGE, "%d", g_extern.state_slot);
break;
case SETTING_PATH_DEFAULT_ROM_DIRECTORY:
break;
case SETTING_PATH_SAVESTATES_DIRECTORY:
break;
case SETTING_PATH_SRAM_DIRECTORY:
break;
case SETTING_PATH_CHEATS:
cellDbgFontPuts (0.5f, menu_pathsettings.items[switchvalue].text_ypos, FONT_SIZE, !(strcmp(g_settings.cheat_database,usrDirPath)) ? GREEN : ORANGE, g_settings.cheat_database);
break;
case SETTING_DEFAULT_VIDEO_ALL:
case SETTING_SAVE_SHADER_PRESET:
case SETTING_DEFAULT_AUDIO_ALL:
case SETTING_CONTROLS_SAVE_CUSTOM_CONTROLS:
cellDbgFontDraw();
break;
case SETTING_CONTROLS_SCHEME:
break;
case SETTING_CONTROLS_NUMBER:
break;
case SETTING_CONTROLS_DPAD_UP:
case SETTING_CONTROLS_DPAD_DOWN:
case SETTING_CONTROLS_DPAD_LEFT:
case SETTING_CONTROLS_DPAD_RIGHT:
case SETTING_CONTROLS_BUTTON_CIRCLE:
case SETTING_CONTROLS_BUTTON_CROSS:
case SETTING_CONTROLS_BUTTON_TRIANGLE:
case SETTING_CONTROLS_BUTTON_SQUARE:
case SETTING_CONTROLS_BUTTON_SELECT:
case SETTING_CONTROLS_BUTTON_START:
case SETTING_CONTROLS_BUTTON_L1:
case SETTING_CONTROLS_BUTTON_R1:
case SETTING_CONTROLS_BUTTON_L2:
case SETTING_CONTROLS_BUTTON_R2:
case SETTING_CONTROLS_BUTTON_L3:
case SETTING_CONTROLS_BUTTON_R3:
case SETTING_CONTROLS_BUTTON_L2_BUTTON_L3:
case SETTING_CONTROLS_BUTTON_L2_BUTTON_R3:
case SETTING_CONTROLS_BUTTON_L2_ANALOG_R_RIGHT:
case SETTING_CONTROLS_BUTTON_L2_ANALOG_R_LEFT:
case SETTING_CONTROLS_BUTTON_L2_ANALOG_R_UP:
case SETTING_CONTROLS_BUTTON_L2_ANALOG_R_DOWN:
case SETTING_CONTROLS_BUTTON_R2_ANALOG_R_RIGHT:
case SETTING_CONTROLS_BUTTON_R2_ANALOG_R_LEFT:
case SETTING_CONTROLS_BUTTON_R2_ANALOG_R_UP:
case SETTING_CONTROLS_BUTTON_R2_ANALOG_R_DOWN:
case SETTING_CONTROLS_BUTTON_R2_BUTTON_R3:
case SETTING_CONTROLS_BUTTON_R3_BUTTON_L3:
case SETTING_CONTROLS_ANALOG_R_UP:
case SETTING_CONTROLS_ANALOG_R_DOWN:
case SETTING_CONTROLS_ANALOG_R_LEFT:
case SETTING_CONTROLS_ANALOG_R_RIGHT:
break;
}
}
static void apply_scaling(void)

View File

@ -89,7 +89,7 @@ static bool load_fbo_proc(void) { return true; }
#endif
#define TEXTURES_MASK (TEXTURES - 1)
static bool g_quitting;
bool g_quitting;
unsigned g_frame_count;
void *g_gl;
@ -881,21 +881,6 @@ static bool psgl_init_device(gl_t *gl, const video_info_t *video, uint32_t resol
return true;
}
void callback_sysutil_exit(uint64_t status, uint64_t param, void *userdata)
{
(void) param;
(void) userdata;
switch (status)
{
case CELL_SYSUTIL_REQUEST_EXITGAME:
g_quitting = true;
break;
default:
break;
}
}
static void psgl_init_dbgfont(gl_t *gl)
{
CellDbgFontConfig cfg;
@ -943,8 +928,6 @@ static void *gl_init(const video_info_t *video, const input_driver_t **input, vo
gl_init_fbo(gl, SSNES_SCALE_BASE * video->input_scale,
SSNES_SCALE_BASE * video->input_scale);
SSNES_LOG("Registering Callback\n");
cellSysutilRegisterCallback(0, callback_sysutil_exit, NULL);
gl->keep_aspect = video->force_aspect;

View File

@ -22,6 +22,7 @@ extern char special_action_msg[256];
extern uint32_t special_action_msg_expired;
extern unsigned g_frame_count;
extern bool g_rom_loaded;
extern bool g_quitting;
extern char contentInfoPath[MAX_PATH_LENGTH];
extern char usrDirPath[MAX_PATH_LENGTH];