Clarify router cleanup as a native audio teardown prerequisite

This commit is contained in:
evgeny committed 2026-10-29 13:34:24 +01:00
1 parent bc6ca78ce8
commit 99ab91d2f5
2 files changed
+4 -3

No files matched your search

@@ -126,7 +126,8 @@ class CallAudioEngine {
System.nanoTime() / 1000 - sample.atUs in 0..500_000) sample.latency else CallOutputLatency()
}
/** Позднее создание Telecom Connection: сначала снимаем собственную заявку на audio mode. */
/** Поздняя Telecom Connection: снять собственные mode/глобальный маршрут, затем передать владение.
* Отказ передаётся через onFailure; stop сохраняет неподтверждённые ресурсы для повторной очистки. */
fun bindTelecom(connection: UtunConnection) {
if (!active || router.telecom === connection) return
try {
@@ -323,7 +324,7 @@ class CallAudioEngine {
/** Main: отменить работу, разблокировать read и подтвердить join/release каждой независимой части.
* Join ограничен 250 мс на worker; живые потоки и устройства остаются до следующей попытки.
* При неполной очистке бросает ошибку владельцу; native останавливается лишь после устройств. */
* При неполной очистке бросает ошибку владельцу; native ждёт устройства, router, listener и mode. */
fun stop() {
check(Looper.myLooper() == Looper.getMainLooper()) {
LogManager.addLog("ERROR", "CallAudio", "stop outside main id=$callId")
+1 -1
View File
@@ -418,7 +418,7 @@ Audio stop снимает active и callbacks, пытается разблоки
worker до 250 мс за попытку; playback также ждёт свой reporter. Живые потоки сохраняются,
устройства освобождаются после завершения обоих workers. Ошибки release оставляют
AudioRecord/CallAudioOutput у движка, включая частичный запуск и отказ после эффекта.
Удаление communication listener и восстановление собственного AudioManager mode/speaker
Остановка router, удаление communication listener и восстановление собственного AudioManager mode/speaker
повторяются независимо; после передачи режима в Telecom fallback его не восстанавливает.
Незавершённая очистка бросает ошибку сервису и запрещает новый start. Native audio stop
вызывается после подтверждения этих операций, его отказ также допускает повтор.