bevy/crates
Cameron bbf1c23d50
Change WinitPlugin defaults to limit game update rate when window is not visible (#7611)
Fixes #5856. Fixes #8080. Fixes #9040.

# Objective

We need to limit the update rate of games whose windows are not visible
(minimized or completely occluded). Compositors typically ignore the
VSync settings of windows that aren't visible. That, combined with the
lack of rendering work, results in a scenario where an app becomes
completely CPU-bound and starts updating without limit.

There are currently three update modes.
- `Continuous` updates an app as often as possible.
- `Reactive` updates when new window or device events have appeared, a
timer expires, or a redraw is requested.
- `ReactiveLowPower` is the same as `Reactive` except it ignores device
events (e.g. general mouse movement).

The problem is that the default "game" settings are set to `Contiuous`
even when no windows are visible.

### More Context

- https://github.com/libsdl-org/SDL/issues/1871
- https://github.com/glfw/glfw/issues/680
- https://github.com/godotengine/godot/issues/19741
- https://github.com/godotengine/godot/issues/64708

## Solution

Change the default "unfocused" `UpdateMode` for games to
`ReactiveLowPower` just like desktop apps. This way, even when the
window is occluded, the app still updates at a sensible rate or if
something about the window changes. I chose 20Hz arbitrarily.
2023-08-02 23:41:23 +00:00
..
bevy_a11y Bump Version after Release (#9106) 2023-07-10 21:19:27 +00:00
bevy_animation Simplify parallel iteration methods (#8854) 2023-07-23 11:09:24 +00:00
bevy_app Add track_caller to App::add_plugins (#9174) 2023-07-23 01:02:20 +00:00
bevy_asset Improve Mesh documentation (#9061) 2023-07-31 18:55:42 +00:00
bevy_audio Added Pitch as an alternative sound source (#9225) 2023-07-29 22:29:41 +00:00
bevy_core fix clippy::default_constructed_unit_structs and trybuild errors (#9144) 2023-07-13 22:23:04 +00:00
bevy_core_pipeline Extend the default render range of 2D camera (#9310) 2023-07-31 19:28:20 +00:00
bevy_derive Bump Version after Release (#9106) 2023-07-10 21:19:27 +00:00
bevy_diagnostic Bump Version after Release (#9106) 2023-07-10 21:19:27 +00:00
bevy_dylib Bump Version after Release (#9106) 2023-07-10 21:19:27 +00:00
bevy_dynamic_plugin Bump Version after Release (#9106) 2023-07-10 21:19:27 +00:00
bevy_ecs Add a paragraph to the lifetimeless module doc (#9312) 2023-08-02 22:01:56 +00:00
bevy_ecs_compile_fail_tests Resolve clippy issues for rust 1.70.0 (#8738) 2023-06-01 21:05:05 +00:00
bevy_encase_derive Bump Version after Release (#9106) 2023-07-10 21:19:27 +00:00
bevy_gilrs Bump Version after Release (#9106) 2023-07-10 21:19:27 +00:00
bevy_gizmos Clarify immediate mode in Gizmos documentation (#9183) 2023-07-31 19:14:52 +00:00
bevy_gltf Improve Mesh documentation (#9061) 2023-07-31 18:55:42 +00:00
bevy_hierarchy Bump Version after Release (#9106) 2023-07-10 21:19:27 +00:00
bevy_input Bump Version after Release (#9106) 2023-07-10 21:19:27 +00:00
bevy_internal fix clippy::default_constructed_unit_structs and trybuild errors (#9144) 2023-07-13 22:23:04 +00:00
bevy_log Bump Version after Release (#9106) 2023-07-10 21:19:27 +00:00
bevy_macro_utils Add some more helpful errors to BevyManifest when it doesn't find Cargo.toml (#9207) 2023-07-19 12:05:04 +00:00
bevy_macros_compile_fail_tests bevy_derive: Add #[deref] attribute (#8552) 2023-05-16 18:29:09 +00:00
bevy_math Add reflect impls to IRect and URect (#9191) 2023-07-23 01:02:00 +00:00
bevy_mikktspace Bump Version after Release (#9106) 2023-07-10 21:19:27 +00:00
bevy_pbr Fix shader_material_glsl example after #9254 (#9311) 2023-07-31 13:14:40 +00:00
bevy_ptr Put #[repr(transparent)] attr to bevy_ptr types (#9068) 2023-07-14 18:55:15 +00:00
bevy_reflect Implement reflect trait on new glam types (I64Vec and U64Vec) (#9281) 2023-07-31 19:18:21 +00:00
bevy_reflect_compile_fail_tests fix clippy::default_constructed_unit_structs and trybuild errors (#9144) 2023-07-13 22:23:04 +00:00
bevy_render fix typo in a link - Mesh docs (#9329) 2023-08-01 21:03:16 +00:00
bevy_scene Bump Version after Release (#9106) 2023-07-10 21:19:27 +00:00
bevy_sprite Bump Version after Release (#9106) 2023-07-10 21:19:27 +00:00
bevy_tasks fix clippy::default_constructed_unit_structs and trybuild errors (#9144) 2023-07-13 22:23:04 +00:00
bevy_text Fix for vertical text bounds and alignment (#9133) 2023-07-13 23:35:32 +00:00
bevy_time Bump Version after Release (#9106) 2023-07-10 21:19:27 +00:00
bevy_transform Simplify parallel iteration methods (#8854) 2023-07-23 11:09:24 +00:00
bevy_ui Remove the With<Parent> query filter from bevy_ui::render::extract_uinode_borders (#9285) 2023-07-31 20:33:17 +00:00
bevy_utils Bump Version after Release (#9106) 2023-07-10 21:19:27 +00:00
bevy_window improve documentation relating to WindowPlugin and Window (#9173) 2023-07-30 15:46:16 +00:00
bevy_winit Change WinitPlugin defaults to limit game update rate when window is not visible (#7611) 2023-08-02 23:41:23 +00:00