diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/ginput/mouse.c | 4 | ||||
-rw-r--r-- | src/ginput/toggle.c | 4 |
2 files changed, 8 insertions, 0 deletions
diff --git a/src/ginput/mouse.c b/src/ginput/mouse.c index 35a55bc5..94734888 100644 --- a/src/ginput/mouse.c +++ b/src/ginput/mouse.c @@ -378,6 +378,10 @@ GSourceHandle ginputGetMouse(uint16_t instance) { }
bool_t ginputGetMouseStatus(uint16_t instance, GEventMouse *pe) {
+ // Win32 threads don't seem to recognise priority and/or pre-emption
+ // so we add a sleep here to prevent 100% polled applications from locking up.
+ chThdSleepMilliseconds(1);
+
if (instance || (MouseConfig.flags & (FLG_INIT_DONE|FLG_IN_CAL)) != FLG_INIT_DONE)
return FALSE;
diff --git a/src/ginput/toggle.c b/src/ginput/toggle.c index 66021cd0..4401e295 100644 --- a/src/ginput/toggle.c +++ b/src/ginput/toggle.c @@ -145,6 +145,10 @@ void ginputInvertToggle(uint16_t instance, bool_t invert) { * Returns FALSE on error (eg invalid instance)
*/
bool_t ginputGetToggleStatus(uint16_t instance, GEventToggle *ptoggle) {
+ // Win32 threads don't seem to recognise priority and/or pre-emption
+ // so we add a sleep here to prevent 100% polled applications from locking up.
+ chThdSleepMilliseconds(1);
+
if (instance >= GINPUT_TOGGLE_NUM_PORTS)
return FALSE;
ptoggle->type = GEVENT_TOGGLE;
|