summaryrefslogtreecommitdiff
authorsky.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)
commit2cbe385efa8b475d0073a805c00153258766191f (patch)
tree60db4d74de2186c2fb4b4b95def7e4131a76bc6f
parentb5ac0e30c42db372ff7b3d780f1cd2dac73534f8 (diff)
downloadcamera-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
Diffstat
-rwxr-xr-xBaseCameraAdapter.cpp30
-rwxr-xr-x[-rw-r--r--]inc/BaseCameraAdapter.h1
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: