bevy/crates
Brezak 3a6176b6cb
Properly handle repeated window close requests (#14573)
# Objective

Spamming the window close button on window may trigger a panic.

```
thread 'main' panicked at <Bevy repo>\crates\bevy_ecs\src\system\commands\mod.rs:1320:13:
error[B0003]: Could not insert a bundle (of type `bevy_window:🪟:ClosingWindow`) for entity 0v1#4294967296 because it doesn't exist in this World. See: https://bevyengine.org/learn/errors/b0003
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
Encountered a panic when applying buffers for system `bevy_window::system::close_when_requested`!
2024-08-01T15:00:29.742612Z  WARN bevy_ecs::world::command_queue: CommandQueue has un-applied commands being dropped. Did you forget to call SystemState::apply?
Encountered a panic in system `bevy_app::main_schedule::Main::run_main`!
error: process didn't exit successfully: `target\debug\bevy.exe` (exit code: 101)
```

## Solution

Don't panic when trying to insert the `ClosingWindow` component into a
entity.

## Testing

Found and tested on windows. I haven't checked if this bug happens on
linux or macos.
For testing I ran this code:

```rust
use std::{thread, time::Duration};

use bevy::prelude::*;

fn lag() {
    thread::sleep(Duration::from_millis(300));
}

fn main() -> AppExit {
    App::new()
        .add_plugins(DefaultPlugins)
        .add_systems(Update, lag)
        .run()
}
```

Then spammed the window close button. The panic no longer occurs.
2024-08-02 19:26:47 +02:00
..
bevy_a11y Release 0.14.0 version bump (#14126) 2024-07-03 18:22:10 -07:00
bevy_animation Fix single keyframe animations. (#14344) 2024-08-02 19:24:54 +02:00
bevy_app Release 0.14.0 version bump (#14126) 2024-07-03 18:22:10 -07:00
bevy_asset EmptyPathStream is only used in android/wasm32 (#14200) 2024-08-02 18:58:30 +02:00
bevy_audio Release 0.14.0 version bump (#14126) 2024-07-03 18:22:10 -07:00
bevy_color Release 0.14.0 version bump (#14126) 2024-07-03 18:22:10 -07:00
bevy_core Release 0.14.0 version bump (#14126) 2024-07-03 18:22:10 -07:00
bevy_core_pipeline Handle 0 height in prepare_bloom_textures (#14423) 2024-08-02 19:24:54 +02:00
bevy_derive Release 0.14.0 version bump (#14126) 2024-07-03 18:22:10 -07:00
bevy_dev_tools Release 0.14.0 version bump (#14126) 2024-07-03 18:22:10 -07:00
bevy_diagnostic Release 0.14.0 version bump (#14126) 2024-07-03 18:22:10 -07:00
bevy_dylib Release 0.14.0 version bump (#14126) 2024-07-03 18:22:10 -07:00
bevy_dynamic_plugin Release 0.14.0 version bump (#14126) 2024-07-03 18:22:10 -07:00
bevy_ecs Add some missing reflect attributes (#14259) 2024-08-02 19:20:44 +02:00
bevy_encase_derive Release 0.14.0 version bump (#14126) 2024-07-03 18:22:10 -07:00
bevy_gilrs Release 0.14.0 version bump (#14126) 2024-07-03 18:22:10 -07:00
bevy_gizmos Release 0.14.0 version bump (#14126) 2024-07-03 18:22:10 -07:00
bevy_gltf Fix bevy_gltf PBR features not enabling corresponding bevy_pbr flags (#14486) 2024-08-02 19:24:54 +02:00
bevy_hierarchy Release 0.14.0 version bump (#14126) 2024-07-03 18:22:10 -07:00
bevy_input bevy_input: allow use without bevy_reflect (#14167) 2024-08-02 19:11:13 +02:00
bevy_internal Release 0.14.0 version bump (#14126) 2024-07-03 18:22:10 -07:00
bevy_log Release 0.14.0 version bump (#14126) 2024-07-03 18:22:10 -07:00
bevy_macro_utils Release 0.14.0 version bump (#14126) 2024-07-03 18:22:10 -07:00
bevy_math Fix swapped docs for Rot2::rotation_to/from_y (#14307) 2024-08-02 19:15:56 +02:00
bevy_mikktspace Release 0.14.0 version bump (#14126) 2024-07-03 18:22:10 -07:00
bevy_pbr Fix incorrect function calls to hsv_to_rgb in render debug code. (#14260) 2024-08-02 19:19:53 +02:00
bevy_ptr Release 0.14.0 version bump (#14126) 2024-07-03 18:22:10 -07:00
bevy_reflect Release 0.14.0 version bump (#14126) 2024-07-03 18:22:10 -07:00
bevy_render Fix bevy_render's image dependency version (#14505) 2024-08-02 19:25:42 +02:00
bevy_scene Release 0.14.0 version bump (#14126) 2024-07-03 18:22:10 -07:00
bevy_sprite Release 0.14.0 version bump (#14126) 2024-07-03 18:22:10 -07:00
bevy_state Make initial StateTransition run before PreStartup (#14208) 2024-08-02 19:17:57 +02:00
bevy_tasks Release 0.14.0 version bump (#14126) 2024-07-03 18:22:10 -07:00
bevy_text Release 0.14.0 version bump (#14126) 2024-07-03 18:22:10 -07:00
bevy_time Release 0.14.0 version bump (#14126) 2024-07-03 18:22:10 -07:00
bevy_transform Optimize unnecessary normalizations for Transform::local_{xyz} (#14171) 2024-08-02 18:58:31 +02:00
bevy_ui fix issue with phantom ui node children (#14490) 2024-08-02 19:26:47 +02:00
bevy_utils Release 0.14.0 version bump (#14126) 2024-07-03 18:22:10 -07:00
bevy_window Properly handle repeated window close requests (#14573) 2024-08-02 19:26:47 +02:00
bevy_winit Fix bevy_winit not building with serialize feature (#14469) 2024-08-02 19:24:54 +02:00