@@ -73,11 +73,13 @@ impl Actor for SourceActor {
7373 }
7474 } ) ;
7575
76- let mic_device = AudioInput :: get_default_mic_name ( ) ;
76+ let mic_device = args
77+ . device
78+ . or_else ( || Some ( AudioInput :: get_default_mic_name ( ) ) ) ;
7779 let silence_stream_tx = Some ( hypr_audio:: AudioOutput :: silence ( ) ) ;
7880
7981 let mut st = SourceState {
80- mic_device : Some ( mic_device ) ,
82+ mic_device,
8183 proc : args. proc ,
8284 token : args. token ,
8385 mic_muted : Arc :: new ( AtomicBool :: new ( false ) ) ,
@@ -170,10 +172,14 @@ async fn start_source_loop(
170172 let stream_cancel_token = CancellationToken :: new ( ) ;
171173 st. stream_cancel_token = Some ( stream_cancel_token. clone ( ) ) ;
172174
175+ #[ cfg( target_os = "macos" ) ]
173176 let use_mixed = !AudioInput :: is_using_headphone ( ) ;
174- tracing:: info!( use_mixed = use_mixed) ;
177+
178+ #[ cfg( not( target_os = "macos" ) ) ]
179+ let use_mixed = false ;
175180
176181 let handle = if use_mixed {
182+ #[ cfg( target_os = "macos" ) ]
177183 tokio:: spawn ( async move {
178184 let mixed_stream = {
179185 let mut mixed_input = AudioInput :: from_mixed ( ) . unwrap ( ) ;
@@ -196,7 +202,8 @@ async fn start_source_loop(
196202 }
197203 mixed_next = mixed_stream. next( ) => {
198204 if let Some ( data) = mixed_next {
199- let output_data = if mic_muted. load( Ordering :: Relaxed ) || spk_muted. load( Ordering :: Relaxed ) {
205+ // TODO: should be able to mute each stream
206+ let output_data = if mic_muted. load( Ordering :: Relaxed ) && spk_muted. load( Ordering :: Relaxed ) {
200207 vec![ 0.0 ; data. len( ) ]
201208 } else {
202209 data
0 commit comments