Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit f824b080 authored by Songwen Liao's avatar Songwen Liao Committed by Hongguang
Browse files

Fix filter close Executor leakage issue

Bug: b/213021173
Tests: DTV Channel Change * 2.5hr PASS
Change-Id: Id9c64fa9712acda1d2947b82d7c69b098fb7016d
parent 45dd38db
Loading
Loading
Loading
Loading
+14 −0
Original line number Original line Diff line number Diff line
@@ -283,9 +283,21 @@ public class Filter implements AutoCloseable {
                    synchronized (mCallbackLock) {
                    synchronized (mCallbackLock) {
                        if (mCallback != null) {
                        if (mCallback != null) {
                            mCallback.onFilterEvent(this, events);
                            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) {
            if (res != Tuner.RESULT_SUCCESS) {
                TunerUtils.throwExceptionForResult(res, "Failed to close filter.");
                TunerUtils.throwExceptionForResult(res, "Failed to close filter.");
            } else {
            } else {
                mCallback = null;
                mExecutor = null;
                mIsStarted = false;
                mIsStarted = false;
                mIsClosed = true;
                mIsClosed = true;
            }
            }