From 107bd015369f3822188c3d8c5eeadc48eab667fb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Henrik=20Rydg=C3=A5rd?= Date: Fri, 22 Nov 2024 10:26:48 +0100 Subject: [PATCH] Fix some issues with clicking touch buttons using the mouse after the hover change. Increase a buffer size. --- Common/Net/NetBuffer.cpp | 2 +- UI/GamepadEmu.cpp | 22 +++++++++++++--------- 2 files changed, 14 insertions(+), 10 deletions(-) diff --git a/Common/Net/NetBuffer.cpp b/Common/Net/NetBuffer.cpp index 00886bd95d..751a8c976d 100644 --- a/Common/Net/NetBuffer.cpp +++ b/Common/Net/NetBuffer.cpp @@ -122,7 +122,7 @@ bool Buffer::ReadAllWithProgress(int fd, int knownSize, RequestProgress *progres } int Buffer::Read(int fd, size_t sz) { - char buf[1024]; + char buf[4096]; int retval; size_t received = 0; while ((retval = recv(fd, buf, std::min(sz, sizeof(buf)), MSG_NOSIGNAL)) > 0) { diff --git a/UI/GamepadEmu.cpp b/UI/GamepadEmu.cpp index f8acfc6299..e0f0c03038 100644 --- a/UI/GamepadEmu.cpp +++ b/UI/GamepadEmu.cpp @@ -107,10 +107,12 @@ bool MultiTouchButton::Touch(const TouchInput &input) { usedPointerMask |= 1 << input.id; } if (input.flags & TOUCH_MOVE) { - if (bounds_.Contains(input.x, input.y) && !(analogPointerMask & (1 << input.id))) - pointerDownMask_ |= 1 << input.id; - else - pointerDownMask_ &= ~(1 << input.id); + if (!(input.flags & TOUCH_MOUSE) || input.buttons) { + if (bounds_.Contains(input.x, input.y) && !(analogPointerMask & (1 << input.id))) + pointerDownMask_ |= 1 << input.id; + else + pointerDownMask_ &= ~(1 << input.id); + } } if (input.flags & TOUCH_UP) { pointerDownMask_ &= ~(1 << input.id); @@ -291,11 +293,13 @@ bool PSPDpad::Touch(const TouchInput &input) { } } if (input.flags & TOUCH_MOVE) { - if (dragPointerId_ == -1 && bounds_.Contains(input.x, input.y) && !(analogPointerMask & (1 << input.id))) { - dragPointerId_ = input.id; - } - if (input.id == dragPointerId_) { - ProcessTouch(input.x, input.y, true); + if (!(input.flags & TOUCH_MOUSE) || input.buttons) { + if (dragPointerId_ == -1 && bounds_.Contains(input.x, input.y) && !(analogPointerMask & (1 << input.id))) { + dragPointerId_ = input.id; + } + if (input.id == dragPointerId_) { + ProcessTouch(input.x, input.y, true); + } } } if (input.flags & TOUCH_UP) {