diff --git a/components/profile_traits/Cargo.toml b/components/profile_traits/Cargo.toml index 0f993d3dcd5..71a3de5662a 100644 --- a/components/profile_traits/Cargo.toml +++ b/components/profile_traits/Cargo.toml @@ -19,7 +19,7 @@ features = [ "serde_serialization" ] [dependencies.energymon] git = "https://github.com/energymon/energymon-rust.git" -rev = "67f74732ac" +rev = "eba1d8a" optional = true [dependencies.energy-monitor] diff --git a/components/profile_traits/energy.rs b/components/profile_traits/energy.rs index a4b60e1316f..23554386f77 100644 --- a/components/profile_traits/energy.rs +++ b/components/profile_traits/energy.rs @@ -36,8 +36,8 @@ mod energymon { static mut EM: Option<*mut EnergyMon> = None; - /// Read energy from the energy monitor, otherwise return 0. - pub fn read_energy_uj() -> u64 { + fn init() { + // can't use lazy_static macro for EM (no Sync trait for EnergyMon) static ONCE: Once = ONCE_INIT; ONCE.call_once(|| { if let Ok(em) = EnergyMon::new() { @@ -47,7 +47,11 @@ mod energymon { } } }); + } + /// Read energy from the energy monitor, otherwise return 0. + pub fn read_energy_uj() -> u64 { + init(); unsafe { // EnergyMon implementations of EnergyMonitor always return a value EM.map_or(0, |em| (*em).read_uj().unwrap()) @@ -55,6 +59,7 @@ mod energymon { } pub fn get_min_interval_ms() -> u32 { + init(); unsafe { EM.map_or(0, |em| ((*em).interval_us() as f64 / 1000.0).ceil() as u32) } diff --git a/components/servo/Cargo.lock b/components/servo/Cargo.lock index bfeee4a49ac..dfd5adf5a13 100644 --- a/components/servo/Cargo.lock +++ b/components/servo/Cargo.lock @@ -473,18 +473,17 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "energymon" version = "0.1.0" -source = "git+https://github.com/energymon/energymon-rust.git?rev=67f74732ac#67f74732ac0acc682659f7e81836155a32188fd0" +source = "git+https://github.com/energymon/energymon-rust.git?rev=eba1d8a#eba1d8a7256b710230ea2c1b26525b88bfcb529d" dependencies = [ "energy-monitor 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "energymon-default-sys 0.1.0 (git+https://github.com/energymon/energymon-default-sys.git)", - "energymon-sys 0.1.0 (git+https://github.com/energymon/energymon-sys.git)", + "energymon-default-sys 0.1.0 (git+https://github.com/energymon/energymon-sys.git)", "libc 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "energymon-default-sys" version = "0.1.0" -source = "git+https://github.com/energymon/energymon-default-sys.git#82dd2f6762b492ced15d8446b70569778200c287" +source = "git+https://github.com/energymon/energymon-sys.git#82756eee725db3ccb658f14857947a0260743d4d" dependencies = [ "energymon-sys 0.1.0 (git+https://github.com/energymon/energymon-sys.git)", "libc 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", @@ -494,7 +493,7 @@ dependencies = [ [[package]] name = "energymon-sys" version = "0.1.0" -source = "git+https://github.com/energymon/energymon-sys.git#6306f70e5d5c824fa168e43521385798fd1b890b" +source = "git+https://github.com/energymon/energymon-sys.git#82756eee725db3ccb658f14857947a0260743d4d" dependencies = [ "libc 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1417,7 +1416,7 @@ name = "profile_traits" version = "0.0.1" dependencies = [ "energy-monitor 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "energymon 0.1.0 (git+https://github.com/energymon/energymon-rust.git?rev=67f74732ac)", + "energymon 0.1.0 (git+https://github.com/energymon/energymon-rust.git?rev=eba1d8a)", "ipc-channel 0.1.0 (git+https://github.com/pcwalton/ipc-channel)", "plugins 0.0.1", "serde 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)",