Streamline internal sleep and call_later #162
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Relates to #146
This simplifies the code paths related to async sleep and call_later a bit. In particular:
rendercanvas.asyncs.sleep()always uses a normal sleep. Yes, imprecise on Windows, but expected.rendercanvas.asyncs.precise_sleep()for where we need precise sleep: one instance in the scheduler.sleep()call_later_in_threadin combination withcall_soon_threadsafe.Why? I was looking at the code paths related to sleep, the
call_later_in_thread, and the_rc_call_laterin the backends. I found the code paths pretty confusion, also which code takes care of having a precise sleep. In fact, the qt precise timer was never actually used, because for that to work,asyncs.sleepwould have to detect that the qt loop is active and then not use the threaded timer but the asyncadapter's sleep. Doing that felt like it would become even more complex.This PR also contains a few minor tweaks that I added when investigating yesterdays bug, but forgot to push to the pr.