Do not block state saving when playing/recording a movie.

This commit is contained in:
Themaister 2012-03-10 14:08:04 +01:00
parent 31be6766c6
commit 7489f387c1
1 changed files with 16 additions and 12 deletions

28
ssnes.c
View File

@ -1568,19 +1568,26 @@ void ssnes_save_state(void)
} }
// Save or load state here. // Save or load state here.
static void check_savestates(void) static void check_savestates(bool immutable)
{ {
static bool old_should_savestate = false; static bool old_should_savestate = false;
bool should_savestate = driver.input->key_pressed(driver.input_data, SSNES_SAVE_STATE_KEY); bool should_savestate = driver.input->key_pressed(driver.input_data,
SSNES_SAVE_STATE_KEY);
if (should_savestate && !old_should_savestate) if (should_savestate && !old_should_savestate)
ssnes_save_state(); ssnes_save_state();
old_should_savestate = should_savestate; old_should_savestate = should_savestate;
static bool old_should_loadstate = false; if (!immutable)
bool should_loadstate = driver.input->key_pressed(driver.input_data, SSNES_LOAD_STATE_KEY); {
if (!should_savestate && should_loadstate && !old_should_loadstate) static bool old_should_loadstate = false;
ssnes_load_state(); bool should_loadstate = driver.input->key_pressed(driver.input_data,
old_should_loadstate = should_loadstate; SSNES_LOAD_STATE_KEY);
if (!should_savestate && should_loadstate && !old_should_loadstate)
ssnes_load_state();
old_should_loadstate = should_loadstate;
}
} }
static bool check_fullscreen(void) static bool check_fullscreen(void)
@ -2077,11 +2084,8 @@ static void do_state_checks(void)
driver.input->key_pressed(driver.input_data, SSNES_FAST_FORWARD_KEY), driver.input->key_pressed(driver.input_data, SSNES_FAST_FORWARD_KEY),
driver.input->key_pressed(driver.input_data, SSNES_FAST_FORWARD_HOLD_KEY)); driver.input->key_pressed(driver.input_data, SSNES_FAST_FORWARD_HOLD_KEY));
if (!g_extern.bsv.movie) check_stateslots();
{ check_savestates(g_extern.bsv.movie);
check_stateslots();
check_savestates();
}
check_rewind(); check_rewind();
check_slowmotion(); check_slowmotion();