diff options
author | Daniel Levin <dendy@ti.com> | 2012-07-25 16:21:42 -0500 |
---|---|---|
committer | Daniel Levin <dendy@ti.com> | 2012-07-25 16:21:42 -0500 |
commit | 39d50eecaa890262e491ad27cceda3f7e67deaed (patch) | |
tree | 870c4b69ddfd6e2ede4cf6e0e6fbd9d651a74ebc | |
parent | 5853dcae469721a87220cc72c34104e839f880c7 (diff) | |
parent | 1ec22866752ed94071f2d8ed2ca2a4bd724bd36c (diff) | |
download | hardware_ti_omap4-39d50eecaa890262e491ad27cceda3f7e67deaed.zip hardware_ti_omap4-39d50eecaa890262e491ad27cceda3f7e67deaed.tar.gz hardware_ti_omap4-39d50eecaa890262e491ad27cceda3f7e67deaed.tar.bz2 |
Merge "CameraHal: Implementation for CAF status callbacks" into jb-migration
Change-Id: Ib1a12a16fd0fb2457c2ff9793b3628dbae31c992
Signed-off-by: Daniel Levin <dendy@ti.com>
-rw-r--r-- | camera/AppCallbackNotifier.cpp | 44 | ||||
-rw-r--r-- | camera/CameraHal.cpp | 23 | ||||
-rw-r--r-- | camera/OMXCameraAdapter/OMXCameraAdapter.cpp | 1 | ||||
-rw-r--r-- | hwc/hwc.c | 9 | ||||
-rw-r--r-- | libstagefrighthw/TIOMXPlugin.cpp | 2 |
5 files changed, 53 insertions, 26 deletions
diff --git a/camera/AppCallbackNotifier.cpp b/camera/AppCallbackNotifier.cpp index 8829b65..44d6a39 100644 --- a/camera/AppCallbackNotifier.cpp +++ b/camera/AppCallbackNotifier.cpp @@ -367,20 +367,38 @@ void AppCallbackNotifier::notifyEvent() case CameraHalEvent::EVENT_FOCUS_LOCKED: case CameraHalEvent::EVENT_FOCUS_ERROR: + if ( mCameraHal && mNotifyCb ) { + focusEvtData = &evt->mEventData->focusEvent; + + switch ( focusEvtData->focusStatus ) { + case CameraHalEvent::FOCUS_STATUS_SUCCESS: + if ( mCameraHal->msgTypeEnabled(CAMERA_MSG_FOCUS) ) { + mCameraHal->disableMsgType(CAMERA_MSG_FOCUS); + mNotifyCb(CAMERA_MSG_FOCUS, true, 0, mCallbackCookie); + } + break; - focusEvtData = &evt->mEventData->focusEvent; - if ( ( focusEvtData->focusStatus == CameraHalEvent::FOCUS_STATUS_SUCCESS ) && - ( NULL != mCameraHal ) && - ( NULL != mNotifyCb ) && - ( mCameraHal->msgTypeEnabled(CAMERA_MSG_FOCUS) ) ) { - mCameraHal->disableMsgType(CAMERA_MSG_FOCUS); - mNotifyCb(CAMERA_MSG_FOCUS, true, 0, mCallbackCookie); - } else if ( ( focusEvtData->focusStatus == CameraHalEvent::FOCUS_STATUS_FAIL ) && - ( NULL != mCameraHal ) && - ( NULL != mNotifyCb ) && - ( mCameraHal->msgTypeEnabled(CAMERA_MSG_FOCUS) ) ) { - mCameraHal->disableMsgType(CAMERA_MSG_FOCUS); - mNotifyCb(CAMERA_MSG_FOCUS, false, 0, mCallbackCookie); + case CameraHalEvent::FOCUS_STATUS_FAIL: + if ( mCameraHal->msgTypeEnabled(CAMERA_MSG_FOCUS) ) { + mCameraHal->disableMsgType(CAMERA_MSG_FOCUS); + mNotifyCb(CAMERA_MSG_FOCUS, false, 0, mCallbackCookie); + } + break; + +#ifdef ANDROID_API_JB_OR_LATER + case CameraHalEvent::FOCUS_STATUS_PENDING: + if ( mCameraHal->msgTypeEnabled(CAMERA_MSG_FOCUS_MOVE) ) { + mNotifyCb(CAMERA_MSG_FOCUS_MOVE, true, 0, mCallbackCookie); + } + break; + + case CameraHalEvent::FOCUS_STATUS_DONE: + if ( mCameraHal->msgTypeEnabled(CAMERA_MSG_FOCUS_MOVE) ) { + mNotifyCb(CAMERA_MSG_FOCUS_MOVE, false, 0, mCallbackCookie); + } + break; +#endif + } } break; diff --git a/camera/CameraHal.cpp b/camera/CameraHal.cpp index 7ece1a6..9be99c5 100644 --- a/camera/CameraHal.cpp +++ b/camera/CameraHal.cpp @@ -3303,14 +3303,27 @@ status_t CameraHal::sendCommand(int32_t cmd, int32_t arg1, int32_t arg2) return -EINVAL; } + /////////////////////////////////////////////////////// + // Following commands do NOT need preview to be started + /////////////////////////////////////////////////////// + + switch ( cmd ) { #ifdef ANDROID_API_JB_OR_LATER - switch (cmd) { case CAMERA_CMD_ENABLE_FOCUS_MOVE_MSG: - return OK; + { + const bool enable = static_cast<bool>(arg1); + android::AutoMutex lock(mLock); + if ( enable ) { + mMsgEnabled |= CAMERA_MSG_FOCUS_MOVE; + } else { + mMsgEnabled &= ~CAMERA_MSG_FOCUS_MOVE; + } } + return OK; #endif + } - if ( ( NO_ERROR == ret ) && ( !previewEnabled() ) + if ( ret == OK && !previewEnabled() #ifdef OMAP_ENHANCEMENT_VTC && (cmd != CAMERA_CMD_PREVIEW_INITIALIZATION) #endif @@ -3319,6 +3332,10 @@ status_t CameraHal::sendCommand(int32_t cmd, int32_t arg1, int32_t arg2) ret = -EINVAL; } + /////////////////////////////////////////////////////// + // Following commands NEED preview to be started + /////////////////////////////////////////////////////// + if ( NO_ERROR == ret ) { switch(cmd) diff --git a/camera/OMXCameraAdapter/OMXCameraAdapter.cpp b/camera/OMXCameraAdapter/OMXCameraAdapter.cpp index ec3cb9f..2b7ef30 100644 --- a/camera/OMXCameraAdapter/OMXCameraAdapter.cpp +++ b/camera/OMXCameraAdapter/OMXCameraAdapter.cpp @@ -3120,6 +3120,7 @@ OMX_ERRORTYPE OMXCameraAdapter::SignalEvent(OMX_IN OMX_HANDLETYPE hComponent, //Signal the semaphore provided sem->Signal(); free(msg); + eventSignalled = true; break; } } @@ -1459,15 +1459,6 @@ static int omap4_hwc_set(struct hwc_composer_device *dev, hwc_display_t dpy, hwc_dev->buffers, hwc_dev->post2_layers, dsscomp, sizeof(*dsscomp)); - - if (!hwc_dev->use_sgx) { - __u32 crt = 0; - int err2 = ioctl(hwc_dev->fb_fd, FBIO_WAITFORVSYNC, &crt); - if (err2) { - ALOGE("failed to wait for vsync (%d)", errno); - err = err ? : -errno; - } - } } hwc_dev->last_ext_ovls = hwc_dev->ext_ovls; hwc_dev->last_int_ovls = hwc_dev->post2_layers; diff --git a/libstagefrighthw/TIOMXPlugin.cpp b/libstagefrighthw/TIOMXPlugin.cpp index de764c6..cff5e90 100644 --- a/libstagefrighthw/TIOMXPlugin.cpp +++ b/libstagefrighthw/TIOMXPlugin.cpp @@ -43,7 +43,7 @@ TIOMXPlugin::TIOMXPlugin() mGetRolesOfComponentHandle(NULL) { if (mLibHandle != NULL) { mInit = (InitFunc)dlsym(mLibHandle, "TIOMX_Init"); - mDeinit = (DeinitFunc)dlsym(mLibHandle, "TIOMX_DeInit"); + mDeinit = (DeinitFunc)dlsym(mLibHandle, "TIOMX_Deinit"); mComponentNameEnum = (ComponentNameEnumFunc)dlsym(mLibHandle, "TIOMX_ComponentNameEnum"); |