Touchpads using sampling mode have a sampling task which is run at
a certain polling rate. When the system is under load this task may
not complete quickly which might stretch the time taken beyond what
the polling rate should be, leading to dropped touchpad motion.
On my laptop this causes the touchpad to be barely useable when
the system is under heavy load, and it is really difficult to move
the cursor since so many events are dropped.
This change adjusts the sampling loop to schedule the next polling
event to take place at a specific time in the future, based on the
polling period. If servicing the poll takes longer due to load then
the next sample will still be scheduled at its original time.