diff --git a/command_event.c b/command_event.c index 21c8fa1b96..a9b2017f03 100644 --- a/command_event.c +++ b/command_event.c @@ -1127,6 +1127,14 @@ bool event_command(enum event_command cmd) event_main_state(cmd); break; + case EVENT_CMD_SAVE_STATE_DECREMENT: + /* Slot -1 is (auto) slot. */ + if (settings->state_slot >= 0) + settings->state_slot--; + break; + case EVENT_CMD_SAVE_STATE_INCREMENT: + settings->state_slot++; + break; case EVENT_CMD_TAKE_SCREENSHOT: if (!take_screenshot()) return false; diff --git a/command_event.h b/command_event.h index d47e1291a7..ded995fb66 100644 --- a/command_event.h +++ b/command_event.h @@ -41,6 +41,8 @@ enum event_command EVENT_CMD_UNLOAD_CORE, EVENT_CMD_LOAD_STATE, EVENT_CMD_SAVE_STATE, + EVENT_CMD_SAVE_STATE_DECREMENT, + EVENT_CMD_SAVE_STATE_INCREMENT, /* Takes screenshot. */ EVENT_CMD_TAKE_SCREENSHOT, /* Initializes dummy core. */ diff --git a/menu/cbs/menu_cbs_left.c b/menu/cbs/menu_cbs_left.c index 2abfc0fcb6..fb7f7282c9 100644 --- a/menu/cbs/menu_cbs_left.c +++ b/menu/cbs/menu_cbs_left.c @@ -103,12 +103,7 @@ static int action_left_input_desc(unsigned type, const char *label, static int action_left_save_state(unsigned type, const char *label, bool wraparound) { - settings_t *settings = config_get_ptr(); - - /* Slot -1 is (auto) slot. */ - if (settings->state_slot >= 0) - settings->state_slot--; - + event_command(EVENT_CMD_SAVE_STATE_DECREMENT); return 0; } diff --git a/menu/cbs/menu_cbs_right.c b/menu/cbs/menu_cbs_right.c index 602e987052..ed70ffbc7b 100644 --- a/menu/cbs/menu_cbs_right.c +++ b/menu/cbs/menu_cbs_right.c @@ -110,9 +110,7 @@ int action_right_input_desc(unsigned type, const char *label, static int action_right_save_state(unsigned type, const char *label, bool wraparound) { - settings_t *settings = config_get_ptr(); - - settings->state_slot++; + event_command(EVENT_CMD_SAVE_STATE_INCREMENT); return 0; }