From dcabde33fc61febaa72cebd90c4ebe0b8246f2d7 Mon Sep 17 00:00:00 2001 From: Jamiras <32680403+Jamiras@users.noreply.github.com> Date: Mon, 4 Apr 2022 17:06:47 -0600 Subject: [PATCH] disallow manual frame delay setting in hardcore (#13826) --- cheevos/cheevos.c | 11 +++++++++++ menu/menu_setting.c | 6 ++++++ 2 files changed, 17 insertions(+) diff --git a/cheevos/cheevos.c b/cheevos/cheevos.c index e19a95b2fd..55eaad49f9 100644 --- a/cheevos/cheevos.c +++ b/cheevos/cheevos.c @@ -957,10 +957,21 @@ void rcheevos_validate_config_settings(void) core_option_manager_t* coreopts = NULL; struct retro_system_info *system = &runloop_state_get_ptr()->system.info; + const settings_t* settings = config_get_ptr(); if (!system->library_name || !rcheevos_locals.hardcore_active) return; + if (!settings->bools.video_frame_delay_auto && settings->uints.video_frame_delay != 0) { + const char* error = "Hardcore paused. Manual video frame delay setting not allowed."; + CHEEVOS_LOG(RCHEEVOS_TAG "%s\n", error); + rcheevos_pause_hardcore(); + + runloop_msg_queue_push(error, 0, 4 * 60, false, NULL, + MESSAGE_QUEUE_ICON_DEFAULT, MESSAGE_QUEUE_CATEGORY_WARNING); + return; + } + if (!(disallowed_settings = rc_libretro_get_disallowed_settings(system->library_name))) return; diff --git a/menu/menu_setting.c b/menu/menu_setting.c index 0b69ade2ab..1f56f0783e 100644 --- a/menu/menu_setting.c +++ b/menu/menu_setting.c @@ -7823,6 +7823,12 @@ static void general_write_handler(rarch_setting_t *setting) *setting->value.target.fraction); } break; +#ifdef HAVE_CHEEVOS + case MENU_ENUM_LABEL_VIDEO_FRAME_DELAY: + case MENU_ENUM_LABEL_VIDEO_FRAME_DELAY_AUTO: + rcheevos_validate_config_settings(); + break; +#endif case MENU_ENUM_LABEL_VIDEO_REFRESH_RATE_AUTO: driver_ctl(RARCH_DRIVER_CTL_SET_REFRESH_RATE, setting->value.target.fraction);