Compare commits

...

2 Commits

Author SHA1 Message Date
Yang sheng
2e0f831e12
Merge 0a19ea0a3e into 228e58262e 2024-04-12 21:02:07 +08:00
iysheng
0a19ea0a3e Linux: Modify _glfwPollJoystickLinux return true only when new valid event
To keep consistent with the event reporting mechanism, and returns true only
when a new valid event occurs
2022-09-22 17:34:57 +08:00

View File

@ -386,6 +386,7 @@ void _glfwTerminateJoysticksLinux(void)
GLFWbool _glfwPollJoystickLinux(_GLFWjoystick* js, int mode) GLFWbool _glfwPollJoystickLinux(_GLFWjoystick* js, int mode)
{ {
// Read all queued events (non-blocking) // Read all queued events (non-blocking)
GLFWbool event_valid = GLFW_FALSE;
for (;;) for (;;)
{ {
struct input_event e; struct input_event e;
@ -396,6 +397,8 @@ GLFWbool _glfwPollJoystickLinux(_GLFWjoystick* js, int mode)
// Reset the joystick slot if the device was disconnected // Reset the joystick slot if the device was disconnected
if (errno == ENODEV) if (errno == ENODEV)
closeJoystick(js); closeJoystick(js);
else if ((errno == EAGAIN) && (mode != _GLFW_POLL_PRESENCE))
return event_valid;
break; break;
} }
@ -407,6 +410,7 @@ GLFWbool _glfwPollJoystickLinux(_GLFWjoystick* js, int mode)
else if (e.code == SYN_REPORT) else if (e.code == SYN_REPORT)
{ {
_glfw.linjs.dropped = GLFW_FALSE; _glfw.linjs.dropped = GLFW_FALSE;
event_valid = GLFW_TRUE;
pollAbsState(js); pollAbsState(js);
} }
} }