Linux: Ignore partial state after SYN_DROPPED

Related to #1005.
This commit is contained in:
Camilla Löwy 2017-06-15 17:40:57 +02:00
parent d2952e4e92
commit 6da26c8d6c
2 changed files with 15 additions and 2 deletions

View File

@ -399,12 +399,24 @@ int _glfwPlatformPollJoystick(int jid, int mode)
break; break;
} }
if (e.type == EV_SYN)
{
if (e.code == SYN_DROPPED)
_glfw.linjs.dropped = GLFW_TRUE;
else if (e.code == SYN_REPORT)
{
_glfw.linjs.dropped = GLFW_FALSE;
pollAbsState(js);
}
}
if (_glfw.linjs.dropped)
continue;
if (e.type == EV_KEY) if (e.type == EV_KEY)
handleKeyEvent(js, e.code, e.value); handleKeyEvent(js, e.code, e.value);
else if (e.type == EV_ABS) else if (e.type == EV_ABS)
handleAbsEvent(js, e.code, e.value); handleAbsEvent(js, e.code, e.value);
else if (e.type == EV_SYN && e.code == SYN_DROPPED)
pollAbsState(js);
} }
return js->present; return js->present;

View File

@ -50,6 +50,7 @@ typedef struct _GLFWlibraryLinux
int inotify; int inotify;
int watch; int watch;
regex_t regex; regex_t regex;
GLFWbool dropped;
} _GLFWlibraryLinux; } _GLFWlibraryLinux;