From 15336342fa90800e797b21466c69742b3003a081 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Sat, 26 Dec 2015 10:05:10 +0100 Subject: [PATCH] Move runloop_shader_dir to runloop_ctl as static local variable --- runloop.c | 51 +++++++++++++++++++++++++++------------------------ 1 file changed, 27 insertions(+), 24 deletions(-) diff --git a/runloop.c b/runloop.c index 758c19e4eb..3d3f4178a6 100644 --- a/runloop.c +++ b/runloop.c @@ -77,7 +77,6 @@ typedef struct event_cmd_state retro_input_t state[3]; } event_cmd_state_t; -static rarch_dir_list_t runloop_shader_dir; static msg_queue_t *g_msg_queue; @@ -293,14 +292,17 @@ static void check_stateslots(settings_t *settings, #define SHADER_EXT_CG 0x0059776fU #define SHADER_EXT_CGP 0x0b8865bfU -static void shader_dir_free(void) +static void shader_dir_free(rarch_dir_list_t *dir_list) { - dir_list_free(runloop_shader_dir.list); - runloop_shader_dir.list = NULL; - runloop_shader_dir.ptr = 0; + if (!dir_list) + return; + + dir_list_free(dir_list->list); + dir_list->list = NULL; + dir_list->ptr = 0; } -static bool shader_dir_init(void) +static bool shader_dir_init(rarch_dir_list_t *dir_list) { unsigned i; settings_t *settings = config_get_ptr(); @@ -308,21 +310,21 @@ static bool shader_dir_init(void) if (!*settings->video.shader_dir) return false; - runloop_shader_dir.list = dir_list_new_special(NULL, DIR_LIST_SHADERS, NULL); + dir_list->list = dir_list_new_special(NULL, DIR_LIST_SHADERS, NULL); - if (!runloop_shader_dir.list || runloop_shader_dir.list->size == 0) + if (!dir_list->list || dir_list->list->size == 0) { event_command(EVENT_CMD_SHADER_DIR_DEINIT); return false; } - runloop_shader_dir.ptr = 0; - dir_list_sort(runloop_shader_dir.list, false); + dir_list->ptr = 0; + dir_list_sort(dir_list->list, false); - for (i = 0; i < runloop_shader_dir.list->size; i++) + for (i = 0; i < dir_list->list->size; i++) RARCH_LOG("%s \"%s\"\n", msg_hash_to_str(MSG_FOUND_SHADER), - runloop_shader_dir.list->elems[i].data); + dir_list->list->elems[i].data); return true; } @@ -337,7 +339,7 @@ static bool shader_dir_init(void) * * Will also immediately apply the shader. **/ -static void check_shader_dir(bool pressed_next, bool pressed_prev) +static void check_shader_dir(rarch_dir_list_t *dir_list, bool pressed_next, bool pressed_prev) { uint32_t ext_hash; char msg[128]; @@ -345,25 +347,25 @@ static void check_shader_dir(bool pressed_next, bool pressed_prev) const char *ext = NULL; enum rarch_shader_type type = RARCH_SHADER_NONE; - if (!runloop_shader_dir.list) + if (!dir_list || !dir_list->list) return; if (pressed_next) { - runloop_shader_dir.ptr = (runloop_shader_dir.ptr + 1) % - runloop_shader_dir.list->size; + dir_list->ptr = (dir_list->ptr + 1) % + dir_list->list->size; } else if (pressed_prev) { - if (runloop_shader_dir.ptr == 0) - runloop_shader_dir.ptr = runloop_shader_dir.list->size - 1; + if (dir_list->ptr == 0) + dir_list->ptr = dir_list->list->size - 1; else - runloop_shader_dir.ptr--; + dir_list->ptr--; } else return; - shader = runloop_shader_dir.list->elems[runloop_shader_dir.ptr].data; + shader = dir_list->list->elems[dir_list->ptr].data; ext = path_get_extension(shader); ext_hash = msg_hash_calculate(ext); @@ -383,7 +385,7 @@ static void check_shader_dir(bool pressed_next, bool pressed_prev) snprintf(msg, sizeof(msg), "%s #%u: \"%s\".", msg_hash_to_str(MSG_SHADER), - (unsigned)runloop_shader_dir.ptr, shader); + (unsigned)dir_list->ptr, shader); runloop_msg_queue_push(msg, 1, 120, true); RARCH_LOG("%s \"%s\".\n", msg_hash_to_str(MSG_APPLYING_SHADER), @@ -461,6 +463,7 @@ static void runloop_data_clear_state(void) bool runloop_ctl(enum runloop_ctl_state state, void *data) { + static rarch_dir_list_t runloop_shader_dir; static char runloop_fullpath[PATH_MAX_LENGTH]; static rarch_system_info_t runloop_system; static unsigned runloop_pending_windowed_scale; @@ -490,10 +493,10 @@ bool runloop_ctl(enum runloop_ctl_state state, void *data) rarch_task_check(); return true; case RUNLOOP_CTL_SHADER_DIR_DEINIT: - shader_dir_free(); + shader_dir_free(&runloop_shader_dir); return true; case RUNLOOP_CTL_SHADER_DIR_INIT: - return shader_dir_init(); + return shader_dir_init(&runloop_shader_dir); case RUNLOOP_CTL_SYSTEM_INFO_INIT: core.retro_get_system_info(&runloop_system.info); @@ -762,7 +765,7 @@ bool runloop_ctl(enum runloop_ctl_state state, void *data) if (runloop_cmd_triggered(cmd, RARCH_MOVIE_RECORD_TOGGLE)) runloop_ctl(RUNLOOP_CTL_CHECK_MOVIE, NULL); - check_shader_dir( + check_shader_dir(&runloop_shader_dir, runloop_cmd_triggered(cmd, RARCH_SHADER_NEXT), runloop_cmd_triggered(cmd, RARCH_SHADER_PREV));