diff --git a/audio-linux.go b/audio-linux.go index 81e275d..6ef6400 100644 --- a/audio-linux.go +++ b/audio-linux.go @@ -43,15 +43,19 @@ type audioStruct struct { var audio audioStruct +func (a *audioStruct) defaultSoundCardStreamDeinit() { + _ = a.defaultSoundCardStream.Drain() + a.defaultSoundCardStream.Free() + a.defaultSoundCardStream = nil +} + func (a *audioStruct) togglePlaybackToDefaultSoundcard() { if a.defaultSoundCardStream == nil { log.Print("turned on audio playback") ss := pulse.SampleSpec{Format: pulse.SAMPLE_S16LE, Rate: 48000, Channels: 1} a.defaultSoundCardStream, _ = pulse.Playback("kappanhang", a.devName, &ss) } else { - _ = a.defaultSoundCardStream.Drain() - a.defaultSoundCardStream.Free() - a.defaultSoundCardStream = nil + a.defaultSoundCardStreamDeinit() log.Print("turned off audio playback") } } @@ -89,6 +93,9 @@ func (a *audioStruct) playLoop(deinitNeededChan, deinitFinishedChan chan bool) { case <-a.togglePlaybackToDefaultSoundcardChan: a.togglePlaybackToDefaultSoundcard() case <-deinitNeededChan: + if a.defaultSoundCardStream != nil { + a.defaultSoundCardStreamDeinit() + } deinitFinishedChan <- true return }