diff --git a/Cargo.lock b/Cargo.lock index 737ce42797..82e3c827ae 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -640,6 +640,7 @@ version = "0.1.0" dependencies = [ "anyhow", "collections", + "derive_more", "futures 0.3.28", "gpui", "log", diff --git a/crates/audio/Cargo.toml b/crates/audio/Cargo.toml index 37b2a7a156..7b9b76b635 100644 --- a/crates/audio/Cargo.toml +++ b/crates/audio/Cargo.toml @@ -10,14 +10,12 @@ path = "src/audio.rs" doctest = false [dependencies] -gpui = { path = "../gpui" } -collections = { path = "../collections" } -util = { path = "../util" } - - -rodio ={version = "0.17.1", default-features=false, features = ["wav"]} - -log.workspace = true -futures.workspace = true anyhow.workspace = true +collections = { path = "../collections" } +derive_more.workspace = true +futures.workspace = true +gpui = { path = "../gpui" } +log.workspace = true parking_lot.workspace = true +rodio = { version = "0.17.1", default-features = false, features = ["wav"] } +util = { path = "../util" } diff --git a/crates/audio/src/audio.rs b/crates/audio/src/audio.rs index a116674288..defa1e2fa9 100644 --- a/crates/audio/src/audio.rs +++ b/crates/audio/src/audio.rs @@ -1,4 +1,5 @@ use assets::SoundRegistry; +use derive_more::{Deref, DerefMut}; use gpui::{AppContext, AssetSource, Global}; use rodio::{OutputStream, OutputStreamHandle}; use util::ResultExt; @@ -7,7 +8,7 @@ mod assets; pub fn init(source: impl AssetSource, cx: &mut AppContext) { SoundRegistry::set_global(source, cx); - cx.set_global(Audio::new()); + cx.set_global(GlobalAudio(Audio::new())); } pub enum Sound { @@ -37,7 +38,10 @@ pub struct Audio { output_handle: Option, } -impl Global for Audio {} +#[derive(Deref, DerefMut)] +struct GlobalAudio(Audio); + +impl Global for GlobalAudio {} impl Audio { pub fn new() -> Self { @@ -58,11 +62,11 @@ impl Audio { } pub fn play_sound(sound: Sound, cx: &mut AppContext) { - if !cx.has_global::() { + if !cx.has_global::() { return; } - cx.update_global::(|this, cx| { + cx.update_global::(|this, cx| { let output_handle = this.ensure_output_exists()?; let source = SoundRegistry::global(cx).get(sound.file()).log_err()?; output_handle.play_raw(source).log_err()?; @@ -71,11 +75,11 @@ impl Audio { } pub fn end_call(cx: &mut AppContext) { - if !cx.has_global::() { + if !cx.has_global::() { return; } - cx.update_global::(|this, _| { + cx.update_global::(|this, _| { this._output_stream.take(); this.output_handle.take(); });