From d4903caafad4a76506cd542820feaa4391e0e29c Mon Sep 17 00:00:00 2001 From: Bananymous Date: Tue, 11 Jun 2024 00:07:31 +0300 Subject: [PATCH] Kernel: Combine consecutive mouse move and scroll events This makes mouse work much smoother when running without kvm. --- kernel/kernel/Input/PS2/Mouse.cpp | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/kernel/kernel/Input/PS2/Mouse.cpp b/kernel/kernel/Input/PS2/Mouse.cpp index 5861d23e..a7b66a49 100644 --- a/kernel/kernel/Input/PS2/Mouse.cpp +++ b/kernel/kernel/Input/PS2/Mouse.cpp @@ -165,6 +165,22 @@ namespace Kernel::Input for (int i = 0; i < event_count; i++) { + if (!m_event_queue.empty() && m_event_queue.back().type == events[i].type) + { + if (events[i].type == MouseEventType::MouseMoveEvent) + { + m_event_queue.back().move_event.rel_x += events[i].move_event.rel_x; + m_event_queue.back().move_event.rel_y += events[i].move_event.rel_y; + continue; + } + + if (events[i].type == MouseEventType::MouseScrollEvent) + { + m_event_queue.back().scroll_event.scroll += events[i].scroll_event.scroll; + continue; + } + } + if (m_event_queue.full()) { dwarnln("PS/2 event queue full");