diff options
| author | vaxerski <vaxry@vaxry.net> | 2024-01-11 13:15:20 +0100 |
|---|---|---|
| committer | vaxerski <vaxry@vaxry.net> | 2024-01-11 14:07:28 +0100 |
| commit | 6b92144f15117f9f7d93fe9867d6ec849d9abce1 (patch) | |
| tree | 7513d63d76669a5cd84ea4b4a84470732c73560e /src/render/Renderer.cpp | |
| parent | 8d31c84483be7cc6f909d73c6ecd4c0b4bdc3360 (diff) | |
surface: avoid spam of window surfaces with scale and transform events
fixes #4408
Diffstat (limited to 'src/render/Renderer.cpp')
| -rw-r--r-- | src/render/Renderer.cpp | 9 |
1 files changed, 7 insertions, 2 deletions
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 */ |
