diff --git a/crates/bevy_diagnostic/Cargo.toml b/crates/bevy_diagnostic/Cargo.toml index af8279c3bb00b..4d704dabe886f 100644 --- a/crates/bevy_diagnostic/Cargo.toml +++ b/crates/bevy_diagnostic/Cargo.toml @@ -10,7 +10,7 @@ license = "MIT" keywords = ["bevy"] [features] -profiler = [] +profiler = ["bevy_ecs/profiler"] [dependencies] # bevy diff --git a/crates/bevy_diagnostic/src/lib.rs b/crates/bevy_diagnostic/src/lib.rs index 98f647a37c949..c5f9b4c394de7 100644 --- a/crates/bevy_diagnostic/src/lib.rs +++ b/crates/bevy_diagnostic/src/lib.rs @@ -19,7 +19,7 @@ impl Plugin for DiagnosticsPlugin { #[cfg(feature = "profiler")] { use bevy_ecs::IntoQuerySystem; - app.add_resource::>(Box::new( + app.add_resource::>(Box::new( system_profiler::SystemProfiler::default(), )) .add_system_to_stage( diff --git a/crates/bevy_diagnostic/src/system_profiler.rs b/crates/bevy_diagnostic/src/system_profiler.rs index 7a6577ac93f52..f10d72a5a1d37 100644 --- a/crates/bevy_diagnostic/src/system_profiler.rs +++ b/crates/bevy_diagnostic/src/system_profiler.rs @@ -1,5 +1,5 @@ use crate::{Diagnostic, DiagnosticId, Diagnostics}; -use bevy_ecs::{profiler::Profiler, Res, ResMut}; +use bevy_ecs::{Profiler, Res, ResMut}; use std::{ borrow::Cow, collections::HashMap, diff --git a/crates/bevy_ecs/Cargo.toml b/crates/bevy_ecs/Cargo.toml index 7222f282c6120..28de4c835c6ac 100644 --- a/crates/bevy_ecs/Cargo.toml +++ b/crates/bevy_ecs/Cargo.toml @@ -18,4 +18,5 @@ bevy_hecs = { path = "hecs", features = ["macros", "serialize"], version = "0.1" rand = "0.7.2" rayon = "1.3" crossbeam-channel = "0.4.2" -fixedbitset = "0.3.0" \ No newline at end of file +fixedbitset = "0.3.0" +downcast-rs = "1.1.1" diff --git a/crates/bevy_ecs/src/schedule/schedule.rs b/crates/bevy_ecs/src/schedule/schedule.rs index 0918240074d06..77a72237dcc1a 100644 --- a/crates/bevy_ecs/src/schedule/schedule.rs +++ b/crates/bevy_ecs/src/schedule/schedule.rs @@ -131,9 +131,9 @@ impl Schedule { for stage_name in self.stage_order.iter() { if let Some(stage_systems) = self.stages.get_mut(stage_name) { for system in stage_systems.iter_mut() { - #[cfg(feature = "profiler")] - crate::profiler::profiler_start(resources, system.name().clone()); let mut system = system.lock().unwrap(); + #[cfg(feature = "profiler")] + crate::profiler_start(resources, system.name().clone()); system.update_archetype_access(world); match system.thread_local_execution() { ThreadLocalExecution::NextFlush => system.run(world, resources), @@ -144,7 +144,7 @@ impl Schedule { } } #[cfg(feature = "profiler")] - crate::profiler::profiler_stop(resources, system.name().clone()); + crate::profiler_stop(resources, system.name().clone()); } // "flush" diff --git a/crates/bevy_ecs/src/system/profiler.rs b/crates/bevy_ecs/src/system/profiler.rs index 553dd6f8f2a98..04914bde3735f 100644 --- a/crates/bevy_ecs/src/system/profiler.rs +++ b/crates/bevy_ecs/src/system/profiler.rs @@ -11,13 +11,13 @@ pub trait Profiler: Downcast + Send + Sync + 'static { } pub fn profiler_start(resources: &Resources, scope: Cow<'static, str>) { - if let Ok(profiler) = resources.get::>() { + if let Some(profiler) = resources.get::>() { profiler.start(scope); } } pub fn profiler_stop(resources: &Resources, scope: Cow<'static, str>) { - if let Ok(profiler) = resources.get::>() { + if let Some(profiler) = resources.get::>() { profiler.stop(scope); } }