Allow stopping playback early.

This commit is contained in:
Themaister 2012-03-10 18:31:25 +01:00
parent f78df09c38
commit 8a6b628bee

34
ssnes.c
View File

@ -1771,11 +1771,7 @@ static void check_slowmotion(void)
}
}
static void check_movie_record(void)
{
static bool old_button = false;
bool new_button;
if ((new_button = driver.input->key_pressed(driver.input_data, SSNES_MOVIE_RECORD_TOGGLE)) && !old_button)
static void movie_record_toggle(void)
{
if (g_extern.bsv.movie)
{
@ -1815,12 +1811,15 @@ static void check_movie_record(void)
}
}
old_button = new_button;
static void check_movie_record(bool pressed)
{
if (pressed)
movie_record_toggle();
}
static void check_movie_playback(void)
static void check_movie_playback(bool pressed)
{
if (g_extern.bsv.movie_end)
if (g_extern.bsv.movie_end || pressed)
{
msg_queue_push(g_extern.msg_queue, "Movie playback ended.", 1, 180);
SSNES_LOG("Movie playback ended.\n");
@ -1832,6 +1831,20 @@ static void check_movie_playback(void)
}
}
static void check_movie(void)
{
static bool old_button = false;
bool new_button = driver.input->key_pressed(driver.input_data, SSNES_MOVIE_RECORD_TOGGLE);
bool pressed = new_button && !old_button;
if (g_extern.bsv.movie_playback)
check_movie_playback(pressed);
else
check_movie_record(pressed);
old_button = new_button;
}
static void check_pause(void)
{
static bool old_state = false;
@ -2090,10 +2103,7 @@ static void do_state_checks(void)
check_rewind();
check_slowmotion();
if (g_extern.bsv.movie_playback)
check_movie_playback();
else
check_movie_record();
check_movie();
#ifdef HAVE_XML
check_shader_dir();