Skip to content

Commit

Permalink
move final apply outside of spawned executor
Browse files Browse the repository at this point in the history
  • Loading branch information
hymm committed Feb 3, 2023
1 parent 3632076 commit 0d00507
Showing 1 changed file with 14 additions and 13 deletions.
27 changes: 14 additions & 13 deletions crates/bevy_ecs/src/schedule_v3/executor/multi_threaded.rs
Original file line number Diff line number Diff line change
Expand Up @@ -178,19 +178,6 @@ impl SystemExecutor for MultiThreadedExecutor {
self.rebuild_active_access();
}
}

// SAFETY: all systems have completed
let world = unsafe { &mut *world.get() };
apply_system_buffers(&self.unapplied_systems, systems, world);
self.unapplied_systems.clear();
debug_assert!(self.unapplied_systems.is_clear());

debug_assert!(self.ready_systems.is_clear());
debug_assert!(self.running_systems.is_clear());
self.active_access.clear();
self.evaluated_sets.clear();
self.skipped_systems.clear();
self.completed_systems.clear();
};

#[cfg(feature = "trace")]
Expand All @@ -199,6 +186,20 @@ impl SystemExecutor for MultiThreadedExecutor {
let executor = executor.instrument(executor_span);
scope.spawn(executor);
});

// Do one final apply buffers after all systems have completed
// SAFETY: all systems have completed, and so no outstanding accesses remain
let world = unsafe { &mut *world.get() };
apply_system_buffers(&self.unapplied_systems, systems, world);
self.unapplied_systems.clear();
debug_assert!(self.unapplied_systems.is_clear());

debug_assert!(self.ready_systems.is_clear());
debug_assert!(self.running_systems.is_clear());
self.active_access.clear();
self.evaluated_sets.clear();
self.skipped_systems.clear();
self.completed_systems.clear();
}
}

Expand Down

0 comments on commit 0d00507

Please sign in to comment.