Do not play audio when rewinding, sound is borked even when shuffling.

This commit is contained in:
Themaister 2011-01-31 17:24:31 +01:00
parent 351e098da1
commit 849e9aa734
2 changed files with 9 additions and 0 deletions

View File

@ -148,6 +148,7 @@ struct global
state_manager_t *state_manager; state_manager_t *state_manager;
void *state_buf; void *state_buf;
bool frame_is_reverse;
bool rewind_enable; bool rewind_enable;
#ifdef HAVE_FFMPEG #ifdef HAVE_FFMPEG

View File

@ -169,6 +169,10 @@ static void audio_sample(uint16_t left, uint16_t right)
if (g_extern.audio_data.data_ptr >= g_extern.audio_data.chunk_size) if (g_extern.audio_data.data_ptr >= g_extern.audio_data.chunk_size)
{ {
if (g_extern.frame_is_reverse) // Disable fucked up audio when rewinding...
memset(g_extern.audio_data.data, 0, g_extern.audio_data.chunk_size * sizeof(float));
SRC_DATA src_data; SRC_DATA src_data;
src_data.data_in = g_extern.audio_data.data; src_data.data_in = g_extern.audio_data.data;
@ -792,6 +796,7 @@ static void check_input_rate(void)
static void check_rewind(void) static void check_rewind(void)
{ {
g_extern.frame_is_reverse = false;
if (!g_extern.state_manager) if (!g_extern.state_manager)
return; return;
@ -799,7 +804,10 @@ static void check_rewind(void)
{ {
void *buf; void *buf;
if (state_manager_pop(g_extern.state_manager, &buf)) if (state_manager_pop(g_extern.state_manager, &buf))
{
snes_unserialize(buf, snes_serialize_size()); snes_unserialize(buf, snes_serialize_size());
g_extern.frame_is_reverse = true;
}
} }
else else
{ {