summaryrefslogtreecommitdiff
path: root/src/render/Renderer.cpp
diff options
context:
space:
mode:
authorvaxerski <43317083+vaxerski@users.noreply.github.com>2023-04-16 14:48:38 +0100
committervaxerski <43317083+vaxerski@users.noreply.github.com>2023-04-16 14:48:38 +0100
commitb05ff89c76b2c9454c76daf2120f4ccb076a018d (patch)
tree14067692ffc6a25ac24f43680bbb880d96c0d76c /src/render/Renderer.cpp
parent28dfe215844fe33d425bda33c677a0fae835082b (diff)
Render: add cursor_zoom
Diffstat (limited to 'src/render/Renderer.cpp')
-rw-r--r--src/render/Renderer.cpp15
1 files changed, 13 insertions, 2 deletions
diff --git a/src/render/Renderer.cpp b/src/render/Renderer.cpp
index 7244666d..5d1968e2 100644
--- a/src/render/Renderer.cpp
+++ b/src/render/Renderer.cpp
@@ -767,6 +767,7 @@ void CHyprRenderer::renderMonitor(CMonitor* pMonitor) {
static auto* const PDAMAGEBLINK = &g_pConfigManager->getConfigValuePtr("debug:damage_blink")->intValue;
static auto* const PNODIRECTSCANOUT = &g_pConfigManager->getConfigValuePtr("misc:no_direct_scanout")->intValue;
static auto* const PVFR = &g_pConfigManager->getConfigValuePtr("misc:vfr")->intValue;
+ static auto* const PZOOMFACTOR = &g_pConfigManager->getConfigValuePtr("misc:cursor_zoom_factor")->floatValue;
static int damageBlinkCleanup = 0; // because double-buffered
@@ -907,7 +908,8 @@ void CHyprRenderer::renderMonitor(CMonitor* pMonitor) {
g_pHyprOpenGL->clear(CColor(17.0 / 255.0, 17.0 / 255.0, 17.0 / 255.0, 1.0));
g_pHyprOpenGL->clearWithTex(); // will apply the hypr "wallpaper"
- renderWorkspace(pMonitor, g_pCompositor->getWorkspaceByID(pMonitor->activeWorkspace), &now, {0, 0, (int)pMonitor->vecPixelSize.x, (int)pMonitor->vecPixelSize.y});
+ wlr_box renderBox = {0, 0, (int)pMonitor->vecPixelSize.x, (int)pMonitor->vecPixelSize.y};
+ renderWorkspace(pMonitor, g_pCompositor->getWorkspaceByID(pMonitor->activeWorkspace), &now, renderBox);
renderLockscreen(pMonitor, &now);
@@ -934,11 +936,20 @@ void CHyprRenderer::renderMonitor(CMonitor* pMonitor) {
}
if (wlr_renderer_begin(g_pCompositor->m_sWLRRenderer, pMonitor->vecPixelSize.x, pMonitor->vecPixelSize.y)) {
- wlr_output_render_software_cursors(pMonitor->output, NULL);
+ if (pMonitor == g_pCompositor->getMonitorFromCursor() && *PZOOMFACTOR != 1.f) {
+ wlr_output_lock_software_cursors(pMonitor->output, true);
+ wlr_output_render_software_cursors(pMonitor->output, NULL);
+ wlr_output_lock_software_cursors(pMonitor->output, false);
+ } else
+ wlr_output_render_software_cursors(pMonitor->output, NULL);
wlr_renderer_end(g_pCompositor->m_sWLRRenderer);
}
}
+ if (pMonitor == g_pCompositor->getMonitorFromCursor())
+ g_pHyprOpenGL->m_RenderData.mouseZoomFactor = std::clamp(*PZOOMFACTOR, 1.f, INFINITY);
+ else
+ g_pHyprOpenGL->m_RenderData.mouseZoomFactor = 1.f;
g_pHyprOpenGL->end();
// calc frame damage