diff --git a/command.c b/command.c index 1a4c2d660a..979e5cdb33 100644 --- a/command.c +++ b/command.c @@ -215,14 +215,8 @@ static const struct cmd_map map[] = { static bool cmd_set_shader(const char *arg) { char msg[PATH_MAX_LENGTH]; - const char *ext; enum rarch_shader_type type = RARCH_SHADER_NONE; - driver_t *driver = driver_get_ptr(); - - if (!driver->video->set_shader) - return false; - - ext = path_get_extension(arg); + const char *ext = path_get_extension(arg); if (strcmp(ext, "glsl") == 0 || strcmp(ext, "glslp") == 0) type = RARCH_SHADER_GLSL; @@ -236,7 +230,7 @@ static bool cmd_set_shader(const char *arg) rarch_main_msg_queue_push(msg, 1, 120, true); RARCH_LOG("Applying shader \"%s\".\n", arg); - return driver->video->set_shader(driver->video_data, type, arg); + return video_driver_set_shader(type, arg); } static const struct cmd_action_map action_map[] = { diff --git a/gfx/video_driver.c b/gfx/video_driver.c index 7d61856453..759ee781b7 100644 --- a/gfx/video_driver.c +++ b/gfx/video_driver.c @@ -267,14 +267,17 @@ bool video_driver_has_focus(void) } bool video_driver_set_shader(enum rarch_shader_type type, - const char *shader) + const char *path) { - driver_t *driver = driver_get_ptr(); - if (!driver->video || !driver->video_data) + driver_t *driver = driver_get_ptr(); + if (!driver) return false; - if (!driver->video->set_shader(driver->video_data, type, shader)) + if (!driver->video_data) return false; - return true; + if (!driver->video->set_shader) + return false; + + return driver->video->set_shader(driver->video_data, type, path); } static void deinit_video_filter(void) @@ -768,3 +771,4 @@ bool video_driver_read_viewport(uint8_t *buffer) return driver->video->read_viewport(driver->video_data, buffer); } + diff --git a/gfx/video_driver.h b/gfx/video_driver.h index f73f512772..51569a6863 100644 --- a/gfx/video_driver.h +++ b/gfx/video_driver.h @@ -300,6 +300,9 @@ bool video_driver_viewport_info(struct video_viewport *vp); bool video_driver_read_viewport(uint8_t *buffer); +bool video_driver_set_shader(enum rarch_shader_type type, + const char *path); + #ifdef __cplusplus } #endif diff --git a/menu/menu_shader.c b/menu/menu_shader.c index 11de765c76..05a972b603 100644 --- a/menu/menu_shader.c +++ b/menu/menu_shader.c @@ -130,10 +130,7 @@ void menu_shader_manager_set_preset(struct video_shader *shader, settings->video.shader_enable = false; - if (!driver->video->set_shader) - return; - if (!driver->video->set_shader(driver->video_data, - (enum rarch_shader_type)type, preset_path)) + if (!video_driver_set_shader((enum rarch_shader_type)type, preset_path)) return; /* Makes sure that we use Menu Preset shader on driver reinit.