Merge "Refine SharedFilter close() to avoid random crash"

This commit is contained in:
TreeHugger Robot
2022-01-26 11:54:52 +00:00
committed by Android (Google) Code Review
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 {