Skip to content

Commit

Permalink
[osx] Implement play/pause for coreaudio
Browse files Browse the repository at this point in the history
  • Loading branch information
HybridEidolon committed Oct 18, 2016
1 parent bb65200 commit b44a2ab
Showing 1 changed file with 16 additions and 6 deletions.
22 changes: 16 additions & 6 deletions src/coreaudio/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -87,11 +87,13 @@ impl<T> Buffer<T> where T: Sample {
type NumChannels = usize;
type NumFrames = usize;

pub struct Voice;
pub struct Voice {
playing: bool,
audio_unit: AudioUnit
}

#[allow(dead_code)] // the audio_unit will be dropped if we don't hold it.
pub struct SamplesStream {
audio_unit: AudioUnit,
inner: Arc<Mutex<SamplesStreamInner>>,
}

Expand Down Expand Up @@ -191,20 +193,28 @@ impl Voice {
try!(audio_unit.start().map_err(convert_error));

let samples_stream = SamplesStream {
audio_unit: audio_unit,
inner: inner,
};

Ok((Voice, samples_stream))
Ok((Voice {
playing: true,
audio_unit: audio_unit
}, samples_stream))
}

#[inline]
pub fn play(&mut self) {
// implicitly playing
if !self.playing {
self.audio_unit.start().unwrap();
self.playing = true;
}
}

#[inline]
pub fn pause(&mut self) {
unimplemented!()
if self.playing {
self.audio_unit.stop().unwrap();
self.playing = false;
}
}
}

0 comments on commit b44a2ab

Please sign in to comment.