]> code.octet-stream.net Git - broadcaster/commitdiff
Clear playback properly when cancelling
authorThomas Karpiniec <tom.karpiniec@outlook.com>
Thu, 29 May 2025 02:21:07 +0000 (12:21 +1000)
committerThomas Karpiniec <tom.karpiniec@outlook.com>
Thu, 29 May 2025 02:21:07 +0000 (12:21 +1000)
Without this, a subsequent Play() can hang (PTT lock-up!)

radio/main.go

index 85d15b1d715e6046b60dd1366da574acbf8ff15e..5edd54efe22f6bcfe07009154080602dbfee8d45 100644 (file)
@@ -330,16 +330,20 @@ entries:
                        })))
                }
 
                        })))
                }
 
+               aborting := false
                select {
                case <-done:
                        log.Println("Audio playback complete")
                case <-cancel:
                select {
                case <-done:
                        log.Println("Audio playback complete")
                case <-cancel:
-                       log.Println("Disengaging PTT and aborting playlist playback")
-                       ptt.DisengagePTT()
-                       break entries
+                       log.Println("Playlist aborting as requested")
+                       aborting = true
                }
                }
-               log.Println("PTT off since audio file has finished")
+               speaker.Clear()
+               log.Println("PTT off")
                ptt.DisengagePTT()
                ptt.DisengagePTT()
+               if aborting {
+                       break entries
+               }
        }
        log.Println("Playlist finished", playlist.Name)
        statusCollector.PlaylistBeginIdle <- true
        }
        log.Println("Playlist finished", playlist.Name)
        statusCollector.PlaylistBeginIdle <- true