author | sky.zhou <sky.zhou@droid04.amlogic.com> | 2011-12-20 10:19:17 (GMT) |
---|---|---|
committer | sky.zhou <sky.zhou@droid04.amlogic.com> | 2011-12-20 10:19:17 (GMT) |
commit | 2cbe385efa8b475d0073a805c00153258766191f (patch) | |
tree | 60db4d74de2186c2fb4b4b95def7e4131a76bc6f | |
parent | b5ac0e30c42db372ff7b3d780f1cd2dac73534f8 (diff) | |
download | camera-2cbe385efa8b475d0073a805c00153258766191f.zip camera-2cbe385efa8b475d0073a805c00153258766191f.tar.gz camera-2cbe385efa8b475d0073a805c00153258766191f.tar.bz2 |
fix autofocus callback set the auto focus state but not return to preview state after autofoucs finished
-rwxr-xr-x | BaseCameraAdapter.cpp | 30 | ||||
-rwxr-xr-x[-rw-r--r--] | inc/BaseCameraAdapter.h | 1 |
2 files changed, 22 insertions, 9 deletions
diff --git a/BaseCameraAdapter.cpp b/BaseCameraAdapter.cpp index a6b6546..4303b6e 100755 --- a/BaseCameraAdapter.cpp +++ b/BaseCameraAdapter.cpp @@ -1013,11 +1013,11 @@ status_t BaseCameraAdapter::notifyFocusSubscribers(bool status) focusEvent.mEventData->focusEvent.focusError = !status; for (unsigned int i = 0 ; i < mFocusSubscribers.size(); i++ ) - { - focusEvent.mCookie = (void *) mFocusSubscribers.keyAt(i); - eventCb = (event_callback) mFocusSubscribers.valueAt(i); - eventCb ( &focusEvent ); - } + { + focusEvent.mCookie = (void *) mFocusSubscribers.keyAt(i); + eventCb = (event_callback) mFocusSubscribers.valueAt(i); + eventCb ( &focusEvent ); + } focusEvent.mEventData.clear(); @@ -1510,19 +1510,33 @@ status_t BaseCameraAdapter::stopBracketing() return ret; } +int beginAutoFocusThread(void *cookie) +{ + BaseCameraAdapter *c = (BaseCameraAdapter *)cookie; + //should add wait focus end + c->notifyFocusSubscribers(true); + c->setState(CameraAdapter::CAMERA_CANCEL_AUTOFOCUS); + c->commitState(); + return 1; +} + status_t BaseCameraAdapter::autoFocus() { status_t ret = NO_ERROR; LOG_FUNCTION_NAME; - notifyFocusSubscribers(false); + if (createThread(beginAutoFocusThread, this) == false) + { + ret = UNKNOWN_ERROR; + } LOG_FUNCTION_NAME_EXIT; return ret; } + status_t BaseCameraAdapter::cancelAutoFocus() { status_t ret = NO_ERROR; @@ -1675,10 +1689,8 @@ status_t BaseCameraAdapter::setState(CameraCommands operation) { case INTIALIZED_STATE: - switch ( operation ) - { - + { case CAMERA_USE_BUFFERS_PREVIEW: CAMHAL_LOGDB("Adapter state switch INTIALIZED_STATE->LOADED_PREVIEW_STATE event = 0x%x", operation); diff --git a/inc/BaseCameraAdapter.h b/inc/BaseCameraAdapter.h index d778491..079ea9a 100644..100755 --- a/inc/BaseCameraAdapter.h +++ b/inc/BaseCameraAdapter.h @@ -25,6 +25,7 @@ namespace android { class BaseCameraAdapter : public CameraAdapter { +friend int beginAutoFocusThread(void *cookie); public: |