pass: mark crucial elements as undiscardable

This commit is contained in:
vaxerski 2025-01-01 21:35:42 +01:00
parent 7f177fa1cf
commit 9f3c9ac01a
9 changed files with 23 additions and 3 deletions

View file

@ -35,14 +35,14 @@ void CRenderPass::simplify() {
CRegion newDamage = damage.copy().intersect(CBox{{}, g_pHyprOpenGL->m_RenderData.pMonitor->vecTransformedSize});
for (auto& el : m_vPassElements | std::views::reverse) {
if (newDamage.empty()) {
if (newDamage.empty() && !el->element->undiscardable()) {
el->discard = true;
continue;
}
el->elementDamage = newDamage;
auto bb1 = el->element->boundingBox();
if (!bb1)
if (!bb1 || newDamage.empty())
continue;
auto bb = bb1->scale(g_pHyprOpenGL->m_RenderData.pMonitor->scale);