b3687ae925
The problem comes from the fact that when the duplicated output is closed after BT headset disconnection, the OUTPUT_CLOSED notification is not sent to AudioSystem. Then the mapping between notification stream and duplicated output cached in AudioSystem is not cleared and next time a notification is played, the duplicated output is selected and the createTrack() request is refused by AudioFlinger as the selected output doesn't exist. The notification is ignored by AudioFlinger because when it is sent by the terminating playback thread, the thread has already been removed from the playback thread list. The fix consists in sending the notification in closeOutput() and not when exiting the playback thread. The same fix is applied to record threads. |
||
---|---|---|
.. | ||
A2dpAudioInterface.cpp | ||
A2dpAudioInterface.h | ||
Android.mk | ||
AudioBufferProvider.h | ||
AudioDumpInterface.cpp | ||
AudioDumpInterface.h | ||
AudioFlinger.cpp | ||
AudioFlinger.h | ||
AudioHardwareGeneric.cpp | ||
AudioHardwareGeneric.h | ||
AudioHardwareInterface.cpp | ||
AudioHardwareStub.cpp | ||
AudioHardwareStub.h | ||
AudioMixer.cpp | ||
AudioMixer.h | ||
AudioPolicyManagerGeneric.cpp | ||
AudioPolicyManagerGeneric.h | ||
AudioPolicyService.cpp | ||
AudioPolicyService.h | ||
AudioResampler.cpp | ||
AudioResampler.h | ||
AudioResamplerCubic.cpp | ||
AudioResamplerCubic.h | ||
AudioResamplerSinc.cpp | ||
AudioResamplerSinc.h |