From 1ea9bcf5601a04859a9c43ae8fec58e4963fa9d2 Mon Sep 17 00:00:00 2001 From: OV2 Date: Fri, 1 Feb 2019 22:33:24 +0100 Subject: [PATCH] win32: let shader param dialog save slangp --- win32/CShaderParamDlg.cpp | 9 +++++++-- win32/rsrc/snes9x.rc | 2 +- win32/wsnes9x.cpp | 6 ++++-- 3 files changed, 12 insertions(+), 5 deletions(-) diff --git a/win32/CShaderParamDlg.cpp b/win32/CShaderParamDlg.cpp index 554cebcd..4365f2dd 100644 --- a/win32/CShaderParamDlg.cpp +++ b/win32/CShaderParamDlg.cpp @@ -258,7 +258,13 @@ void CShaderParamDlg::get_changed_parameters(HWND hDlg) void CShaderParamDlg::save_custom_shader() { TCHAR save_path[MAX_PATH]; - _stprintf(save_path, TEXT("%s\\custom_shader_params.glslp"), S9xGetDirectoryT(DEFAULT_DIR)); + int len = lstrlen(GUI.OGLshaderFileName); + if (len > 5 && !_tcsncicmp(&GUI.OGLshaderFileName[len - 6], TEXT(".glslp"), 6)) { + _stprintf(save_path, TEXT("%s\\custom_shader_params.glslp"), S9xGetDirectoryT(DEFAULT_DIR)); + } + else { + _stprintf(save_path, TEXT("%s\\custom_shader_params.slangp"), S9xGetDirectoryT(DEFAULT_DIR)); + } shader.save(_tToChar(save_path)); lstrcpy(GUI.OGLshaderFileName, save_path); } @@ -267,6 +273,5 @@ void CShaderParamDlg::apply_changes(HWND hDlg) { get_changed_parameters(hDlg); save_custom_shader(); - WinDisplayApplyChanges(); WinRefreshDisplay(); } diff --git a/win32/rsrc/snes9x.rc b/win32/rsrc/snes9x.rc index b6a025c9..0743c65e 100644 --- a/win32/rsrc/snes9x.rc +++ b/win32/rsrc/snes9x.rc @@ -550,7 +550,7 @@ BEGIN LTEXT "",IDC_STATIC_CONTAINER,7,35,282,142,WS_BORDER SCROLLBAR IDC_SCROLLBAR_PARAMS,289,35,12,142,SBS_VERT PUSHBUTTON "Apply",IDAPPLY,253,184,50,14 - LTEXT "Changing these parameters will create a new ""custom_shader_params.glslp"" file in the snes9x directory that contains the parameters and references to your currently loaded shader. This will then be used as your current OpenGL shader.",IDC_STATIC,7,7,295,28 + LTEXT "Changing these parameters will create a new ""custom_shader_params.glslp / .slangp"" file in the snes9x directory that contains the parameters and references to your currently loaded shader. This will then be used as your current OpenGL shader.",IDC_STATIC,7,7,295,28 END IDD_DIALOG_XAUDIO2_INIT_ERROR DIALOGEX 0, 0, 277, 92 diff --git a/win32/wsnes9x.cpp b/win32/wsnes9x.cpp index d0068400..ea5b1832 100644 --- a/win32/wsnes9x.cpp +++ b/win32/wsnes9x.cpp @@ -7733,8 +7733,10 @@ INT_PTR CALLBACK DlgFunky(HWND hDlg, UINT msg, WPARAM wParam, LPARAM lParam) case IDC_SHADER_GLSL_PARAMETERS: { GetDlgItemText(hDlg, IDC_SHADER_GLSL_FILE, GUI.OGLshaderFileName, MAX_PATH); - if(lstrlen(GUI.OGLshaderFileName) < 6 || _tcsncicmp(&GUI.OGLshaderFileName[lstrlen(GUI.OGLshaderFileName) - 6], TEXT(".glslp"), 6)) { - MessageBox(GUI.hWnd, TEXT("Parameters are only supported for .glsl shaders"), TEXT("No Parameters"), MB_OK | MB_ICONINFORMATION); + int len = lstrlen(GUI.OGLshaderFileName); + if((len < 6 || _tcsncicmp(&GUI.OGLshaderFileName[len - 6], TEXT(".glslp"), 6)) && + (len < 7 || _tcsncicmp(&GUI.OGLshaderFileName[len - 7], TEXT(".slangp"), 7))) { + MessageBox(GUI.hWnd, TEXT("Parameters are only supported for .glslp and .slangp shaders"), TEXT("No Parameters"), MB_OK | MB_ICONINFORMATION); break; } ShowWindow(hDlg, SW_HIDE);