diff --git a/menu/menu_displaylist.c b/menu/menu_displaylist.c index 0416e84d35..726d51f76b 100644 --- a/menu/menu_displaylist.c +++ b/menu/menu_displaylist.c @@ -3035,7 +3035,9 @@ int menu_displaylist_push_list(menu_displaylist_info_t *info, unsigned type) case DISPLAYLIST_CORE_OPTIONS: if (runloop_ctl(RUNLOOP_CTL_HAS_CORE_OPTIONS, NULL)) { - size_t opts = core_option_size(system->core_options); + size_t opts; + + runloop_ctl(RUNLOOP_CTL_GET_CORE_OPTION_SIZE, &opts); if (settings->game_specific_options) { diff --git a/runloop.c b/runloop.c index ad7fc88f98..e16ea07b94 100644 --- a/runloop.c +++ b/runloop.c @@ -521,6 +521,14 @@ bool runloop_ctl(enum runloop_ctl_state state, void *data) sizeof(system->valid_extensions)); system->block_extract = system->info.block_extract; break; + case RUNLOOP_CTL_GET_CORE_OPTION_SIZE: + { + unsigned *idx = (unsigned*)data; + if (!idx) + return false; + *idx = core_option_size(system->core_options); + } + return true; case RUNLOOP_CTL_HAS_CORE_OPTIONS: return system && system->core_options; case RUNLOOP_CTL_SYSTEM_INFO_FREE: diff --git a/runloop.h b/runloop.h index ca31eefc13..e69f651e17 100644 --- a/runloop.h +++ b/runloop.h @@ -87,6 +87,7 @@ enum runloop_ctl_state RUNLOOP_CTL_MSG_QUEUE_UNLOCK, RUNLOOP_CTL_MSG_QUEUE_FREE, RUNLOOP_CTL_HAS_CORE_OPTIONS, + RUNLOOP_CTL_GET_CORE_OPTION_SIZE, RUNLOOP_CTL_IS_CORE_OPTION_UPDATED, RUNLOOP_CTL_CORE_OPTION_PREV, RUNLOOP_CTL_CORE_OPTION_NEXT,