bevy/crates/bevy_platform_support/src
Zachary Harrold 99289ad988
Add sleep based on spin to bevy_platform_support (#18633)
# Objective

- Fixes #18617

## Solution

- Added `thread::sleep` to `bevy_platform_support` using a spin-based
fallback.
- Fixed bug in `bevy_platform_support::time::Instant::elapsed`
(comparison was backwards)
- Switched `ScheduleRunnerPlugin` to use
`bevy_platform_support:🧵:sleep` on `std` and `no_std` platforms
(WASM + Browser excluded)

## Testing

- Ran reproduction code from @mockersf in linked issue and confirmed a
consistent 60 counts per `println!`.

---

## Notes

- I chose to add `bevy_platform_support:🧵:sleep` instead of
putting the fix in-line within `ScheduleRunnerPlugin` to keep the
separation of concerns clean. `sleep` is only used in one other location
in Bevy, `bevy_asset`, but I have decided to leave that as-is since
`bevy_asset` isn't `no_std` compatible anyway.
- The bug in `bevy_platform_support::time::Instant::elapsed` wasn't the
cause of this issue, but it did prevent this fix from working so I have
included the it in this PR.
2025-03-31 23:21:49 +00:00
..
sync Address lints in bevy_platform_support (#18477) 2025-03-22 11:21:18 +00:00
time Add sleep based on spin to bevy_platform_support (#18633) 2025-03-31 23:21:49 +00:00
collections.rs Remove example causing circular dependency in bevy_platform_support (#18390) 2025-03-18 08:58:52 +00:00
hash.rs Move hashbrown and foldhash out of bevy_utils (#17460) 2025-01-23 16:46:08 +00:00
lib.rs Add sleep based on spin to bevy_platform_support (#18633) 2025-03-31 23:21:49 +00:00
thread.rs Add sleep based on spin to bevy_platform_support (#18633) 2025-03-31 23:21:49 +00:00