mirror of
https://github.com/RetroDECK/Duckstation.git
synced 2025-01-18 22:35:39 +00:00
Various fixes for the postprocessing controls in the fullscreen GUI
This commit is contained in:
parent
01fdcf2dde
commit
527a1e6d5e
|
@ -3793,10 +3793,22 @@ void FullscreenUI::SavePostProcessingChain()
|
||||||
if (bsi->GetBoolValue("Display", "PostProcessing", false))
|
if (bsi->GetBoolValue("Display", "PostProcessing", false))
|
||||||
g_host_display->SetPostProcessingChain(config);
|
g_host_display->SetPostProcessingChain(config);
|
||||||
if (IsEditingGameSettings(bsi))
|
if (IsEditingGameSettings(bsi))
|
||||||
|
{
|
||||||
s_game_settings_interface->Save();
|
s_game_settings_interface->Save();
|
||||||
else
|
|
||||||
Host::CommitBaseSettingChanges();
|
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
s_settings_changed.store(true, std::memory_order_release);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
enum
|
||||||
|
{
|
||||||
|
POSTPROCESSING_ACTION_NONE = 0,
|
||||||
|
POSTPROCESSING_ACTION_REMOVE,
|
||||||
|
POSTPROCESSING_ACTION_MOVE_UP,
|
||||||
|
POSTPROCESSING_ACTION_MOVE_DOWN,
|
||||||
|
};
|
||||||
|
|
||||||
void FullscreenUI::DrawPostProcessingSettingsPage()
|
void FullscreenUI::DrawPostProcessingSettingsPage()
|
||||||
{
|
{
|
||||||
|
@ -3861,36 +3873,40 @@ void FullscreenUI::DrawPostProcessingSettingsPage()
|
||||||
|
|
||||||
s_postprocessing_chain.ClearStages();
|
s_postprocessing_chain.ClearStages();
|
||||||
ShowToast(std::string(), "Post-processing chain cleared.");
|
ShowToast(std::string(), "Post-processing chain cleared.");
|
||||||
|
SavePostProcessingChain();
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
u32 postprocessing_action = POSTPROCESSING_ACTION_NONE;
|
||||||
|
u32 postprocessing_action_index;
|
||||||
|
|
||||||
SmallString str;
|
SmallString str;
|
||||||
SmallString tstr;
|
SmallString tstr;
|
||||||
for (u32 stage_index = 0; stage_index < s_postprocessing_chain.GetStageCount();)
|
for (u32 stage_index = 0; stage_index < s_postprocessing_chain.GetStageCount(); stage_index++)
|
||||||
{
|
{
|
||||||
|
ImGui::PushID(stage_index);
|
||||||
FrontendCommon::PostProcessingShader& stage = s_postprocessing_chain.GetShaderStage(stage_index);
|
FrontendCommon::PostProcessingShader& stage = s_postprocessing_chain.GetShaderStage(stage_index);
|
||||||
str.Fmt("Stage {}: {}", stage_index + 1, stage.GetName());
|
str.Fmt("Stage {}: {}", stage_index + 1, stage.GetName());
|
||||||
MenuHeading(str);
|
MenuHeading(str);
|
||||||
|
|
||||||
if (MenuButton(ICON_FA_TIMES " Remove From Chain", "Removes this shader from the chain."))
|
if (MenuButton(ICON_FA_TIMES " Remove From Chain", "Removes this shader from the chain."))
|
||||||
{
|
{
|
||||||
ShowToast(std::string(), fmt::format("Removed stage {} ({}).", stage_index + 1, stage.GetName()));
|
postprocessing_action = POSTPROCESSING_ACTION_REMOVE;
|
||||||
s_postprocessing_chain.RemoveStage(stage_index);
|
postprocessing_action_index = stage_index;
|
||||||
continue;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (MenuButton(ICON_FA_ARROW_UP " Move Up", "Moves this shader higher in the chain, applying it earlier.",
|
if (MenuButton(ICON_FA_ARROW_UP " Move Up", "Moves this shader higher in the chain, applying it earlier.",
|
||||||
(stage_index > 0)))
|
(stage_index > 0)))
|
||||||
{
|
{
|
||||||
s_postprocessing_chain.MoveStageUp(stage_index);
|
postprocessing_action = POSTPROCESSING_ACTION_MOVE_UP;
|
||||||
continue;
|
postprocessing_action_index = stage_index;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (MenuButton(ICON_FA_ARROW_DOWN " Move Down", "Moves this shader lower in the chain, applying it later.",
|
if (MenuButton(ICON_FA_ARROW_DOWN " Move Down", "Moves this shader lower in the chain, applying it later.",
|
||||||
(stage_index != (s_postprocessing_chain.GetStageCount() - 1))))
|
(stage_index != (s_postprocessing_chain.GetStageCount() - 1))))
|
||||||
{
|
{
|
||||||
s_postprocessing_chain.MoveStageDown(stage_index);
|
postprocessing_action = POSTPROCESSING_ACTION_MOVE_DOWN;
|
||||||
continue;
|
postprocessing_action_index = stage_index;
|
||||||
}
|
}
|
||||||
|
|
||||||
for (FrontendCommon::PostProcessingShader::Option& opt : stage.GetOptions())
|
for (FrontendCommon::PostProcessingShader::Option& opt : stage.GetOptions())
|
||||||
|
@ -4118,7 +4134,33 @@ void FullscreenUI::DrawPostProcessingSettingsPage()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
stage_index++;
|
ImGui::PopID();
|
||||||
|
}
|
||||||
|
|
||||||
|
switch (postprocessing_action)
|
||||||
|
{
|
||||||
|
case POSTPROCESSING_ACTION_REMOVE:
|
||||||
|
{
|
||||||
|
FrontendCommon::PostProcessingShader& stage = s_postprocessing_chain.GetShaderStage(postprocessing_action_index);
|
||||||
|
ShowToast(std::string(), fmt::format("Removed stage {} ({}).", postprocessing_action_index + 1, stage.GetName()));
|
||||||
|
s_postprocessing_chain.RemoveStage(postprocessing_action_index);
|
||||||
|
SavePostProcessingChain();
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case POSTPROCESSING_ACTION_MOVE_UP:
|
||||||
|
{
|
||||||
|
s_postprocessing_chain.MoveStageUp(postprocessing_action_index);
|
||||||
|
SavePostProcessingChain();
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case POSTPROCESSING_ACTION_MOVE_DOWN:
|
||||||
|
{
|
||||||
|
s_postprocessing_chain.MoveStageDown(postprocessing_action_index);
|
||||||
|
SavePostProcessingChain();
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
EndMenuButtons();
|
EndMenuButtons();
|
||||||
|
|
Loading…
Reference in a new issue