On stop write any chunk(s) left in the period buffer

That should prevent a possible sudden stop
This commit is contained in:
sniperrifle2004 2020-06-14 07:17:46 +02:00
parent cbe3c98fa1
commit a68dfa0287

View file

@ -107,7 +107,14 @@ impl Sink for AlsaSink {
fn stop(&mut self) -> io::Result<()> { fn stop(&mut self) -> io::Result<()> {
{ {
let pcm = self.pcm.as_ref().unwrap(); let pcm = self.pcm.as_mut().unwrap();
// Write any leftover data in the period buffer
// before draining the actual buffer
let io = pcm.io_i16().unwrap();
match io.writei(&self.buffer[..self.buffered_data]) {
Ok(_) => (),
Err(err) => pcm.try_recover(err, false).unwrap(),
}
pcm.drain().unwrap(); pcm.drain().unwrap();
} }
self.pcm = None; self.pcm = None;