@@ -6,7 +6,7 @@ use coreaudio::audio_unit::audio_format::LinearPcmFlags;
6
6
use coreaudio:: audio_unit:: render_callback:: { self , data} ;
7
7
use coreaudio:: audio_unit:: {
8
8
audio_unit_from_device_id, get_default_device_id, set_device_sample_format,
9
- set_device_sample_rate, RateListener ,
9
+ set_device_sample_rate, AliveListener , RateListener ,
10
10
} ;
11
11
use coreaudio:: audio_unit:: { Element , SampleFormat , Scope , StreamFormat } ;
12
12
use coreaudio:: sys:: kAudioUnitProperty_StreamFormat;
@@ -107,9 +107,11 @@ fn main() -> Result<(), coreaudio::Error> {
107
107
// For this example, our sine wave expects `f32` data.
108
108
assert ! ( SampleFormat :: F32 == stream_format. sample_format) ;
109
109
110
- // Register a rate listener
111
- let mut listener = RateListener :: new ( audio_unit_id, None ) ;
112
- listener. register ( ) ?;
110
+ // Register rate and alive listeners
111
+ let mut rate_listener = RateListener :: new ( audio_unit_id, None ) ;
112
+ rate_listener. register ( ) ?;
113
+ let mut alive_listener = AliveListener :: new ( audio_unit_id) ;
114
+ alive_listener. register ( ) ?;
113
115
114
116
if INTERLEAVED {
115
117
println ! ( "Register interleaved callback" ) ;
@@ -153,7 +155,8 @@ fn main() -> Result<(), coreaudio::Error> {
153
155
for _ in 0 ..100 {
154
156
std:: thread:: sleep ( std:: time:: Duration :: from_millis ( 100 ) ) ;
155
157
// print all sample change events
156
- println ! ( "rate events: {:?}" , listener. copy_values( ) ) ;
158
+ println ! ( "rate events: {:?}" , rate_listener. copy_values( ) ) ;
159
+ println ! ( "alive state: {}" , alive_listener. is_alive( ) ) ;
157
160
}
158
161
Ok ( ( ) )
159
162
}
0 commit comments