Bind radio screen callbacks to the originating startup generation
This commit is contained in:
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) {
|
||||
|
||||
Reference in new issue
Block a user