Move shader_dir references

This commit is contained in:
twinaphex 2015-12-01 03:55:31 +01:00
parent 3555fc1d02
commit 10875bf6a0
3 changed files with 46 additions and 23 deletions

View File

@ -1398,34 +1398,13 @@ bool event_command(enum event_command cmd)
#endif
break;
case EVENT_CMD_SHADER_DIR_DEINIT:
if (!global)
break;
dir_list_free(global->dir.shader_dir.list);
global->dir.shader_dir.list = NULL;
global->dir.shader_dir.ptr = 0;
shader_dir_free();
break;
case EVENT_CMD_SHADER_DIR_INIT:
event_command(EVENT_CMD_SHADER_DIR_DEINIT);
if (!*settings->video.shader_dir)
if (!shader_dir_init())
return false;
global->dir.shader_dir.list = dir_list_new_special(NULL, DIR_LIST_SHADERS, NULL);
if (!global->dir.shader_dir.list || global->dir.shader_dir.list->size == 0)
{
event_command(EVENT_CMD_SHADER_DIR_DEINIT);
return false;
}
global->dir.shader_dir.ptr = 0;
dir_list_sort(global->dir.shader_dir.list, false);
for (i = 0; i < global->dir.shader_dir.list->size; i++)
RARCH_LOG("%s \"%s\"\n",
msg_hash_to_str(MSG_FOUND_SHADER),
global->dir.shader_dir.list->elems[i].data);
break;
case EVENT_CMD_SAVEFILES:
event_save_files();

View File

@ -40,6 +40,7 @@
#include "retroarch.h"
#include "runloop.h"
#include "rewind.h"
#include "dir_list_special.h"
#include "audio/audio_driver.h"
#include "msg_hash.h"
@ -290,6 +291,45 @@ static void check_stateslots(settings_t *settings,
#define SHADER_EXT_CG 0x0059776fU
#define SHADER_EXT_CGP 0x0b8865bfU
void shader_dir_free(void)
{
global_t *global = global_get_ptr();
if (!global)
return;
dir_list_free(global->dir.shader_dir.list);
global->dir.shader_dir.list = NULL;
global->dir.shader_dir.ptr = 0;
}
bool shader_dir_init(void)
{
unsigned i;
global_t *global = global_get_ptr();
settings_t *settings = config_get_ptr();
if (!*settings->video.shader_dir)
return false;
global->dir.shader_dir.list = dir_list_new_special(NULL, DIR_LIST_SHADERS, NULL);
if (!global->dir.shader_dir.list || global->dir.shader_dir.list->size == 0)
{
event_command(EVENT_CMD_SHADER_DIR_DEINIT);
return false;
}
global->dir.shader_dir.ptr = 0;
dir_list_sort(global->dir.shader_dir.list, false);
for (i = 0; i < global->dir.shader_dir.list->size; i++)
RARCH_LOG("%s \"%s\"\n",
msg_hash_to_str(MSG_FOUND_SHADER),
global->dir.shader_dir.list->elems[i].data);
return true;
}
/**
* check_shader_dir:
* @pressed_next : was next shader key pressed?

View File

@ -300,6 +300,10 @@ const char *rarch_main_msg_queue_pull(void);
bool *runloop_perfcnt_enabled(void);
void shader_dir_free(void);
bool shader_dir_init(void);
bool runloop_ctl(enum runloop_ctl_state state, void *data);
typedef int (*transfer_cb_t)(void *data, size_t len);