From 6ef3567ea5ed2f0a653e0abb63c3d24391b032ab Mon Sep 17 00:00:00 2001 From: Brad Parker Date: Thu, 16 Aug 2018 22:48:07 -0400 Subject: [PATCH] Qt: reset shader params window when passes are set to 0 --- ui/drivers/ui_qt.cpp | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/ui/drivers/ui_qt.cpp b/ui/drivers/ui_qt.cpp index 4e679cfeae..00c9d466fa 100644 --- a/ui/drivers/ui_qt.cpp +++ b/ui/drivers/ui_qt.cpp @@ -631,8 +631,26 @@ static void ui_companion_qt_event_command(void *data, enum event_command cmd) switch (cmd) { case CMD_EVENT_SHADERS_APPLY_CHANGES: - /* PRESET_LOADED already fires in more situations than APPLY_CHANGES, use that for reloading the params window */ + { + /* If shader was turned off, reload the params window manually because PRESET_LOADED won't be fired */ + video_shader_ctx_t shader_info = {0}; + + if (!video_shader_driver_get_current_shader(&shader_info)) + break; + + /* Isn't there a better way to do this? */ + if (shader_info.data && shader_info.data->num_parameters == 0) + { + if (shader_info.data->passes == 1 && string_is_empty(shader_info.data->pass[0].source.path)) + { + RARCH_LOG("[Qt]: Clearing shader parameters.\n"); + win_handle->qtWindow->deferReloadShaderParams(); + } + } + + /* Otherwise, PRESET_LOADED fires in more situations than APPLY_CHANGES, so use that for reloading the params window */ break; + } case CMD_EVENT_SHADER_PRESET_LOADED: RARCH_LOG("[Qt]: Reloading shader parameters.\n"); win_handle->qtWindow->deferReloadShaderParams();