summaryrefslogtreecommitdiff
path: root/src/render/Renderer.cpp
diff options
context:
space:
mode:
authorVaxry <vaxry@vaxry.net>2023-10-29 18:09:05 +0000
committerVaxry <vaxry@vaxry.net>2023-10-29 18:09:05 +0000
commit7a5234a0cca2508b7a5ede1fc60dc3ae8b72a51c (patch)
tree581626c545765a0f797a4f4681100facb0826b0f /src/render/Renderer.cpp
parentaf9440152e19cee74b675e53087e032b9ccb5459 (diff)
input: better cursor image infrastructure
Improves handling of cursor images/surfaces Fixes an issue with decos and cursors Fixes #3471
Diffstat (limited to 'src/render/Renderer.cpp')
-rw-r--r--src/render/Renderer.cpp12
1 files changed, 12 insertions, 0 deletions
diff --git a/src/render/Renderer.cpp b/src/render/Renderer.cpp
index 1e95c865..ea662867 100644
--- a/src/render/Renderer.cpp
+++ b/src/render/Renderer.cpp
@@ -1940,11 +1940,23 @@ bool CHyprRenderer::applyMonitorRule(CMonitor* pMonitor, SMonitorRule* pMonitorR
void CHyprRenderer::setCursorSurface(wlr_surface* surf, int hotspotX, int hotspotY) {
m_bCursorHasSurface = surf;
+ if (surf == m_sLastCursorData.surf)
+ return;
+
+ m_sLastCursorData.name = "";
+ m_sLastCursorData.surf = surf;
+
wlr_cursor_set_surface(g_pCompositor->m_sWLRCursor, surf, hotspotX, hotspotY);
}
void CHyprRenderer::setCursorFromName(const std::string& name) {
m_bCursorHasSurface = true;
+ if (name == m_sLastCursorData.name)
+ return;
+
+ m_sLastCursorData.name = name;
+ m_sLastCursorData.surf = nullptr;
+
wlr_cursor_set_xcursor(g_pCompositor->m_sWLRCursor, g_pCompositor->m_sWLRXCursorMgr, name.c_str());
}