diff --git a/driver.c b/driver.c index c231d0d95e..c36331ee00 100644 --- a/driver.c +++ b/driver.c @@ -1352,7 +1352,7 @@ void init_video_input(void) static int dummy_pixel=0; rarch_init_filter(g_extern.system.pix_fmt); - rarch_init_shader_dir(); + rarch_main_command(RARCH_CMD_SHADER_DIR_INIT); geom = (const struct retro_game_geometry*)&g_extern.system.av_info.geometry; max_dim = max(geom->max_width, geom->max_height); @@ -1551,7 +1551,7 @@ void uninit_video_input(void) rarch_deinit_filter(); - rarch_deinit_shader_dir(); + rarch_main_command(RARCH_CMD_SHADER_DIR_DEINIT); compute_monitor_fps_statistics(); } diff --git a/general.h b/general.h index ba16a96c43..b6439a12c8 100644 --- a/general.h +++ b/general.h @@ -129,6 +129,8 @@ enum basic_event RARCH_CMD_MENU_SAVE_CONFIG, RARCH_CMD_MENU_PAUSE_LIBRETRO, RARCH_CMD_SHADERS_APPLY_CHANGES, + RARCH_CMD_SHADER_DIR_INIT, + RARCH_CMD_SHADER_DIR_DEINIT, }; enum action_state @@ -813,10 +815,6 @@ void rarch_update_system_info(struct retro_system_info *info, void rarch_recording_dump_frame(const void *data, unsigned width, unsigned height, size_t pitch); -void rarch_init_shader_dir(void); - -void rarch_deinit_shader_dir(void); - #ifdef __cplusplus } #endif diff --git a/retroarch.c b/retroarch.c index 7ee0dabbcd..5f97d53ebc 100644 --- a/retroarch.c +++ b/retroarch.c @@ -3173,6 +3173,35 @@ void rarch_main_command(unsigned cmd) rarch_main_command(RARCH_CMD_AUDIO_START); } break; + case RARCH_CMD_SHADER_DIR_INIT: + rarch_main_command(RARCH_CMD_SHADER_DIR_DEINIT); + { + unsigned i; + if (!*g_settings.video.shader_dir) + return; + + g_extern.shader_dir.list = dir_list_new(g_settings.video.shader_dir, + "cg|cgp|glsl|glslp", false); + + if (!g_extern.shader_dir.list || g_extern.shader_dir.list->size == 0) + { + rarch_main_command(RARCH_CMD_SHADER_DIR_DEINIT); + return; + } + + g_extern.shader_dir.ptr = 0; + dir_list_sort(g_extern.shader_dir.list, false); + + for (i = 0; i < g_extern.shader_dir.list->size; i++) + RARCH_LOG("Found shader \"%s\"\n", + g_extern.shader_dir.list->elems[i].data); + } + break; + case RARCH_CMD_SHADER_DIR_DEINIT: + dir_list_free(g_extern.shader_dir.list); + g_extern.shader_dir.list = NULL; + g_extern.shader_dir.ptr = 0; + break; } } @@ -3356,33 +3385,3 @@ void rarch_main_deinit(void) g_extern.main_is_init = false; } - -void rarch_init_shader_dir(void) -{ - unsigned i; - if (!*g_settings.video.shader_dir) - return; - - g_extern.shader_dir.list = dir_list_new(g_settings.video.shader_dir, - "cg|cgp|glsl|glslp", false); - - if (!g_extern.shader_dir.list || g_extern.shader_dir.list->size == 0) - { - rarch_deinit_shader_dir(); - return; - } - - g_extern.shader_dir.ptr = 0; - dir_list_sort(g_extern.shader_dir.list, false); - - for (i = 0; i < g_extern.shader_dir.list->size; i++) - RARCH_LOG("Found shader \"%s\"\n", - g_extern.shader_dir.list->elems[i].data); -} - -void rarch_deinit_shader_dir(void) -{ - dir_list_free(g_extern.shader_dir.list); - g_extern.shader_dir.list = NULL; - g_extern.shader_dir.ptr = 0; -}