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

Commit f3b2a5d5 authored by Hongguang's avatar Hongguang Committed by Hongguang Chen
Browse files

Refine SharedFilter close() to avoid random crash

Bug: 205763272
Fix: 205763272
Test: atest CtsTvTestCases
Change-Id: Ieee0d07fefa902d832745b040b9144e02fe9ba56
parent 8e5496eb
Loading
Loading
Loading
Loading
+14 −0
Original line number Diff line number Diff line
@@ -92,9 +92,21 @@ public final class SharedFilter 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();
                    }
                }
            }
        }
    }
@@ -187,6 +199,8 @@ public final class SharedFilter implements AutoCloseable {
            if (mIsClosed) {
                return;
            }
            mCallback = null;
            mExecutor = null;
            nativeSharedClose();
            mIsClosed = true;
         }
+1 −0
Original line number Diff line number Diff line
@@ -4147,6 +4147,7 @@ static jint android_media_tv_Tuner_close_filter(JNIEnv *env, jobject filter) {

    Result r = filterClient->close();
    filterClient->decStrong(filter);
    filterClient = nullptr;
    if (shared) {
        env->SetLongField(filter, gFields.sharedFilterContext, 0);
    } else {