summaryrefslogtreecommitdiff
path: root/src/managers/input/InputManager.cpp
diff options
context:
space:
mode:
authorSzwagi <12988954+Szwagi@users.noreply.github.com>2026-01-31 13:37:01 +0000
committerGitHub <noreply@github.com>2026-01-31 13:37:01 +0000
commitcbeb6984e748029ff481d5581d7e4f5279fd3d1a (patch)
tree59119e250c19257417fa548f955c8e4eaf2f2c0c /src/managers/input/InputManager.cpp
parent4330b49a84f527a52d1e7723ef42b459de58b8ae (diff)
renderer: fix mouse motion in VRR (#12665)
Diffstat (limited to 'src/managers/input/InputManager.cpp')
-rw-r--r--src/managers/input/InputManager.cpp13
1 files changed, 6 insertions, 7 deletions
diff --git a/src/managers/input/InputManager.cpp b/src/managers/input/InputManager.cpp
index 7272e1cf..054677fa 100644
--- a/src/managers/input/InputManager.cpp
+++ b/src/managers/input/InputManager.cpp
@@ -130,16 +130,10 @@ void CInputManager::onMouseMoved(IPointer::SMotionEvent e) {
const auto DELTA = *PNOACCEL == 1 ? unaccel : delta;
- if (g_pSeatManager->m_isPointerFrameSkipped)
- g_pPointerManager->storeMovement(e.timeMs, DELTA, unaccel);
- else
- g_pPointerManager->setStoredMovement(e.timeMs, DELTA, unaccel);
-
- PROTO::relativePointer->sendRelativeMotion(sc<uint64_t>(e.timeMs) * 1000, DELTA, unaccel);
-
if (e.mouse)
recheckMouseWarpOnMouseInput();
+ PROTO::relativePointer->sendRelativeMotion(sc<uint64_t>(e.timeMs) * 1000, delta, unaccel);
g_pPointerManager->move(DELTA);
mouseMoveUnified(e.timeMs, false, e.mouse);
@@ -151,6 +145,8 @@ void CInputManager::onMouseMoved(IPointer::SMotionEvent e) {
if (e.mouse)
m_lastMousePos = getMouseCoordsInternal();
+
+ g_pSeatManager->sendPointerFrame();
}
void CInputManager::onMouseWarp(IPointer::SMotionAbsoluteEvent e) {
@@ -676,6 +672,8 @@ void CInputManager::onMouseButton(IPointer::SButtonEvent e) {
m_focusHeldByButtons = false;
m_refocusHeldByButtons = false;
}
+
+ g_pSeatManager->sendPointerFrame();
}
void CInputManager::processMouseRequest(const CSeatManager::SSetCursorEvent& event) {
@@ -954,6 +952,7 @@ void CInputManager::onMouseWheel(IPointer::SAxisEvent e, SP<IPointer> pointer) {
int32_t deltaDiscrete = std::abs(discrete) != 0 && std::abs(discrete) < 1 ? std::copysign(1, discrete) : std::round(discrete);
g_pSeatManager->sendPointerAxis(e.timeMs, e.axis, delta, deltaDiscrete, value120, e.source, WL_POINTER_AXIS_RELATIVE_DIRECTION_IDENTICAL);
+ g_pSeatManager->sendPointerFrame();
}
Vector2D CInputManager::getMouseCoordsInternal() {