mirror of
https://github.com/hyprwm/Hyprland.git
synced 2025-08-04 14:11:59 -07:00
renderer: properly software lock cursors with zoom_factor (#6434)
This commit is contained in:
@@ -1253,6 +1253,15 @@ void CHyprRenderer::renderMonitor(CMonitor* pMonitor) {
|
||||
|
||||
TRACY_GPU_ZONE("Render");
|
||||
|
||||
static bool zoomLock = false;
|
||||
if (zoomLock && *PZOOMFACTOR == 1.f) {
|
||||
g_pPointerManager->unlockSoftwareAll();
|
||||
zoomLock = false;
|
||||
} else if (!zoomLock && *PZOOMFACTOR != 1.f) {
|
||||
g_pPointerManager->lockSoftwareAll();
|
||||
zoomLock = true;
|
||||
}
|
||||
|
||||
if (pMonitor == g_pCompositor->getMonitorFromCursor())
|
||||
g_pHyprOpenGL->m_RenderData.mouseZoomFactor = std::clamp(*PZOOMFACTOR, 1.f, INFINITY);
|
||||
else
|
||||
@@ -1265,10 +1274,6 @@ void CHyprRenderer::renderMonitor(CMonitor* pMonitor) {
|
||||
pMonitor->forceFullFrames = 10;
|
||||
}
|
||||
|
||||
bool lockSoftware = pMonitor == g_pCompositor->getMonitorFromCursor() && *PZOOMFACTOR != 1.f;
|
||||
if (lockSoftware)
|
||||
g_pPointerManager->lockSoftwareForMonitor(pMonitor->self.lock());
|
||||
|
||||
CRegion damage, finalDamage;
|
||||
if (!beginRender(pMonitor, damage, RENDER_MODE_NORMAL)) {
|
||||
Debug::log(ERR, "renderer: couldn't beginRender()!");
|
||||
@@ -1370,9 +1375,6 @@ void CHyprRenderer::renderMonitor(CMonitor* pMonitor) {
|
||||
|
||||
endRender();
|
||||
|
||||
if (lockSoftware)
|
||||
g_pPointerManager->unlockSoftwareForMonitor(pMonitor->self.lock());
|
||||
|
||||
TRACY_GPU_COLLECT;
|
||||
|
||||
if (!pMonitor->mirrors.empty()) {
|
||||
|
Reference in New Issue
Block a user