jD91mZM2/xidlehook

Use CLOCK_BOOTTIME source when sleeping

Opened this issue · 2 comments

When sleeping between timers, the current code uses nanosleep, which uses CLOCK_MONOTONIC as a time source.

CLOCK_MONOTONIC doesn't advance when the system is suspended, which prevents xidlelock to trigger correctly right after the system has woken up from an extended sleep.

xidlelock should probably use clock_nanosleep with CLOCK_BOOTTIME as a time source, which correctly counts suspended time.

I forgot about this during our email conversation, but the main xidlehook client does not actually use this code path. It uses tokio, which uses rust's Instant, a monotonic clock.

I would have to work around this to use CLOCK_BOOTTIME, which I'm not sure is trivial. I think your best bet is to bump this issue.

Sorry for the letdown.

That said, how are you un-suspending your system without also becoming idle? Some kind of Wake on LAN?

Ahh, the joys of cross platform wrappers...