mirror of
https://gitlab.freedesktop.org/libinput/libinput.git
synced 2026-02-05 12:10:28 +01:00
timer: if a timer is inactive, do not call the timer func
Race conditions may happen where code that cancels a timer is called just as that timer triggers. If we cancel a timer, we assume that we've put the code into a state where the timer firing will trigger a bug. This could be observed with the middle button code if the release event was held back just long enough. The button release code cancelled the timer, set the state back to idle and then complained when the timeout handling sent a 'timeout' event while being in idle. Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
This commit is contained in:
parent
399c50dbeb
commit
696fdff247
1 changed files with 3 additions and 0 deletions
|
|
@ -145,6 +145,9 @@ libinput_timer_handler(void *data)
|
|||
return;
|
||||
|
||||
list_for_each_safe(timer, tmp, &libinput->timer.list, link) {
|
||||
if (timer->expire == 0)
|
||||
continue;
|
||||
|
||||
if (timer->expire <= now) {
|
||||
/* Clear the timer before calling timer_func,
|
||||
as timer_func may re-arm it */
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue