summaryrefslogtreecommitdiff
path: root/src/render/pass
diff options
context:
space:
mode:
authorvaxerski <vaxry@vaxry.net>2025-01-02 18:14:45 +0100
committervaxerski <vaxry@vaxry.net>2025-01-02 18:14:45 +0100
commit1697171fc003d26dace4a7d70e2f8038df60a196 (patch)
treee7df4d065746686e9c2b263687d99440c621fc62 /src/render/pass
parent81721b8aa87b1df3c3a9c9eadafcc271178c102a (diff)
pass: allow removing all pass elements of a given type
Diffstat (limited to 'src/render/pass')
-rw-r--r--src/render/pass/Pass.cpp4
-rw-r--r--src/render/pass/Pass.hpp1
2 files changed, 5 insertions, 0 deletions
diff --git a/src/render/pass/Pass.cpp b/src/render/pass/Pass.cpp
index 8fdc3049..3e1282f0 100644
--- a/src/render/pass/Pass.cpp
+++ b/src/render/pass/Pass.cpp
@@ -247,3 +247,7 @@ float CRenderPass::oneBlurRadius() {
static auto PBLURPASSES = CConfigValue<Hyprlang::INT>("decoration:blur:passes");
return *PBLURPASSES > 10 ? pow(2, 15) : std::clamp(*PBLURSIZE, (int64_t)1, (int64_t)40) * pow(2, *PBLURPASSES); // is this 2^pass? I don't know but it works... I think.
}
+
+void CRenderPass::removeAllOfType(const std::string& type) {
+ std::erase_if(m_vPassElements, [&type](const auto& e) { return e->element->passName() == type; });
+}
diff --git a/src/render/pass/Pass.hpp b/src/render/pass/Pass.hpp
index 5d7d3bb3..5fa25fc3 100644
--- a/src/render/pass/Pass.hpp
+++ b/src/render/pass/Pass.hpp
@@ -14,6 +14,7 @@ class CRenderPass {
void add(SP<IPassElement> elem);
void clear();
+ void removeAllOfType(const std::string& type);
CRegion render(const CRegion& damage_);