From f824b080412b78ec6bf4279d3f7b81c4b1656d4f Mon Sep 17 00:00:00 2001 From: Songwen Liao Date: Sat, 6 Nov 2021 15:39:15 +0800 Subject: [PATCH] Fix filter close Executor leakage issue Bug: b/213021173 Tests: DTV Channel Change * 2.5hr PASS Change-Id: Id9c64fa9712acda1d2947b82d7c69b098fb7016d --- .../java/android/media/tv/tuner/filter/Filter.java | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/media/java/android/media/tv/tuner/filter/Filter.java b/media/java/android/media/tv/tuner/filter/Filter.java index f9fc17fdb4728..45c2a5a90c70a 100644 --- a/media/java/android/media/tv/tuner/filter/Filter.java +++ b/media/java/android/media/tv/tuner/filter/Filter.java @@ -283,9 +283,21 @@ public class Filter implements AutoCloseable { synchronized (mCallbackLock) { if (mCallback != null) { mCallback.onFilterEvent(this, events); + } else { + for (FilterEvent event : events) { + if (event instanceof MediaEvent) { + ((MediaEvent)event).release(); + } + } } } }); + } else { + for (FilterEvent event : events) { + if (event instanceof MediaEvent) { + ((MediaEvent)event).release(); + } + } } } } @@ -558,6 +570,8 @@ public class Filter implements AutoCloseable { if (res != Tuner.RESULT_SUCCESS) { TunerUtils.throwExceptionForResult(res, "Failed to close filter."); } else { + mCallback = null; + mExecutor = null; mIsStarted = false; mIsClosed = true; }