From 2eebb7dd3fe0d95010df4069a64eb8abcb6f217d Mon Sep 17 00:00:00 2001 From: Hongguang Date: Mon, 7 Feb 2022 18:35:49 -0800 Subject: [PATCH] Release locks when closing. Bug: 218228680 Fix: 218228680 Test: atest android.media.tv.tuner.cts 20 times Change-Id: I31d6c65d9fb7e512d6dfbc7080214a9a766b38fa --- .../media/tv/tuner/filter/SharedFilter.java | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/media/java/android/media/tv/tuner/filter/SharedFilter.java b/media/java/android/media/tv/tuner/filter/SharedFilter.java index 21964ee5a32a8..38afaae9df7a3 100644 --- a/media/java/android/media/tv/tuner/filter/SharedFilter.java +++ b/media/java/android/media/tv/tuner/filter/SharedFilter.java @@ -52,10 +52,10 @@ public final class SharedFilter implements AutoCloseable { private long mNativeContext; private SharedFilterCallback mCallback; private Executor mExecutor; - private final Object mCallbackLock = new Object(); + private Object mCallbackLock = null; private boolean mIsClosed = false; private boolean mIsAccessible = true; - private final Object mLock = new Object(); + private Object mLock = null; private native int nativeStartSharedFilter(); private native int nativeStopSharedFilter(); @@ -64,7 +64,10 @@ public final class SharedFilter implements AutoCloseable { private native int nativeSharedClose(); // Called by JNI - private SharedFilter() {} + private SharedFilter() { + mCallbackLock = new Object(); + mLock = new Object(); + } private void onFilterStatus(int status) { synchronized (mLock) { @@ -199,10 +202,13 @@ public final class SharedFilter implements AutoCloseable { if (mIsClosed) { return; } - mCallback = null; - mExecutor = null; + synchronized (mCallbackLock) { + mCallback = null; + mExecutor = null; + } nativeSharedClose(); mIsClosed = true; + mCallbackLock = null; } } }