From e626008f913a777c03a05905d5bf1c7f50e91aa2 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Wed, 25 Jan 2017 02:53:58 +0100 Subject: [PATCH] state_manager_check_rewind - cleanup --- managers/state_manager.c | 29 +++++++++++++++++++---------- managers/state_manager.h | 4 +++- runloop.c | 12 ++++++++++-- 3 files changed, 32 insertions(+), 13 deletions(-) diff --git a/managers/state_manager.c b/managers/state_manager.c index cd98f932fb..d3a00a6dba 100644 --- a/managers/state_manager.c +++ b/managers/state_manager.c @@ -20,13 +20,13 @@ #include #include +#include #include #include "state_manager.h" #include "../msg_hash.h" #include "../movie.h" #include "../core.h" -#include "../runloop.h" #include "../performance_counters.h" #include "../verbosity.h" #include "../audio/audio_driver.h" @@ -577,9 +577,11 @@ void state_manager_event_deinit(void) * * Checks if rewind toggle/hold was being pressed and/or held. **/ -void state_manager_check_rewind(bool pressed, - unsigned rewind_granularity, bool is_paused) +bool state_manager_check_rewind(bool pressed, + unsigned rewind_granularity, bool is_paused, + char *s, size_t len, unsigned *time) { + bool ret = false; static bool first = true; if (state_manager_frame_is_reversed()) @@ -591,11 +593,11 @@ void state_manager_check_rewind(bool pressed, if (first) { first = false; - return; + return false; } if (!rewind_state.state) - return; + return false; if (pressed) { @@ -609,9 +611,10 @@ void state_manager_check_rewind(bool pressed, audio_driver_setup_rewind(); - runloop_msg_queue_push( - msg_hash_to_str(MSG_REWINDING), 0, - is_paused ? 1 : 30, true); + strlcpy(s, msg_hash_to_str(MSG_REWINDING), len); + + *time = is_paused ? 1 : 30; + ret = true; serial_info.data_const = buf; serial_info.size = rewind_state.size; @@ -627,9 +630,13 @@ void state_manager_check_rewind(bool pressed, serial_info.data_const = buf; serial_info.size = rewind_state.size; core_unserialize(&serial_info); - runloop_msg_queue_push( + + strlcpy(s, msg_hash_to_str(MSG_REWIND_REACHED_END), - 0, 30, true); + len); + + *time = 30; + ret = true; } } else @@ -662,4 +669,6 @@ void state_manager_check_rewind(bool pressed, } core_set_rewind_callbacks(); + + return ret; } diff --git a/managers/state_manager.h b/managers/state_manager.h index c980dad906..31425142f5 100644 --- a/managers/state_manager.h +++ b/managers/state_manager.h @@ -40,7 +40,9 @@ void state_manager_event_init(unsigned rewind_buffer_size); * * Checks if rewind toggle/hold was being pressed and/or held. **/ -void state_manager_check_rewind(bool pressed, unsigned rewind_granularity, bool is_paused); +bool state_manager_check_rewind(bool pressed, + unsigned rewind_granularity, bool is_paused, + char *s, size_t len, unsigned *time); RETRO_END_DECLS diff --git a/runloop.c b/runloop.c index 5a8eaa4dc0..b86b8c7ff5 100644 --- a/runloop.c +++ b/runloop.c @@ -967,8 +967,16 @@ static enum runloop_state runloop_check_state( #ifdef HAVE_CHEEVOS if (!settings->cheevos.hardcore_mode_enable) #endif - state_manager_check_rewind(runloop_cmd_press(current_input, RARCH_REWIND), - settings->rewind_granularity, runloop_paused); + { + char s[128]; + unsigned t = 0; + + s[0] = '\0'; + + if (state_manager_check_rewind(runloop_cmd_press(current_input, RARCH_REWIND), + settings->rewind_granularity, runloop_paused, s, sizeof(s), &t)) + runloop_msg_queue_push(s, 0, t, true); + } runloop_slowmotion = runloop_cmd_press(current_input, RARCH_SLOWMOTION);