diff --git a/general.h b/general.h index a21c3c09fb..25c14b1aa4 100644 --- a/general.h +++ b/general.h @@ -108,6 +108,8 @@ enum basic_event RARCH_CMD_OVERLAY_INIT, RARCH_CMD_OVERLAY_DEINIT, RARCH_CMD_OVERLAY_REINIT, + RARCH_CMD_OVERLAY_SET_SCALE_FACTOR, + RARCH_CMD_OVERLAY_SET_ALPHA_MOD, RARCH_CMD_DSP_FILTER_INIT, RARCH_CMD_DSP_FILTER_DEINIT, RARCH_CMD_RECORD_INIT, diff --git a/retroarch.c b/retroarch.c index 50fc8b1cc3..c7b3a8154a 100644 --- a/retroarch.c +++ b/retroarch.c @@ -3252,6 +3252,20 @@ void rarch_main_command(unsigned action) if (driver.audio && driver.audio->set_nonblock_state) driver.audio->set_nonblock_state(driver.audio_data, boolean); break; + case RARCH_CMD_OVERLAY_SET_SCALE_FACTOR: +#ifdef HAVE_OVERLAY + if (driver.overlay) + input_overlay_set_scale_factor(driver.overlay, + g_settings.input.overlay_scale); +#endif + break; + case RARCH_CMD_OVERLAY_SET_ALPHA_MOD: +#ifdef HAVE_OVERLAY + if (driver.overlay) + input_overlay_set_alpha_mod(driver.overlay, + g_settings.input.overlay_opacity); +#endif + break; } } diff --git a/settings_data.c b/settings_data.c index 9121e6e1e8..167df9bf6c 100644 --- a/settings_data.c +++ b/settings_data.c @@ -1180,9 +1180,7 @@ static void general_write_handler(const void *data) else if (!strcmp(setting->name, "input_overlay_opacity")) { g_settings.input.overlay_opacity = *setting->value.fraction; - if (driver.overlay) - input_overlay_set_alpha_mod(driver.overlay, - g_settings.input.overlay_opacity); + rarch_cmd = RARCH_CMD_OVERLAY_SET_ALPHA_MOD; } #endif else if (!strcmp(setting->name, "audio_enable")) @@ -1265,16 +1263,8 @@ static void general_write_handler(const void *data) } else if (!strcmp(setting->name, "input_overlay_scale")) { - if (*setting->value.fraction < setting->min) // Avoid potential divide by zero. - g_settings.input.overlay_scale = setting->min; - else if (*setting->value.fraction > setting->max) - g_settings.input.overlay_scale = setting->max; - else - g_settings.input.overlay_scale = *setting->value.fraction; - - if (driver.overlay) - input_overlay_set_scale_factor(driver.overlay, - g_settings.input.overlay_scale); + g_settings.input.overlay_scale = *setting->value.fraction; + rarch_cmd = RARCH_CMD_OVERLAY_SET_SCALE_FACTOR; } #endif else if (!strcmp(setting->name, "video_allow_rotate")) @@ -1748,8 +1738,8 @@ rarch_setting_t* setting_data_get_list(void) START_GROUP("Overlay Options") START_SUB_GROUP("State") CONFIG_PATH(g_settings.input.overlay, "input_overlay", "Overlay Preset", "", GROUP_NAME, SUBGROUP_NAME, general_write_handler, general_read_handler) WITH_FLAGS(SD_FLAG_ALLOW_EMPTY) WITH_VALUES("cfg") - CONFIG_FLOAT(g_settings.input.overlay_opacity, "input_overlay_opacity", "Overlay Opacity", 0.7f, GROUP_NAME, SUBGROUP_NAME, general_write_handler, general_read_handler) WITH_RANGE(0, 1, 0.1, true, true) - CONFIG_FLOAT(g_settings.input.overlay_scale, "input_overlay_scale", "Overlay Scale", 1.0f, GROUP_NAME, SUBGROUP_NAME, general_write_handler, general_read_handler) WITH_RANGE(0, 2, 0.1, true, true) + CONFIG_FLOAT(g_settings.input.overlay_opacity, "input_overlay_opacity", "Overlay Opacity", 0.7f, GROUP_NAME, SUBGROUP_NAME, general_write_handler, general_read_handler) WITH_RANGE(0, 1, 0.01, true, true) + CONFIG_FLOAT(g_settings.input.overlay_scale, "input_overlay_scale", "Overlay Scale", 1.0f, GROUP_NAME, SUBGROUP_NAME, general_write_handler, general_read_handler) WITH_RANGE(0, 2, 0.01, true, true) END_SUB_GROUP() END_GROUP() #endif