Camera: Avoid flushing uninitialized devices

Depending on timing a race is possible between two
binder threads that will eventually try to disconnect
the camera device. The first is a regular disconnect call
and the second a binderDied notification in case the
connection terminates before disconnect is able to complete.
Avoid possible instabilities and skip flushing in case the
device is no longer initialized.

Bug: 116514106
Test: Camera CTS
Change-Id: I1a958b2f80d872de89275555e83ac32576cc6792
gugelfrei
Emilian Peev 6 years ago
parent 6976bebc9d
commit ed2ebe4b3d

@ -2014,6 +2014,13 @@ status_t Camera3Device::flush(int64_t *frameNumber) {
{
Mutex::Autolock l(mLock);
// b/116514106 "disconnect()" can get called twice for the same device. The
// camera device will not be initialized during the second run.
if (mStatus == STATUS_UNINITIALIZED) {
return OK;
}
mRequestThread->clear(/*out*/frameNumber);
}

Loading…
Cancel
Save