diff --git a/src/call.rs b/src/call.rs index 3278fd2..a6bd5e9 100644 --- a/src/call.rs +++ b/src/call.rs @@ -11,11 +11,9 @@ use songbird::{ CoreEvent, Event, EventContext, EventHandler, Songbird, driver::{Channels, SampleRate}, }; -use std::{ - sync::{Arc, Mutex}, - time::Instant, -}; +use std::{sync::Arc, time::Instant}; use time::UtcDateTime; +use tokio::sync::RwLock; use twilight_model::id::{ Id, marker::{ChannelMarker, GuildMarker, UserMarker}, @@ -31,7 +29,7 @@ struct Handler { guild_id: Id, channel_id: Id, - known_ssrcs: Arc, u32>>>, + known_ssrcs: Arc, u32>>>, audio_channels: u16, audio_sample_rate: u32, @@ -53,15 +51,15 @@ impl EventHandler for Handler { let user_id = Id::new(user_id.0); self.known_ssrcs - .lock() - .unwrap() + .write() + .await .insert(user_id, speaking.ssrc); } } EventContext::VoiceTick(voice_tick) => { for (ssrc, voice_data) in &voice_tick.speaking { let user_id = { - let known_ssrcs = self.known_ssrcs.lock().unwrap(); + let known_ssrcs = self.known_ssrcs.read().await; known_ssrcs.get_left_for(ssrc).cloned() }; @@ -126,7 +124,6 @@ impl EventHandler for Handler { let channels = self.audio_channels; let sample_rate = self.audio_sample_rate; - let recording_manager = self.recording_manager.clone(); let samples = pcm.clone();