The request is now only made when necessary and times out after 500ms.
This breaks our end of the protocol to work around broken
implementations at the other end.
It uses the GLFW timer instead of select, as select is not guaranteed to
update the timeout with the time remaining and a single select is not
sufficient as other events may be incoming.
Fixes#368 (mostly).
Fixes#429 (mostly).
Changed the window states (focused, iconified and visible) to query the
system directly.
THIS IS A BREAKING CHANGE, although a fairly obscure one. It affects
applications that both care about telling actual key events from
synthetic ones, and are implemented in a non-self-synchronizing way, and
that poll the GLFW_FOCUSED window attribute instead of using the window
focus callback.
If you maintain one of these, please feel free to drop me an email and
I'll help any way I can to transition your application to 3.1.
Fixes#189.
Fixes#204.
When natural scrolling is disabled on OS X, the X-axis of the scroll
offsets is inverted compared to the direction on Windows. The X11
scrolling directions are unspecified and so have been aligned with the
Windows port. Natural scrolling inverts both axes on both OS X and X11,
so the issue remains when the feature is enabled.
This inverts the provided X-axis scroll offset, making "unnatural"
scroll data align with the Windows and X11 ports and "natual" scroll
data be fully inverted and aligned with its counterpart on X11.
Fixes#239.
The display device string was used, instead of the adapter device name,
leading to the wrong incorrect physical size being returned for
non-primary monitors. The right incorrect physical size is now returned
for all monitors.
This function used to enumerate all devices and capture all properties
of every device into a dictionary. This takes 180 ms on a MacBook Pro
without external devices and 280 ms with an external keyboard/mouse
attached.
Since we're only interested in a few properties, we can just get them
one by one - this reduces the time to <1 ms.
Note that we still use the dictionary to get the joystick elements.
For unknown reason this is required to get all axes/buttons - without
doing this we don't get any joystick elements in addJoystickElement.
Closes#332.