libcamera2ndk_vendor: Don't retrieve value from failed HIDL calls.

Bug: 134424054

Test: AImageReaderVendorTest; use libcamera2ndk_vendor client on device.

Change-Id: Id6ebfc7c37af8d814a1bedfffdde14a8397591a5
Signed-off-by: Jayant Chowdhary <jchowdhary@google.com>
gugelfrei
Jayant Chowdhary 5 years ago
parent 46238cd039
commit 0da67bb0e7

@ -31,6 +31,17 @@
#include "ACameraCaptureSession.inc"
#define CHECK_TRANSACTION_AND_RET(remoteRet, status, callName) \
if (!remoteRet.isOk()) { \
ALOGE("%s: Transaction error during %s call %s", __FUNCTION__, callName, \
remoteRet.description().c_str()); \
return ACAMERA_ERROR_UNKNOWN; \
} \
if (status != Status::NO_ERROR) { \
ALOGE("%s: %s call failed", __FUNCTION__, callName); \
return utils::convertFromHidl(status); \
}
using namespace android;
namespace android {
@ -151,7 +162,7 @@ CameraDevice::createCaptureRequest(
return ACAMERA_ERROR_CAMERA_DISCONNECTED;
}
CameraMetadata rawRequest;
Status status = Status::NO_ERROR;
Status status = Status::UNKNOWN_ERROR;
auto remoteRet = mRemote->createDefaultRequest(
utils::convertToHidl(templateId),
[&status, &rawRequest](auto s, const hidl_vec<uint8_t> &metadata) {
@ -161,14 +172,7 @@ CameraDevice::createCaptureRequest(
ALOGE("%s: Couldn't create default request", __FUNCTION__);
}
});
if (!remoteRet.isOk()) {
ALOGE("%s: Transaction error while trying to create default request %s", __FUNCTION__,
remoteRet.description().c_str());
return ACAMERA_ERROR_UNKNOWN;
}
if (status != Status::NO_ERROR) {
return utils::convertFromHidl(status);
}
CHECK_TRANSACTION_AND_RET(remoteRet, status, "createDefaultRequest()")
ACaptureRequest* outReq = new ACaptureRequest();
outReq->settings = new ACameraMetadata(rawRequest.release(), ACameraMetadata::ACM_REQUEST);
if (physicalCameraIdList != nullptr) {
@ -243,20 +247,15 @@ camera_status_t CameraDevice::isSessionConfigurationSupported(
}
bool configSupported = false;
Status status = Status::NO_ERROR;
Status status = Status::UNKNOWN_ERROR;
auto remoteRet = mRemote->isSessionConfigurationSupported(sessionConfig,
[&status, &configSupported](auto s, auto supported) {
status = s;
configSupported = supported;
});
if (status == Status::INVALID_OPERATION) {
return ACAMERA_ERROR_UNSUPPORTED_OPERATION;
} else if (!remoteRet.isOk()) {
return ACAMERA_ERROR_UNKNOWN;
} else {
return configSupported ? ACAMERA_OK : ACAMERA_ERROR_STREAM_CONFIGURE_FAIL;
}
CHECK_TRANSACTION_AND_RET(remoteRet, status, "isSessionConfigurationSupported()");
return configSupported ? ACAMERA_OK : ACAMERA_ERROR_STREAM_CONFIGURE_FAIL;
}
static void addMetadataToPhysicalCameraSettings(const CameraMetadata *metadata,
@ -525,16 +524,13 @@ CameraDevice::stopRepeatingLocked() {
mRepeatingSequenceId = REQUEST_ID_NONE;
int64_t lastFrameNumber;
Status status = Status::NO_ERROR;
Status status = Status::UNKNOWN_ERROR;
auto remoteRet = mRemote->cancelRepeatingRequest(
[&status, &lastFrameNumber](Status s, auto frameNumber) {
status = s;
lastFrameNumber = frameNumber;
});
if (!remoteRet.isOk() || status != Status::NO_ERROR) {
ALOGE("%s: Unable to cancel active repeating request", __FUNCTION__);
return utils::convertFromHidl(status);
}
CHECK_TRANSACTION_AND_RET(remoteRet, status, "cancelRepeatingRequest()");
checkRepeatingSequenceCompleteLocked(repeatingSequenceId, lastFrameNumber);
}
return ACAMERA_OK;
@ -582,15 +578,12 @@ CameraDevice::flushLocked(ACameraCaptureSession* session) {
}
int64_t lastFrameNumber;
Status status;
Status status = Status::UNKNOWN_ERROR;
auto remoteRet = mRemote->flush([&status, &lastFrameNumber](auto s, auto frameNumber) {
status = s;
lastFrameNumber = frameNumber;
});
if (!remoteRet.isOk() || status != Status::NO_ERROR) {
ALOGE("%s: Abort captures failed", __FUNCTION__);
return utils::convertFromHidl(status);
}
CHECK_TRANSACTION_AND_RET(remoteRet, status, "flush()")
if (mRepeatingSequenceId != REQUEST_ID_NONE) {
checkRepeatingSequenceCompleteLocked(mRepeatingSequenceId, lastFrameNumber);
}
@ -611,10 +604,7 @@ CameraDevice::waitUntilIdleLocked() {
}
auto remoteRet = mRemote->waitUntilIdle();
if (!remoteRet.isOk()) {
ALOGE("%s: Transaction waitUntilIdle failed", __FUNCTION__);
return utils::convertFromHidl(remoteRet);
}
CHECK_TRANSACTION_AND_RET(remoteRet, remoteRet, "waitUntilIdle()")
return ACAMERA_OK;
}
@ -689,34 +679,25 @@ CameraDevice::configureStreamsLocked(const ACaptureSessionOutputContainer* outpu
mIdle = true;
auto remoteRet = mRemote->beginConfigure();
if (!remoteRet.isOk()|| remoteRet != Status::NO_ERROR) {
ALOGE("Camera device %s begin configure failed", getId());
return utils::convertFromHidl(remoteRet);
}
CHECK_TRANSACTION_AND_RET(remoteRet, remoteRet, "beginConfigure()")
// delete to-be-deleted streams
for (auto streamId : deleteList) {
remoteRet = mRemote->deleteStream(streamId);
if (!remoteRet.isOk() || remoteRet != Status::NO_ERROR) {
ALOGE("Camera device %s failed to remove stream %d", getId(), streamId);
return utils::convertFromHidl(remoteRet);
}
CHECK_TRANSACTION_AND_RET(remoteRet, remoteRet, "deleteStream()")
mConfiguredOutputs.erase(streamId);
}
// add new streams
for (auto outputPair : addSet) {
int streamId;
Status status;
Status status = Status::UNKNOWN_ERROR;
auto ret = mRemote->createStream(outputPair.second,
[&status, &streamId](Status s, auto stream_id) {
status = s;
streamId = stream_id;
});
if (!remoteRet.isOk() || status != Status::NO_ERROR) {
ALOGE("Camera device %s failed to create stream", getId());
return utils::convertFromHidl(status);
}
CHECK_TRANSACTION_AND_RET(ret, status, "createStream()")
mConfiguredOutputs.insert(std::make_pair(streamId, outputPair));
}
@ -729,11 +710,8 @@ CameraDevice::configureStreamsLocked(const ACaptureSessionOutputContainer* outpu
params.unlock(params_metadata);
}
remoteRet = mRemote->endConfigure(StreamConfigurationMode::NORMAL_MODE, hidlParams);
if (!remoteRet.isOk()) {
ALOGE("Transaction error: endConfigure failed %s", remoteRet.description().c_str());
}
return utils::convertFromHidl(remoteRet);
CHECK_TRANSACTION_AND_RET(remoteRet, remoteRet, "endConfigure()")
return ACAMERA_OK;
}
void

Loading…
Cancel
Save