diff --git a/general.h b/general.h index 38c5aadc9e..d58b4a1895 100644 --- a/general.h +++ b/general.h @@ -376,6 +376,12 @@ struct global void config_load(void); void config_set_defaults(void); + +// Callback to be called after config_set_defaults is run +// for platform specific stuff. +typedef void (*config_default_cb_t)(void); +void config_set_defaults_cb(config_default_cb_t cb); + #ifdef HAVE_CONFIGFILE bool config_load_file(const char *path); #endif diff --git a/settings.c b/settings.c index 1c4c90a716..d5721963bc 100644 --- a/settings.c +++ b/settings.c @@ -35,6 +35,12 @@ struct global g_extern; struct console_settings g_console; #endif +static config_default_cb_t g_default_cb; +void config_set_defaults_cb(config_default_cb_t cb) +{ + g_default_cb = cb; +} + #ifdef HAVE_CONFIGFILE static void read_keybinds(config_file_t *conf); #endif @@ -219,6 +225,8 @@ void config_set_defaults(void) for (int i = 0; i < MAX_PLAYERS; i++) g_settings.input.joypad_map[i] = i; + if (g_default_cb) + g_default_cb(); } #ifdef HAVE_CONFIGFILE