summaryrefslogtreecommitdiff
path: root/src/render
diff options
context:
space:
mode:
authorvaxerski <vaxry@vaxry.net>2024-01-11 13:15:20 +0100
committervaxerski <vaxry@vaxry.net>2024-01-11 14:07:28 +0100
commit6b92144f15117f9f7d93fe9867d6ec849d9abce1 (patch)
tree7513d63d76669a5cd84ea4b4a84470732c73560e /src/render
parent8d31c84483be7cc6f909d73c6ecd4c0b4bdc3360 (diff)
surface: avoid spam of window surfaces with scale and transform events
fixes #4408
Diffstat (limited to 'src/render')
-rw-r--r--src/render/OpenGL.cpp4
-rw-r--r--src/render/Renderer.cpp9
2 files changed, 10 insertions, 3 deletions
diff --git a/src/render/OpenGL.cpp b/src/render/OpenGL.cpp
index 2dd4ca0e..55a48a46 100644
--- a/src/render/OpenGL.cpp
+++ b/src/render/OpenGL.cpp
@@ -2019,8 +2019,10 @@ void CHyprOpenGLImpl::clearWithTex() {
TEXIT = m_mMonitorBGTextures.find(m_RenderData.pMonitor);
}
+ CBox box = {0, 0, m_RenderData.pMonitor->vecPixelSize.x, m_RenderData.pMonitor->vecPixelSize.y};
+
if (TEXIT != m_mMonitorBGTextures.end())
- renderTexturePrimitive(TEXIT->second, &m_mMonitorRenderResources[m_RenderData.pMonitor].backgroundTexBox);
+ renderTexture(TEXIT->second, &box, 1);
}
void CHyprOpenGLImpl::destroyMonitorResources(CMonitor* pMonitor) {
diff --git a/src/render/Renderer.cpp b/src/render/Renderer.cpp
index b7776ee6..6d5af8d9 100644
--- a/src/render/Renderer.cpp
+++ b/src/render/Renderer.cpp
@@ -1997,6 +1997,7 @@ bool CHyprRenderer::applyMonitorRule(CMonitor* pMonitor, SMonitorRule* pMonitorR
Vector2D logicalZero = pMonitor->vecPixelSize / scaleZero;
if (logicalZero == logicalZero.round()) {
pMonitor->scale = scaleZero;
+ wlr_output_set_scale(pMonitor->output, pMonitor->scale);
} else {
for (size_t i = 1; i < 90; ++i) {
double scaleUp = (searchScale + i) / 120.0;
@@ -2034,11 +2035,15 @@ bool CHyprRenderer::applyMonitorRule(CMonitor* pMonitor, SMonitorRule* pMonitorR
} else
pMonitor->scale = searchScale;
}
+
+ // for wlroots, that likes flooring, we have to do this.
+ double logicalX = std::round(pMonitor->vecPixelSize.x / pMonitor->scale);
+ logicalX += 0.1;
+
+ wlr_output_set_scale(pMonitor->output, pMonitor->vecPixelSize.x / logicalX);
}
}
- wlr_output_set_scale(pMonitor->output, pMonitor->scale);
-
// clang-format off
static const std::array<std::vector<std::pair<std::string, uint32_t>>, 2> formats{
std::vector<std::pair<std::string, uint32_t>>{ /* 10-bit */