Move close callback outside ProgramList lock

The callback of on-close listener in program list was moved outside
of the lock in porgram list to avoid the deadlock between
program list and tuner adpater.

Bug: 254505565
Test: atest RadioTunerTest
Change-Id: I9c668c63a578ba04b52747e0ef96e9e67cc00b72
Merged-In: I9c668c63a578ba04b52747e0ef96e9e67cc00b72
(cherry picked from commit 1fcf05bbfc)
This commit is contained in:
Weilin Xu
2022-10-19 20:04:43 +00:00
parent e3d56e6994
commit bbcceab706

View File

@@ -160,6 +160,7 @@ public final class ProgramList implements AutoCloseable {
* Disables list updates and releases all resources.
*/
public void close() {
OnCloseListener onCompleteListenersCopied = null;
synchronized (mLock) {
if (mIsClosed) return;
mIsClosed = true;
@@ -167,10 +168,14 @@ public final class ProgramList implements AutoCloseable {
mListCallbacks.clear();
mOnCompleteListeners.clear();
if (mOnCloseListener != null) {
mOnCloseListener.onClose();
onCompleteListenersCopied = mOnCloseListener;
mOnCloseListener = null;
}
}
if (onCompleteListenersCopied != null) {
onCompleteListenersCopied.onClose();
}
}
void apply(Chunk chunk) {