mirror of
https://github.com/hrydgard/ppsspp.git
synced 2024-11-23 05:19:56 +00:00
Postshader: Fix issue where some changes weren't reflected until resizing the window
This commit is contained in:
parent
f86b55c481
commit
b226dd329f
@ -147,11 +147,7 @@ void DisplayLayoutScreen::dialogFinished(const Screen *dialog, DialogResult resu
|
|||||||
RecreateViews();
|
RecreateViews();
|
||||||
}
|
}
|
||||||
|
|
||||||
UI::EventReturn DisplayLayoutScreen::OnPostProcShaderChange(UI::EventParams &e) {
|
static void NotifyPostChanges() {
|
||||||
// Remove the virtual "Off" entry. TODO: Get rid of it generally.
|
|
||||||
g_Config.vPostShaderNames.erase(std::remove(g_Config.vPostShaderNames.begin(), g_Config.vPostShaderNames.end(), "Off"), g_Config.vPostShaderNames.end());
|
|
||||||
FixPostShaderOrder(&g_Config.vPostShaderNames);
|
|
||||||
|
|
||||||
System_PostUIMessage(UIMessage::GPU_CONFIG_CHANGED);
|
System_PostUIMessage(UIMessage::GPU_CONFIG_CHANGED);
|
||||||
System_PostUIMessage(UIMessage::GPU_RENDER_RESIZED); // To deal with shaders that can change render resolution like upscaling.
|
System_PostUIMessage(UIMessage::GPU_RENDER_RESIZED); // To deal with shaders that can change render resolution like upscaling.
|
||||||
System_PostUIMessage(UIMessage::POSTSHADER_UPDATED);
|
System_PostUIMessage(UIMessage::POSTSHADER_UPDATED);
|
||||||
@ -159,6 +155,13 @@ UI::EventReturn DisplayLayoutScreen::OnPostProcShaderChange(UI::EventParams &e)
|
|||||||
if (gpu) {
|
if (gpu) {
|
||||||
gpu->NotifyConfigChanged();
|
gpu->NotifyConfigChanged();
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
UI::EventReturn DisplayLayoutScreen::OnPostProcShaderChange(UI::EventParams &e) {
|
||||||
|
// Remove the virtual "Off" entry. TODO: Get rid of it generally.
|
||||||
|
g_Config.vPostShaderNames.erase(std::remove(g_Config.vPostShaderNames.begin(), g_Config.vPostShaderNames.end(), "Off"), g_Config.vPostShaderNames.end());
|
||||||
|
FixPostShaderOrder(&g_Config.vPostShaderNames);
|
||||||
|
NotifyPostChanges();
|
||||||
return UI::EVENT_DONE;
|
return UI::EVENT_DONE;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -378,10 +381,11 @@ void DisplayLayoutScreen::CreateViews() {
|
|||||||
|
|
||||||
auto removeButton = shaderRow->Add(new Choice(ImageID("I_TRASHCAN"), new LinearLayoutParams(0.0f)));
|
auto removeButton = shaderRow->Add(new Choice(ImageID("I_TRASHCAN"), new LinearLayoutParams(0.0f)));
|
||||||
removeButton->OnClick.Add([=](EventParams &e) -> UI::EventReturn {
|
removeButton->OnClick.Add([=](EventParams &e) -> UI::EventReturn {
|
||||||
|
// Protect against possible race conditions.
|
||||||
if (i < g_Config.vPostShaderNames.size()) {
|
if (i < g_Config.vPostShaderNames.size()) {
|
||||||
// Protect against possible race conditions.
|
|
||||||
g_Config.vPostShaderNames.erase(g_Config.vPostShaderNames.begin() + i);
|
g_Config.vPostShaderNames.erase(g_Config.vPostShaderNames.begin() + i);
|
||||||
System_PostUIMessage(UIMessage::GPU_CONFIG_CHANGED);
|
FixPostShaderOrder(&g_Config.vPostShaderNames);
|
||||||
|
NotifyPostChanges();
|
||||||
RecreateViews();
|
RecreateViews();
|
||||||
}
|
}
|
||||||
return UI::EVENT_DONE;
|
return UI::EVENT_DONE;
|
||||||
@ -415,7 +419,7 @@ void DisplayLayoutScreen::CreateViews() {
|
|||||||
return UI::EVENT_DONE;
|
return UI::EVENT_DONE;
|
||||||
}
|
}
|
||||||
FixPostShaderOrder(&g_Config.vPostShaderNames);
|
FixPostShaderOrder(&g_Config.vPostShaderNames);
|
||||||
System_PostUIMessage(UIMessage::GPU_CONFIG_CHANGED);
|
NotifyPostChanges();
|
||||||
RecreateViews();
|
RecreateViews();
|
||||||
return UI::EVENT_DONE;
|
return UI::EVENT_DONE;
|
||||||
});
|
});
|
||||||
|
@ -50,7 +50,7 @@ private:
|
|||||||
UI::ChoiceStrip *mode_ = nullptr;
|
UI::ChoiceStrip *mode_ = nullptr;
|
||||||
UI::Choice *postProcChoice_ = nullptr;
|
UI::Choice *postProcChoice_ = nullptr;
|
||||||
std::string shaderNames_[256];
|
std::string shaderNames_[256];
|
||||||
std::deque<bool> settingsVisible_; // vector<bool> is an insane bitpacked specialization!
|
std::deque<bool> settingsVisible_; // vector<bool> is an insane bitpacked specialization! Not to be used with checkboxes!
|
||||||
};
|
};
|
||||||
|
|
||||||
class PostProcScreen : public UI::ListPopupScreen {
|
class PostProcScreen : public UI::ListPopupScreen {
|
||||||
|
Loading…
Reference in New Issue
Block a user