Merge "Refine SharedFilter close() to avoid random crash"
This commit is contained in:
committed by
Android (Google) Code Review
commit
8ba7b768de
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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 {
|
||||
|
||||
Reference in New Issue
Block a user