(PS3) Added ssnes_render_cached_frame - this is necessary for the

ingame menu - another problem - swap occurs at end of frame
function - this interferes with the swap done later on in the
ingame menu, leading to flickered libdbgfont text. We will somehow
need to divorce the swap from the main frame function
This commit is contained in:
TwinAphex51224 2012-01-21 03:56:31 +01:00
parent e044275c3e
commit e90b7e6a03
3 changed files with 11 additions and 0 deletions

View File

@ -378,6 +378,7 @@ void ssnes_main_clear_state(void);
int ssnes_main_init(int argc, char *argv[]); int ssnes_main_init(int argc, char *argv[]);
bool ssnes_main_iterate(void); bool ssnes_main_iterate(void);
void ssnes_main_deinit(void); void ssnes_main_deinit(void);
void ssnes_render_cached_frame(void);
extern struct settings g_settings; extern struct settings g_settings;
extern struct global g_extern; extern struct global g_extern;

View File

@ -232,6 +232,8 @@ static void ingame_menu(void)
const uint64_t button_was_pressed = old_state & (old_state ^ state); const uint64_t button_was_pressed = old_state & (old_state ^ state);
const uint64_t button_was_held = old_state & state; const uint64_t button_was_held = old_state & state;
static uint64_t blocking = 0; static uint64_t blocking = 0;
ssnes_render_cached_frame();
if(g_frame_count < special_action_msg_expired && blocking) if(g_frame_count < special_action_msg_expired && blocking)
{ {
@ -531,8 +533,10 @@ int main(int argc, char *argv[])
begin_loop: begin_loop:
if(mode_switch == MODE_EMULATION) if(mode_switch == MODE_EMULATION)
{ {
g_extern.is_paused = false;
input_ps3.poll(NULL); input_ps3.poll(NULL);
while(ssnes_main_iterate()); while(ssnes_main_iterate());
g_extern.is_paused = true;
if(g_console.in_game_menu) if(g_console.in_game_menu)
ingame_menu(); ingame_menu();
} }

View File

@ -1973,6 +1973,11 @@ static void check_mute(void)
old_pressed = pressed; old_pressed = pressed;
} }
void ssnes_render_cached_frame(void)
{
video_cached_frame();
}
static void do_state_checks(void) static void do_state_checks(void)
{ {
check_screenshot(); check_screenshot();
@ -2157,6 +2162,7 @@ bool ssnes_main_iterate(void)
if (driver.input->key_pressed(driver.input_data, SSNES_QUIT_KEY) || if (driver.input->key_pressed(driver.input_data, SSNES_QUIT_KEY) ||
!driver.video->alive(driver.video_data)) !driver.video->alive(driver.video_data))
return false; return false;
printf("Iterate reaches here\n");
// Checks for stuff like fullscreen, save states, etc. // Checks for stuff like fullscreen, save states, etc.
do_state_checks(); do_state_checks();