Bind radio screen callbacks to the originating startup generation

This commit is contained in:
evgeny committed 2026-10-29 13:34:23 +01:00
1 parent 7084454e84
commit b6ec030128
1 file changed
+4 -5
@@ -155,7 +155,7 @@ class RadioAudioEngine {
audioGroup = group
vadWindow.restart(SystemClock.elapsedRealtime())
operation = "setup"
setupAudio()
setupAudio(version)
ready = active && generation == version && audioTrack != null
}
}
@@ -274,7 +274,7 @@ class RadioAudioEngine {
}
/* Приём создаётся независимо от микрофона (только io-поток). */
private fun setupAudio() {
private fun setupAudio(version: Long) {
loadCaptureSettings()
val group = audioGroup
check(NativeLib.radioAudioStart(group, 0)) { "native radioAudioStart failed group=$group" }
@@ -302,7 +302,7 @@ class RadioAudioEngine {
priority = Thread.MAX_PRIORITY; start()
}
registerScreenReceiver()
registerScreenReceiver(version)
updateCapture()
LogManager.addLog("INFO", "RadioAudio", "listening group=$group trackBuf=$trackBuf")
}
@@ -358,8 +358,7 @@ class RadioAudioEngine {
private fun screenOn(): Boolean =
(ChatApplication.instance.getSystemService(Context.POWER_SERVICE) as PowerManager).isInteractive
private fun registerScreenReceiver() {
val version = generation
private fun registerScreenReceiver(version: Long) {
val receiver = object : BroadcastReceiver() {
override fun onReceive(context: Context, intent: Intent) {
if (!active || generation != version || screenReceiver !== this) {