|
|
|
@ -2173,8 +2173,14 @@ status_t Camera3Device::setConsumerSurfaces(int streamId,
|
|
|
|
|
|
|
|
|
|
res = stream->finishConfiguration();
|
|
|
|
|
if (res != OK) {
|
|
|
|
|
SET_ERR_L("Can't finish configuring output stream %d: %s (%d)",
|
|
|
|
|
stream->getId(), strerror(-res), res);
|
|
|
|
|
// If finishConfiguration fails due to abandoned surface, do not set
|
|
|
|
|
// device to error state.
|
|
|
|
|
bool isSurfaceAbandoned =
|
|
|
|
|
(res == NO_INIT || res == DEAD_OBJECT) && stream->isAbandoned();
|
|
|
|
|
if (!isSurfaceAbandoned) {
|
|
|
|
|
SET_ERR_L("Can't finish configuring output stream %d: %s (%d)",
|
|
|
|
|
stream->getId(), strerror(-res), res);
|
|
|
|
|
}
|
|
|
|
|
return res;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
@ -2391,9 +2397,16 @@ bool Camera3Device::reconfigureCamera(const CameraMetadata& sessionParams) {
|
|
|
|
|
//present streams end up with outstanding buffers that will
|
|
|
|
|
//not get drained.
|
|
|
|
|
internalUpdateStatusLocked(STATUS_ACTIVE);
|
|
|
|
|
} else if (rc == DEAD_OBJECT) {
|
|
|
|
|
// DEAD_OBJECT can be returned if either the consumer surface is
|
|
|
|
|
// abandoned, or the HAL has died.
|
|
|
|
|
// - If the HAL has died, configureStreamsLocked call will set
|
|
|
|
|
// device to error state,
|
|
|
|
|
// - If surface is abandoned, we should not set device to error
|
|
|
|
|
// state.
|
|
|
|
|
ALOGE("Failed to re-configure camera due to abandoned surface");
|
|
|
|
|
} else {
|
|
|
|
|
setErrorStateLocked("%s: Failed to re-configure camera: %d",
|
|
|
|
|
__FUNCTION__, rc);
|
|
|
|
|
SET_ERR_L("Failed to re-configure camera: %d", rc);
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
ALOGE("%s: Failed to pause streaming: %d", __FUNCTION__, rc);
|
|
|
|
@ -2527,6 +2540,9 @@ status_t Camera3Device::configureStreamsLocked(int operatingMode,
|
|
|
|
|
CLOGE("Can't finish configuring input stream %d: %s (%d)",
|
|
|
|
|
mInputStream->getId(), strerror(-res), res);
|
|
|
|
|
cancelStreamsConfigurationLocked();
|
|
|
|
|
if ((res == NO_INIT || res == DEAD_OBJECT) && mInputStream->isAbandoned()) {
|
|
|
|
|
return DEAD_OBJECT;
|
|
|
|
|
}
|
|
|
|
|
return BAD_VALUE;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
@ -2540,6 +2556,9 @@ status_t Camera3Device::configureStreamsLocked(int operatingMode,
|
|
|
|
|
CLOGE("Can't finish configuring output stream %d: %s (%d)",
|
|
|
|
|
outputStream->getId(), strerror(-res), res);
|
|
|
|
|
cancelStreamsConfigurationLocked();
|
|
|
|
|
if ((res == NO_INIT || res == DEAD_OBJECT) && outputStream->isAbandoned()) {
|
|
|
|
|
return DEAD_OBJECT;
|
|
|
|
|
}
|
|
|
|
|
return BAD_VALUE;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|