diff options
| author | Chien-Yu Chen <cychen@google.com> | 2015-06-30 11:20:58 -0700 | 
|---|---|---|
| committer | Chien-Yu Chen <cychen@google.com> | 2015-06-30 11:20:58 -0700 | 
| commit | ab5135b254c6f9aaac8edb816596f8823dbdb3d5 (patch) | |
| tree | 493cfbff9b52250cea24491a330afc131e8d5dc6 /services/camera | |
| parent | 29b7cec9a248828d2371bc8758d819308d0e84a4 (diff) | |
| download | frameworks_av-ab5135b254c6f9aaac8edb816596f8823dbdb3d5.zip frameworks_av-ab5135b254c6f9aaac8edb816596f8823dbdb3d5.tar.gz frameworks_av-ab5135b254c6f9aaac8edb816596f8823dbdb3d5.tar.bz2  | |
Camera3-Device: Fix AE lock available
Pass whether AE lock is available when creating the request thread
because when the request thread was created, its parent's info
was not set yet.
Bug: 20494782
Change-Id: I11ed3f99c473955c437e81f3e1d704c15a9ca1a4
Diffstat (limited to 'services/camera')
| -rw-r--r-- | services/camera/libcameraservice/device3/Camera3Device.cpp | 29 | ||||
| -rw-r--r-- | services/camera/libcameraservice/device3/Camera3Device.h | 3 | 
2 files changed, 16 insertions, 16 deletions
diff --git a/services/camera/libcameraservice/device3/Camera3Device.cpp b/services/camera/libcameraservice/device3/Camera3Device.cpp index 4b55dad..9e73b5c 100644 --- a/services/camera/libcameraservice/device3/Camera3Device.cpp +++ b/services/camera/libcameraservice/device3/Camera3Device.cpp @@ -164,9 +164,17 @@ status_t Camera3Device::initialize(CameraModule *module)          return res;      } -    /** Start up request queue thread */ +    bool aeLockAvailable = false; +    camera_metadata_ro_entry aeLockAvailableEntry; +    res = find_camera_metadata_ro_entry(info.static_camera_characteristics, +            ANDROID_CONTROL_AE_LOCK_AVAILABLE, &aeLockAvailableEntry); +    if (res == OK && aeLockAvailableEntry.count > 0) { +        aeLockAvailable = (aeLockAvailableEntry.data.u8[0] == +                ANDROID_CONTROL_AE_LOCK_AVAILABLE_TRUE); +    } -    mRequestThread = new RequestThread(this, mStatusTracker, device); +    /** Start up request queue thread */ +    mRequestThread = new RequestThread(this, mStatusTracker, device, aeLockAvailable);      res = mRequestThread->run(String8::format("C3Dev-%d-ReqQueue", mId).string());      if (res != OK) {          SET_ERR_L("Unable to start request queue thread: %s (%d)", @@ -2472,7 +2480,8 @@ CameraMetadata Camera3Device::getLatestRequestLocked() {  Camera3Device::RequestThread::RequestThread(wp<Camera3Device> parent,          sp<StatusTracker> statusTracker, -        camera3_device_t *hal3Device) : +        camera3_device_t *hal3Device, +        bool aeLockAvailable) :          Thread(/*canCallJava*/false),          mParent(parent),          mStatusTracker(statusTracker), @@ -2485,19 +2494,9 @@ Camera3Device::RequestThread::RequestThread(wp<Camera3Device> parent,          mLatestRequestId(NAME_NOT_FOUND),          mCurrentAfTriggerId(0),          mCurrentPreCaptureTriggerId(0), -        mRepeatingLastFrameNumber(NO_IN_FLIGHT_REPEATING_FRAMES) { +        mRepeatingLastFrameNumber(NO_IN_FLIGHT_REPEATING_FRAMES), +        mAeLockAvailable(aeLockAvailable) {      mStatusId = statusTracker->addComponent(); - -    mAeLockAvailable = false; -    sp<Camera3Device> p = parent.promote(); -    if (p != NULL) { -        camera_metadata_ro_entry aeLockAvailable = -                p->info().find(ANDROID_CONTROL_AE_LOCK_AVAILABLE); -        if (aeLockAvailable.count > 0) { -            mAeLockAvailable = (aeLockAvailable.data.u8[0] == -                    ANDROID_CONTROL_AE_LOCK_AVAILABLE_TRUE); -        } -    }  }  void Camera3Device::RequestThread::setNotificationListener( diff --git a/services/camera/libcameraservice/device3/Camera3Device.h b/services/camera/libcameraservice/device3/Camera3Device.h index bb4bcc4..31b6132 100644 --- a/services/camera/libcameraservice/device3/Camera3Device.h +++ b/services/camera/libcameraservice/device3/Camera3Device.h @@ -389,7 +389,8 @@ class Camera3Device :          RequestThread(wp<Camera3Device> parent,                  sp<camera3::StatusTracker> statusTracker, -                camera3_device_t *hal3Device); +                camera3_device_t *hal3Device, +                bool aeLockAvailable);          void     setNotificationListener(NotificationListener *listener);  | 
