diff --git a/menu/menu_setting.c b/menu/menu_setting.c index a888d47dab..84aa89ca7a 100644 --- a/menu/menu_setting.c +++ b/menu/menu_setting.c @@ -50,6 +50,11 @@ #endif +#ifdef HAVE_CHEEVOS +#include "../cheevos/cheevos.h" +#endif + + #include "../frontend/frontend_driver.h" #include "widgets/menu_input_bind_dialog.h" @@ -1871,6 +1876,23 @@ static void overlay_enable_toggle_change_handler(rarch_setting_t *setting) } #endif +#ifdef HAVE_CHEEVOS +static void achievement_hardcore_mode_write_handler(rarch_setting_t *setting) +{ + settings_t *settings = config_get_ptr(); + + if (!setting) + return; + + if (settings && settings->bools.cheevos_hardcore_mode_enable && cheevos_state_loaded_flag) + { + cheevos_hardcore_paused = true; + runloop_msg_queue_push(msg_hash_to_str(MSG_CHEEVOS_HARDCORE_MODE_DISABLED), 0, 180, true); + return; + } +} +#endif + #ifdef HAVE_LAKKA static void systemd_service_toggle(const char *path, char *unit, bool enable) { @@ -7671,7 +7693,7 @@ static bool setting_append_list( &group_info, &subgroup_info, parent_group, - general_write_handler, + achievement_hardcore_mode_write_handler, general_read_handler, SD_FLAG_NONE );