From f7061e7233e851ed61b7ca97c157ca2635e5234b Mon Sep 17 00:00:00 2001 From: twinaphex Date: Wed, 17 Sep 2014 17:45:44 +0200 Subject: [PATCH 1/2] 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(); From 82806dcd853de8b8db841ee7fa2328e7502c943d Mon Sep 17 00:00:00 2001 From: twinaphex Date: Wed, 17 Sep 2014 17:48:41 +0200 Subject: [PATCH 2/2] Hide away last BIND_PRESSED invocations with check_quit_key_func --- driver.h | 1 + frontend/menu/menu_common.c | 3 +-- retroarch.c | 3 +-- 3 files changed, 3 insertions(+), 4 deletions(-) diff --git a/driver.h b/driver.h index 654c216ed3..52dbdf9745 100644 --- a/driver.h +++ b/driver.h @@ -689,6 +689,7 @@ extern menu_ctx_driver_backend_t menu_ctx_backend_lakka; #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)) +#define check_quit_key_func(input) BIND_PRESSED(input, RARCH_QUIT_KEY) #ifdef __cplusplus } diff --git a/frontend/menu/menu_common.c b/frontend/menu/menu_common.c index 0f1db52ac8..758ed06b19 100644 --- a/frontend/menu/menu_common.c +++ b/frontend/menu/menu_common.c @@ -329,8 +329,7 @@ bool menu_iterate(void) #endif check_fullscreen_func(input, old_state); - if (BIND_PRESSED(input, RARCH_QUIT_KEY) - || !driver.video->alive(driver.video_data)) + if (check_quit_key_func(input) || !driver.video->alive(driver.video_data)) { rarch_main_command(RARCH_CMD_RESUME); return false; diff --git a/retroarch.c b/retroarch.c index 80c68264cb..1cb7268cb7 100644 --- a/retroarch.c +++ b/retroarch.c @@ -3599,8 +3599,7 @@ bool rarch_main_iterate(void) return false; /* Time to drop? */ - if (BIND_PRESSED(input, RARCH_QUIT_KEY) || - !driver.video->alive(driver.video_data)) + if (check_quit_key_func(input) || !driver.video->alive(driver.video_data)) return false; if (check_enter_menu_func(input, old_input))