summaryrefslogtreecommitdiff
path: root/src/render
diff options
context:
space:
mode:
authorPppp1116 <pcaiadoguerreiro@gmail.com>2026-04-03 13:27:57 +0100
committerVaxry <43317083+vaxerski@users.noreply.github.com>2026-04-04 08:26:24 -0400
commit2b9696eb7259fa16bfd1408694a26e2e06c969d1 (patch)
treef3b9d8f5e9298b47b0a5d29d525db286a5a68fb6 /src/render
parent4c42269ce6c44af40ea63f048d67dc0b898c8213 (diff)
renderer: skip redundant render-path work
Diffstat (limited to 'src/render')
-rw-r--r--src/render/Renderer.cpp16
1 files changed, 10 insertions, 6 deletions
diff --git a/src/render/Renderer.cpp b/src/render/Renderer.cpp
index b6f4acb7..1ed71286 100644
--- a/src/render/Renderer.cpp
+++ b/src/render/Renderer.cpp
@@ -1940,8 +1940,9 @@ void IHyprRenderer::renderMonitor(PHLMONITOR pMonitor, bool commit) {
pMonitor->m_renderingActive = true;
- // we need to cleanup fading out when rendering the appropriate context
- g_pCompositor->cleanupFadingOut(pMonitor->m_id);
+ // Most frames have no fading-out windows or layers for this monitor.
+ if (!g_pCompositor->m_windowsFadingOut.empty() || !g_pCompositor->m_surfacesFadingOut.empty())
+ g_pCompositor->cleanupFadingOut(pMonitor->m_id);
// TODO: this is getting called with extents being 0,0,0,0 should it be?
// potentially can save on resources.
@@ -1957,10 +1958,9 @@ void IHyprRenderer::renderMonitor(PHLMONITOR pMonitor, bool commit) {
zoomLock = true;
}
- if (pMonitor == g_pCompositor->getMonitorFromCursor())
+ m_renderData.mouseZoomFactor = 1.f;
+ if (ZOOMFACTOR != 1.f && pMonitor == g_pCompositor->getMonitorFromCursor())
m_renderData.mouseZoomFactor = std::clamp(ZOOMFACTOR, 1.f, INFINITY);
- else
- m_renderData.mouseZoomFactor = 1.f;
if (pMonitor->m_zoomAnimProgress->value() != 1) {
m_renderData.mouseZoomFactor = 2.0 - pMonitor->m_zoomAnimProgress->value(); // 2x zoom -> 1x zoom
@@ -2537,11 +2537,15 @@ void IHyprRenderer::damageSurface(SP<CWLSurfaceResource> pSurface, double x, dou
damageBox.translate({x, y});
- CRegion damageBoxForEach;
+ const auto EXTENTS = damageBox.getExtents();
+
+ CRegion damageBoxForEach;
for (auto const& m : g_pCompositor->m_monitors) {
if (!m->m_output)
continue;
+ if (!EXTENTS.overlaps(m->logicalBox()))
+ continue;
damageBoxForEach.set(damageBox);
damageBoxForEach.translate({-m->m_position.x, -m->m_position.y}).scale(m->m_scale);