summaryrefslogtreecommitdiff
path: root/src/render/Renderer.cpp
diff options
context:
space:
mode:
authorvaxerski <43317083+vaxerski@users.noreply.github.com>2022-05-16 20:45:27 +0200
committervaxerski <43317083+vaxerski@users.noreply.github.com>2022-05-16 20:45:27 +0200
commitbf8ebfc631fe63f6f9f9a4417408f5df87b0313d (patch)
tree1f202870dac86e63753cd0b202b365a01e298031 /src/render/Renderer.cpp
parent50f978e518c83872a25a47b5ddde310ec24ac203 (diff)
added scaling (dt broken)
damage tracking on full is broken
Diffstat (limited to 'src/render/Renderer.cpp')
-rw-r--r--src/render/Renderer.cpp12
1 files changed, 9 insertions, 3 deletions
diff --git a/src/render/Renderer.cpp b/src/render/Renderer.cpp
index 22060e83..89c37bc1 100644
--- a/src/render/Renderer.cpp
+++ b/src/render/Renderer.cpp
@@ -23,7 +23,7 @@ void renderSurface(struct wlr_surface* surface, int x, int y, void* data) {
g_pHyprOpenGL->renderTextureWithBlur(TEXTURE, &windowBox, RDATA->fadeAlpha * RDATA->alpha, surface, RDATA->dontRound ? 0 : g_pConfigManager->getInt("decoration:rounding"));
else
g_pHyprOpenGL->renderTexture(TEXTURE, &windowBox, RDATA->fadeAlpha * RDATA->alpha, RDATA->dontRound ? 0 : g_pConfigManager->getInt("decoration:rounding"));
-
+
wlr_surface_send_frame_done(surface, RDATA->when);
wlr_presentation_surface_sampled_on_output(g_pCompositor->m_sWLRPresentation, surface, RDATA->output);
@@ -488,6 +488,7 @@ void CHyprRenderer::damageWindow(CWindow* pWindow) {
wlr_box fixedDamageBox = damageBox;
fixedDamageBox.x -= m.vecPosition.x;
fixedDamageBox.y -= m.vecPosition.y;
+ scaleBox(&fixedDamageBox, m.scale);
wlr_output_damage_add_box(m.damage, &fixedDamageBox);
}
@@ -501,6 +502,7 @@ void CHyprRenderer::damageWindow(CWindow* pWindow) {
wlr_box fixedDamageBox = damageBox;
fixedDamageBox.x -= m.vecPosition.x;
fixedDamageBox.y -= m.vecPosition.y;
+ scaleBox(&fixedDamageBox, m.scale);
wlr_output_damage_add_box(m.damage, &fixedDamageBox);
}
@@ -510,8 +512,7 @@ void CHyprRenderer::damageWindow(CWindow* pWindow) {
}
void CHyprRenderer::damageMonitor(SMonitor* pMonitor) {
- wlr_box damageBox = {0, 0, pMonitor->vecSize.x, pMonitor->vecSize.y};
- scaleBox(&damageBox, pMonitor->scale);
+ wlr_box damageBox = {0, 0, pMonitor->vecPixelSize.x, pMonitor->vecPixelSize.y};
wlr_output_damage_add_box(pMonitor->damage, &damageBox);
if (g_pConfigManager->getInt("debug:log_damage"))
@@ -521,6 +522,7 @@ void CHyprRenderer::damageMonitor(SMonitor* pMonitor) {
void CHyprRenderer::damageBox(wlr_box* pBox) {
for (auto& m : g_pCompositor->m_lMonitors) {
wlr_box damageBox = {pBox->x - m.vecPosition.x, pBox->y - m.vecPosition.y, pBox->width, pBox->height};
+ scaleBox(&damageBox, m.scale);
wlr_output_damage_add_box(m.damage, &damageBox);
}
@@ -620,8 +622,12 @@ void CHyprRenderer::applyMonitorRule(SMonitor* pMonitor, SMonitorRule* pMonitorR
}
} else {
wlr_output_set_custom_mode(pMonitor->output, (int)pMonitorRule->resolution.x, (int)pMonitorRule->resolution.y, (int)pMonitorRule->refreshRate * 1000);
+ pMonitor->vecSize = pMonitorRule->resolution;
}
+ pMonitor->vecPixelSize = pMonitor->vecSize;
+ pMonitor->vecSize = (pMonitor->vecSize / pMonitor->scale).floor();
+
// update renderer
g_pHyprOpenGL->destroyMonitorResources(pMonitor);