diff --git a/menu/menu_driver.c b/menu/menu_driver.c index e83805515f..1cd8ccbefe 100644 --- a/menu/menu_driver.c +++ b/menu/menu_driver.c @@ -288,10 +288,8 @@ static void menu_driver_toggle(bool latch) rarch_system_info_t *system = NULL; runloop_ctl(RUNLOOP_CTL_SYSTEM_INFO_GET, &system); + menu_driver_ctl(RARCH_MENU_CTL_TOGGLE, &latch); - if (driver->toggle) - driver->toggle( - menu_userdata ? menu_userdata : NULL, latch); if (latch) menu_driver_ctl(RARCH_MENU_CTL_SET_ALIVE, NULL); @@ -843,6 +841,16 @@ bool menu_driver_ctl(enum rarch_menu_ctl_state state, void *data) driver->list_clear(list); } return true; + case RARCH_MENU_CTL_TOGGLE: + { + bool *latch = (bool*)data; + if (!latch) + return false; + + if (driver->toggle) + driver->toggle(menu_userdata, *latch); + } + break; default: case RARCH_MENU_CTL_NONE: break; diff --git a/menu/menu_driver.h b/menu/menu_driver.h index a4f8f82035..5c26597d5a 100644 --- a/menu/menu_driver.h +++ b/menu/menu_driver.h @@ -127,6 +127,7 @@ enum rarch_menu_ctl_state RARCH_MENU_CTL_PLAYLIST_INIT, RARCH_MENU_CTL_PLAYLIST_GET, RARCH_MENU_CTL_LIST_CLEAR, + RARCH_MENU_CTL_TOGGLE, RARCH_MENU_CTL_POPULATE_ENTRIES };