From b3309d2132b87bc594198be675f24bd64ff27121 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Wed, 8 Oct 2014 16:12:00 +0200 Subject: [PATCH] Create RARCH_CMD_PAUSE_TOGGLE --- general.h | 1 + retroarch.c | 17 ++++++++++++++++- runloop.c | 23 ++++++----------------- 3 files changed, 23 insertions(+), 18 deletions(-) diff --git a/general.h b/general.h index ef471b7e51..4364650ea0 100644 --- a/general.h +++ b/general.h @@ -134,6 +134,7 @@ enum basic_event RARCH_CMD_RESTART_RETROARCH, RARCH_CMD_QUIT_RETROARCH, RARCH_CMD_RESUME, + RARCH_CMD_PAUSE_TOGGLE, RARCH_CMD_MENU_SAVE_CONFIG, RARCH_CMD_MENU_PAUSE_LIBRETRO, RARCH_CMD_SHADERS_APPLY_CHANGES, diff --git a/retroarch.c b/retroarch.c index 66d336595f..a826b0cb86 100644 --- a/retroarch.c +++ b/retroarch.c @@ -2313,7 +2313,7 @@ bool rarch_main_command(unsigned cmd) "Audio muted." : "Audio unmuted."; if (!driver.audio_data || !driver.audio_active) - return; + return false; g_extern.audio_data.mute = !g_extern.audio_data.mute; @@ -2493,6 +2493,21 @@ bool rarch_main_command(unsigned cmd) menu_shader_manager_apply_changes(); #endif break; + case RARCH_CMD_PAUSE_TOGGLE: + if (g_extern.is_paused) + { + RARCH_LOG("Paused.\n"); + rarch_main_command(RARCH_CMD_AUDIO_STOP); + + if (g_settings.video.black_frame_insertion) + rarch_render_cached_frame(); + } + else + { + RARCH_LOG("Unpaused.\n"); + rarch_main_command(RARCH_CMD_AUDIO_START); + } + break; case RARCH_CMD_MENU_PAUSE_LIBRETRO: if (g_extern.is_menu) { diff --git a/runloop.c b/runloop.c index a52d3c062c..1a1bd1dce7 100644 --- a/runloop.c +++ b/runloop.c @@ -66,7 +66,7 @@ static void check_netplay_flip(bool pressed, bool fullscreen_toggle_pressed) } #endif -static void check_pause(bool pressed, bool frameadvance_pressed) +static bool check_pause(bool pressed, bool frameadvance_pressed) { static bool old_focus = true; bool focus = true; @@ -88,21 +88,9 @@ static void check_pause(bool pressed, bool frameadvance_pressed) old_focus = focus; if (g_extern.is_paused == old_is_paused) - return; - - if (g_extern.is_paused) - { - RARCH_LOG("Paused.\n"); - rarch_main_command(RARCH_CMD_AUDIO_STOP); - - if (g_settings.video.black_frame_insertion) - rarch_render_cached_frame(); - } - else - { - RARCH_LOG("Unpaused.\n"); - rarch_main_command(RARCH_CMD_AUDIO_START); - } + return false; + + return true; } /* Rewind buttons works like FRAMEREWIND when paused. @@ -426,7 +414,8 @@ static int do_state_checks( return 0; } #endif - check_pause_func(trigger_input); + if (check_pause_func(trigger_input)) + rarch_main_command(RARCH_CMD_PAUSE_TOGGLE); if (g_extern.is_paused) {