From cd694c0d08e8623c5d354348f26a74bf542b4c76 Mon Sep 17 00:00:00 2001 From: Mathis Date: Sun, 20 Mar 2022 21:54:10 +0000 Subject: [PATCH] Prevent event from getting registered twice (#4258) # Objective As described in #4257, registering an Event twice would cause some systems to miss events on some starts, since the event buffer is cleared + swapped multiple times. Fixes #4257 ## Solution A simple check whether the event is already registered is added, making adding an Event a second time a no-op. --- crates/bevy_app/src/app.rs | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/crates/bevy_app/src/app.rs b/crates/bevy_app/src/app.rs index 7316ae1193..06b362e943 100644 --- a/crates/bevy_app/src/app.rs +++ b/crates/bevy_app/src/app.rs @@ -622,8 +622,11 @@ impl App { where T: Resource, { - self.init_resource::>() - .add_system_to_stage(CoreStage::First, Events::::update_system) + if !self.world.contains_resource::>() { + self.init_resource::>() + .add_system_to_stage(CoreStage::First, Events::::update_system); + } + self } /// Inserts a resource to the current [App] and overwrites any resource previously added of the same type.