From f7061e7233e851ed61b7ca97c157ca2635e5234b Mon Sep 17 00:00:00 2001 From: twinaphex Date: Wed, 17 Sep 2014 17:45:44 +0200 Subject: [PATCH] Rewrite check_pausegp --- driver.h | 1 + retroarch.c | 14 ++++++-------- 2 files changed, 7 insertions(+), 8 deletions(-) diff --git a/driver.h b/driver.h index b7735b53e2..654c216ed3 100644 --- a/driver.h +++ b/driver.h @@ -688,6 +688,7 @@ extern menu_ctx_driver_backend_t menu_ctx_backend_lakka; #define check_grab_mouse_toggle_func(input, old_input) check_grab_mouse_toggle(BIND_PRESSED(input, RARCH_GRAB_MOUSE_TOGGLE), BIND_PRESSED(old_input, RARCH_GRAB_MOUSE_TOGGLE)) #define check_stateslots_func(input, old_input) check_stateslots(BIND_PRESSED(input, RARCH_STATE_SLOT_PLUS), BIND_PRESSED(old_input, RARCH_STATE_SLOT_PLUS), BIND_PRESSED(input, RARCH_STATE_SLOT_MINUS), BIND_PRESSED(old_input, RARCH_STATE_SLOT_MINUS)) #define check_savestates_func(input, old_input) check_savestates(BIND_PRESSED(input, RARCH_SAVE_STATE_KEY), BIND_PRESSED(old_input, RARCH_SAVE_STATE_KEY), BIND_PRESSED(input, RARCH_LOAD_STATE_KEY), BIND_PRESSED(old_input, RARCH_LOAD_STATE_KEY), g_extern.bsv.movie) +#define check_pause_func(input, old_input) check_pause(BIND_PRESSED(input, RARCH_PAUSE_TOGGLE), BIND_PRESSED(old_input, RARCH_PAUSE_TOGGLE), BIND_PRESSED(input, RARCH_FRAMEADVANCE)) #ifdef __cplusplus } diff --git a/retroarch.c b/retroarch.c index 0c2be96776..80c68264cb 100644 --- a/retroarch.c +++ b/retroarch.c @@ -2381,18 +2381,17 @@ static void check_movie(bool new_pressed, bool old_pressed) check_movie_record(pressed); } -static void check_pause(retro_input_t input, retro_input_t old_input) +static void check_pause( + bool new_state, bool old_state, + bool frameadvance_pressed) { - static bool old_state = false; static bool old_focus = true; bool focus = true; bool has_set_audio_stop = false; bool has_set_audio_start = false; - bool new_state = BIND_PRESSED(input, RARCH_PAUSE_TOGGLE); /* FRAMEADVANCE will set us into pause mode. */ - new_state |= !g_extern.is_paused && - BIND_PRESSED(input, RARCH_FRAMEADVANCE); + new_state |= !g_extern.is_paused && frameadvance_pressed; if (g_settings.pause_nonactive) focus = driver.video->focus(driver.video_data); @@ -2434,7 +2433,6 @@ static void check_pause(retro_input_t input, retro_input_t old_input) rarch_render_cached_frame(); old_focus = focus; - old_state = new_state; } static void check_oneshot( @@ -2858,7 +2856,7 @@ static void do_state_checks(retro_input_t input, retro_input_t old_input) return; } #endif - check_pause(input, old_input); + check_pause_func(input, old_input); check_oneshot_func(input, old_input); @@ -3624,7 +3622,6 @@ bool rarch_main_iterate(void) return true; } - /* Run libretro for one frame. */ #if defined(HAVE_THREADS) lock_autosave(); #endif @@ -3652,6 +3649,7 @@ bool rarch_main_iterate(void) if ((g_settings.video.frame_delay > 0) && !driver.nonblock_state) rarch_sleep(g_settings.video.frame_delay); + /* Run libretro for one frame. */ update_frame_time(); pretro_run(); limit_frame_time();