state_manager_check_rewind - cleanup

This commit is contained in:
twinaphex 2017-01-25 02:53:58 +01:00
parent 7594f6d4d7
commit e626008f91
3 changed files with 32 additions and 13 deletions

View File

@ -20,13 +20,13 @@
#include <string.h>
#include <retro_inline.h>
#include <compat/strl.h>
#include <algorithms/mismatch.h>
#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;
}

View File

@ -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

View File

@ -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);