Add RARCH_CMD_SHADER_DIR_INIT/RARCH_CMD_SHADER_DIR_DEINIT

This commit is contained in:
twinaphex 2014-10-03 00:13:50 +02:00
parent a8d8e9d13b
commit c25bc493ab
3 changed files with 33 additions and 36 deletions

View File

@ -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();
}

View File

@ -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

View File

@ -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;
}