Prevent ANR when AudioTrack is paused or re-routed
If ClientProxy was interrupted by AudioTrack::pause() just before futex syscall() in obtainBuffer() was called,
It will not call releaseBuffer to wake up AudioTrackThread.
It puts the AudioTrackThread to sleep and then a deadlock occurs.
In this case, CBLK_INTERRUPT flags can't prevent a deadlock,
so this patch set mFutex to FUTEX_WAKE during interrupt() to avoid deadlock.
A similar problem could occur due to re-route or recovery after mediaserver death.
Bug: 18641665
Change-Id: I66fcae43af9a91eb55f6cdb52c644ee6c0999772
1 file changed