b4102478b4
until a 20ms select(2) timeout occurs, but if there is a continuous stream of movement events, button events can be delayed indefinitely because the select never has to wait long enough for a timeout. The delay and mouse event reordering that result are very noticable and sometimes quite frustrating when dragging windows etc. in X. Add a simple mechanism that avoids this re-ordering. While a button event is deferred, we discard up to 3 movement events to allow for mouse jitter. If more movement events occur, then we immediately timeout the deferred button event and let the movement proceed. This change only affects the 3-button emulation case.