(Menu) Immediately apply changes to shader parameters

This commit is contained in:
twinaphex 2014-09-05 03:44:19 +02:00
parent d72b368dc5
commit f7e1cb870f
4 changed files with 45 additions and 30 deletions

View File

@ -1051,33 +1051,7 @@ static int menu_setting_ok_toggle(unsigned type,
}
else if (!strcmp(label, "shader_apply_changes"))
{
unsigned shader_type = RARCH_SHADER_NONE;
if (driver.menu_ctx && driver.menu_ctx->backend &&
driver.menu_ctx->backend->shader_manager_get_type)
shader_type = driver.menu_ctx->backend->shader_manager_get_type(
driver.menu->shader);
if (driver.menu->shader->passes && shader_type != RARCH_SHADER_NONE
&& driver.menu_ctx && driver.menu_ctx->backend &&
driver.menu_ctx->backend->shader_manager_save_preset)
driver.menu_ctx->backend->shader_manager_save_preset(NULL, true);
else
{
shader_type = gfx_shader_parse_type("", DEFAULT_SHADER_TYPE);
if (shader_type == RARCH_SHADER_NONE)
{
#if defined(HAVE_GLSL)
shader_type = RARCH_SHADER_GLSL;
#elif defined(HAVE_CG) || defined(HAVE_HLSL)
shader_type = RARCH_SHADER_CG;
#endif
}
if (driver.menu_ctx && driver.menu_ctx->backend &&
driver.menu_ctx->backend->shader_manager_set_preset)
driver.menu_ctx->backend->shader_manager_set_preset(
NULL, shader_type, NULL);
}
rarch_main_command(RARCH_CMD_SHADERS_APPLY_CHANGES);
return 0;
}
#endif

View File

@ -331,6 +331,7 @@ static int menu_common_shader_manager_setting_toggle(
else if (id >= MENU_SETTINGS_SHADER_PARAMETER_0
&& id <= MENU_SETTINGS_SHADER_PARAMETER_LAST)
{
bool apply_changes = false;
struct gfx_shader *shader = NULL;
struct gfx_shader_parameter *param = NULL;
@ -344,14 +345,17 @@ static int menu_common_shader_manager_setting_toggle(
{
case MENU_ACTION_START:
param->current = param->initial;
apply_changes = true;
break;
case MENU_ACTION_LEFT:
param->current -= param->step;
apply_changes = true;
break;
case MENU_ACTION_RIGHT:
param->current += param->step;
apply_changes = true;
break;
default:
@ -359,6 +363,9 @@ static int menu_common_shader_manager_setting_toggle(
}
param->current = min(max(param->minimum, param->current), param->maximum);
if (apply_changes)
rarch_main_command(RARCH_CMD_SHADERS_APPLY_CHANGES);
}
else if ((!strcmp(label, "video_shader_parameters") ||
!strcmp(label, "video_shader_preset_parameters"))

View File

@ -129,6 +129,7 @@ enum basic_event
RARCH_CMD_QUIT_RETROARCH,
RARCH_CMD_RESUME,
RARCH_CMD_MENU_SAVE_CONFIG,
RARCH_CMD_SHADERS_APPLY_CHANGES,
};
enum action_state

View File

@ -3535,9 +3535,9 @@ void rarch_main_command(unsigned cmd)
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);
if (driver.overlay)
input_overlay_set_alpha_mod(driver.overlay,
g_settings.input.overlay_opacity);
#endif
break;
case RARCH_CMD_RESET_CONTEXT:
@ -3562,6 +3562,39 @@ void rarch_main_command(unsigned cmd)
case RARCH_CMD_MENU_SAVE_CONFIG:
#ifdef HAVE_MENU
menu_save_new_config();
#endif
break;
case RARCH_CMD_SHADERS_APPLY_CHANGES:
#ifdef HAVE_MENU
{
unsigned shader_type = RARCH_SHADER_NONE;
if (driver.menu_ctx && driver.menu_ctx->backend &&
driver.menu_ctx->backend->shader_manager_get_type)
shader_type = driver.menu_ctx->backend->shader_manager_get_type(
driver.menu->shader);
if (driver.menu->shader->passes && shader_type != RARCH_SHADER_NONE
&& driver.menu_ctx && driver.menu_ctx->backend &&
driver.menu_ctx->backend->shader_manager_save_preset)
driver.menu_ctx->backend->shader_manager_save_preset(NULL, true);
else
{
shader_type = gfx_shader_parse_type("", DEFAULT_SHADER_TYPE);
if (shader_type == RARCH_SHADER_NONE)
{
#if defined(HAVE_GLSL)
shader_type = RARCH_SHADER_GLSL;
#elif defined(HAVE_CG) || defined(HAVE_HLSL)
shader_type = RARCH_SHADER_CG;
#endif
}
if (driver.menu_ctx && driver.menu_ctx->backend &&
driver.menu_ctx->backend->shader_manager_set_preset)
driver.menu_ctx->backend->shader_manager_set_preset(
NULL, shader_type, NULL);
}
}
#endif
break;
}