fix shader next/prev

This commit is contained in:
radius 2016-07-17 23:46:35 -05:00
parent 7a433a60a6
commit c38adcabd3
2 changed files with 20 additions and 6 deletions

View File

@ -89,10 +89,16 @@ struct string_list *dir_list_new_special(const char *input_dir,
strlcat(ext_shaders, "cg|cgp", sizeof(ext_shaders));
#endif
#ifdef HAVE_GLSL
strlcat(ext_shaders, "glsl|glslp", sizeof(ext_shaders));
if (strstr(ext_shaders, "cg|cgp"))
strlcat(ext_shaders, "|glsl|glslp", sizeof(ext_shaders));
else
strlcat(ext_shaders, "glsl|glslp", sizeof(ext_shaders));
#endif
#ifdef HAVE_VULKAN
strlcat(ext_shaders, "slang|slangp", sizeof(ext_shaders));
if (strstr(ext_shaders, "cg|cgp") || strstr(ext_shaders, "glsl|glslp"))
strlcat(ext_shaders, "|slang|slangp", sizeof(ext_shaders));
else
strlcat(ext_shaders, "slang|slangp", sizeof(ext_shaders));
#endif
exts = ext_shaders;
break;

View File

@ -504,10 +504,13 @@ static bool shader_dir_init(rarch_dir_list_t *dir_list)
static void runloop_check_shader_dir(rarch_dir_list_t *dir_list,
bool pressed_next, bool pressed_prev)
{
char msg[128] = {0};
const char *shader = NULL;
enum rarch_shader_type type = RARCH_SHADER_NONE;
RARCH_LOG("SWITCH \n");
if (!dir_list || !dir_list->list)
return;
@ -527,6 +530,7 @@ static void runloop_check_shader_dir(rarch_dir_list_t *dir_list,
return;
shader = dir_list->list->elems[dir_list->ptr].data;
RARCH_LOG("SWITCH %s,\n", shader);
switch (msg_hash_to_file_type(msg_hash_calculate(path_get_extension(shader))))
{
@ -701,10 +705,14 @@ static bool runloop_check_state(event_cmd_state_t *cmd,
if (runloop_cmd_triggered(cmd, RARCH_MOVIE_RECORD_TOGGLE))
runloop_check_movie();
runloop_check_shader_dir(shader_dir,
runloop_cmd_triggered(cmd, RARCH_SHADER_NEXT),
runloop_cmd_triggered(cmd, RARCH_SHADER_PREV));
if (runloop_cmd_triggered(cmd, RARCH_SHADER_NEXT) ||
runloop_cmd_triggered(cmd, RARCH_SHADER_PREV))
{
runloop_check_shader_dir(shader_dir,
runloop_cmd_triggered(cmd, RARCH_SHADER_NEXT),
runloop_cmd_triggered(cmd, RARCH_SHADER_PREV));
}
if (runloop_cmd_triggered(cmd, RARCH_DISK_EJECT_TOGGLE))
command_event(CMD_EVENT_DISK_EJECT_TOGGLE, NULL);