diff --git a/dynamic.h b/dynamic.h index 4922ddf4ba..da233567d3 100644 --- a/dynamic.h +++ b/dynamic.h @@ -87,6 +87,7 @@ struct retro_core_t bool symbols_inited; bool game_loaded; bool input_polled; + bool has_set_subsystems; bool has_set_input_descriptors; uint64_t serialization_quirks_v; }; diff --git a/retroarch.c b/retroarch.c index 695a11bb7b..3009aa2633 100644 --- a/retroarch.c +++ b/retroarch.c @@ -7678,6 +7678,7 @@ static void global_free(void) runloop_remaps_content_dir_active = false; current_core.has_set_input_descriptors = false; + current_core.has_set_subsystems = false; global = &g_extern; path_clear_all(); @@ -9763,6 +9764,7 @@ static bool rarch_environment_cb(unsigned cmd, void *data) memcpy(system->subsystem.data, info, i * sizeof(*system->subsystem.data)); system->subsystem.size = i; + current_core.has_set_subsystems = true; } break; } @@ -24474,6 +24476,7 @@ static void retroarch_parse_input_and_config(int argc, char *argv[]) /* Flush out some states that could have been set * by core environment variables. */ current_core.has_set_input_descriptors = false; + current_core.has_set_subsystems = false; /* Load the config file now that we know what it is */ if (!rarch_block_config_read) @@ -25598,6 +25601,8 @@ bool rarch_ctl(enum rarch_ctl_state state, void *data) { switch(state) { + case RARCH_CTL_HAS_SET_SUBSYSTEMS: + return (current_core.has_set_subsystems); case RARCH_CTL_CORE_IS_RUNNING: return runloop_core_running; case RARCH_CTL_BSV_MOVIE_IS_INITED: diff --git a/retroarch.h b/retroarch.h index 02c045378f..2d94072136 100644 --- a/retroarch.h +++ b/retroarch.h @@ -113,6 +113,8 @@ enum rarch_ctl_state /* Username */ RARCH_CTL_HAS_SET_USERNAME, + RARCH_CTL_HAS_SET_SUBSYSTEMS, + RARCH_CTL_TASK_INIT, RARCH_CTL_SET_FRAME_TIME_LAST,