Describe preview lease transfer, callback cancellation and physical cleanup retries

This commit is contained in:
evgeny committed 2026-10-29 13:34:24 +01:00
1 parent 0a777baabb
commit 92ce2d84e9
2 files changed
+17

No files matched your search

+5
View File
@@ -531,6 +531,11 @@ Router сохраняет callback/proxy до успешного unregister/clos
отказ post сохраняет владельца для явного stop/start. Поздние Bluetooth proxy после stop
получают тот же контракт освобождения, не меняя новый активный маршрут. До доставки
callback принятый getProfileProxy не даёт router объект, который можно закрыть.
Прямое превью использует отдельные идемпотентные ссылки UI/команды/camera session
на один Surface/texture. Последний release передаёт физическую очистку process-владельцу;
ошибки Surface и texture повторяются независимо без пропуска другой операции.
Предложенная listener ссылка отменяется при исключении, queued receiver игнорирует
released target. Закрытие preview не допускает последующей активации через update.
Общая MediaAudioSession при close блокирует новых потребителей и оставляет executor
до подтверждённой очистки hardware/router; отказ допускает повторный close.
Перед `NativeLib.stop/restart/destroy` проверяется подтверждение очистки сервиса и
+12
View File
@@ -235,6 +235,15 @@ feed/pull workers и маршрутом Android Telecom; DSP и сетевой
Вызовы lifecycle DSP выполняются после остановки его внешних feed/pull callers.
Контракты PCM/PTS: `src/call/call_audio.h`, `src/radio/radio_audio.h`, `jni_bridge/android_jni_bridge.h`.
Прямое превью Camera2 передаёт UI, ожидающей команде и каждой camera session отдельный
`StreamPreviewTarget` на общий Surface/SurfaceTexture. retain создаёт новую ссылку,
release одной ссылки идемпотентен; идентичность источника проверяется через sameSource.
Ошибка listener отменяет предложенную ссылку, queued receiver пропускает released
target. Detach/close продолжают освобождение независимо от ошибки доставки команды;
поздний update не активирует закрытое превью. Последняя ссылка передаёт физическую
очистку process-владельцу: Surface и texture подтверждаются независимо, retry идёт
через 250 мс..30 с. При отказе Handler повторный release завершает её явно.
`CallAudioRouter` сохраняет device callback и каждый полученный Bluetooth proxy до
успешного unregister/close. stop инвалидирует callbacks и снимки устройств сразу,
очищает независимые ресурсы и бросает ошибку при неподтверждённом результате.
@@ -660,6 +669,9 @@ Android hardware и DSP моделируются; AAudio/OEM поведение
configure/start/stop/release, Surface callback, playout destroy, join и retry Handler.
Проверяются независимое освобождение, запрет release Surface до codec, старый detach,
ACK показа/PTS и EOS drain без смены Surface. OEM/реальное декодирование остаются вне модели.
StreamPreviewLifecycleTest проверяет реальные preview/leases: потерю/частичный эффект
callback, отменённые команды, независимые и конкурентные владельцы, физические
отказы release до/после эффекта, retry Handler, detach/visibility и поздние update.
RadioCallLifecycleTest использует настоящие RadioCallController, IncomingCallManager,
CoreActivity и гудки. Управляемые Android/JNI/repository-границы проверяют все
команды сигналинга, pending START, валидацию событий/полной identity, активацию,