diff options
| author | Ruben Brunk <rubenbrunk@google.com> | 2015-04-15 19:16:11 +0000 | 
|---|---|---|
| committer | Android (Google) Code Review <android-gerrit@google.com> | 2015-04-15 19:16:11 +0000 | 
| commit | d6b01f26a826d10912be4b34bbd2438e97c871e4 (patch) | |
| tree | 550332908e374f17d72f0637cd667c32d6bc3610 /services/camera | |
| parent | c44111b22c26236cb0b32d3fbd1cc9fad3fb28ff (diff) | |
| parent | a485dfec4ad98283b911cf983566b0ce947343b6 (diff) | |
| download | frameworks_av-d6b01f26a826d10912be4b34bbd2438e97c871e4.zip frameworks_av-d6b01f26a826d10912be4b34bbd2438e97c871e4.tar.gz frameworks_av-d6b01f26a826d10912be4b34bbd2438e97c871e4.tar.bz2  | |
Merge "camera: Actually pass device errors to client for Camera2Device."
Diffstat (limited to 'services/camera')
| -rw-r--r-- | services/camera/libcameraservice/api1/Camera2Client.cpp | 34 | ||||
| -rw-r--r-- | services/camera/libcameraservice/api1/Camera2Client.h | 2 | 
2 files changed, 36 insertions, 0 deletions
diff --git a/services/camera/libcameraservice/api1/Camera2Client.cpp b/services/camera/libcameraservice/api1/Camera2Client.cpp index f53f425..05ede92 100644 --- a/services/camera/libcameraservice/api1/Camera2Client.cpp +++ b/services/camera/libcameraservice/api1/Camera2Client.cpp @@ -1710,6 +1710,40 @@ status_t Camera2Client::commandSetVideoBufferCountL(size_t count) {      return mStreamingProcessor->setRecordingBufferCount(count);  } +void Camera2Client::notifyError(ICameraDeviceCallbacks::CameraErrorCode errorCode, +        const CaptureResultExtras& resultExtras) { +    int32_t err = CAMERA_ERROR_UNKNOWN; +    switch(errorCode) { +        case ICameraDeviceCallbacks::ERROR_CAMERA_DISCONNECTED: +            err = CAMERA_ERROR_RELEASED; +            break; +        case ICameraDeviceCallbacks::ERROR_CAMERA_DEVICE: +            err = CAMERA_ERROR_UNKNOWN; +            break; +        case ICameraDeviceCallbacks::ERROR_CAMERA_SERVICE: +            err = CAMERA_ERROR_SERVER_DIED; +            break; +        case ICameraDeviceCallbacks::ERROR_CAMERA_REQUEST: +        case ICameraDeviceCallbacks::ERROR_CAMERA_RESULT: +        case ICameraDeviceCallbacks::ERROR_CAMERA_BUFFER: +            ALOGW("%s: Received recoverable error %d from HAL - ignoring, requestId %" PRId32, +                    __FUNCTION__, errorCode, resultExtras.requestId); +            return; +        default: +            err = CAMERA_ERROR_UNKNOWN; +            break; +    } + +    ALOGE("%s: Error condition %d reported by HAL, requestId %" PRId32, __FUNCTION__, errorCode, +              resultExtras.requestId); + +    SharedCameraCallbacks::Lock l(mSharedCameraCallbacks); +    if (l.mRemoteCallback != nullptr) { +        l.mRemoteCallback->notifyCallback(CAMERA_MSG_ERROR, err, 0); +    } +} + +  /** Device-related methods */  void Camera2Client::notifyAutoFocus(uint8_t newState, int triggerId) {      ALOGV("%s: Autofocus state now %d, last trigger %d", diff --git a/services/camera/libcameraservice/api1/Camera2Client.h b/services/camera/libcameraservice/api1/Camera2Client.h index 5a8241f..a988037 100644 --- a/services/camera/libcameraservice/api1/Camera2Client.h +++ b/services/camera/libcameraservice/api1/Camera2Client.h @@ -77,6 +77,8 @@ public:      virtual status_t        setParameters(const String8& params);      virtual String8         getParameters() const;      virtual status_t        sendCommand(int32_t cmd, int32_t arg1, int32_t arg2); +    virtual void            notifyError(ICameraDeviceCallbacks::CameraErrorCode errorCode, +                                        const CaptureResultExtras& resultExtras);      /**       * Interface used by CameraService  | 
