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; }