Refine SharedFilter close() to avoid random crash

Bug: 205763272
Fix: 205763272
Test: atest CtsTvTestCases
Change-Id: Ieee0d07fefa902d832745b040b9144e02fe9ba56
This commit is contained in:
Hongguang
2022-01-25 20:20:30 -08:00
committed by Hongguang Chen
parent 8e5496eb10
commit f3b2a5d5ff
2 changed files with 15 additions and 0 deletions

View File

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

View File

@@ -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 {