Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 63770946 authored by Chien-Yu Chen's avatar Chien-Yu Chen Committed by Android (Google) Code Review
Browse files

Merge "CameraModule: fix getCameraInfo()" into mnc-dev

parents a0169a07 944f8430
Loading
Loading
Loading
Loading
+14 −5
Original line number Diff line number Diff line
@@ -154,6 +154,18 @@ CameraModule::CameraModule(camera_module_t *module) {
    mCameraInfoMap.setCapacity(getNumberOfCameras());
}

CameraModule::~CameraModule()
{
    while (mCameraInfoMap.size() > 0) {
        camera_info cameraInfo = mCameraInfoMap.editValueAt(0);
        if (cameraInfo.static_camera_characteristics != NULL) {
            free_camera_metadata(
                    const_cast<camera_metadata_t*>(cameraInfo.static_camera_characteristics));
        }
        mCameraInfoMap.removeItemsAt(0);
    }
}

int CameraModule::init() {
    if (getModuleApiVersion() >= CAMERA_MODULE_API_VERSION_2_4 &&
            mModule->init != NULL) {
@@ -192,12 +204,9 @@ int CameraModule::getCameraInfo(int cameraId, struct camera_info *info) {
        CameraMetadata m;
        m = rawInfo.static_camera_characteristics;
        deriveCameraCharacteristicsKeys(rawInfo.device_version, m);
        mCameraCharacteristicsMap.add(cameraId, m);
        cameraInfo = rawInfo;
        cameraInfo.static_camera_characteristics =
                mCameraCharacteristicsMap.valueFor(cameraId).getAndLock();
        mCameraInfoMap.add(cameraId, cameraInfo);
        index = mCameraInfoMap.indexOfKey(cameraId);
        cameraInfo.static_camera_characteristics = m.release();
        index = mCameraInfoMap.add(cameraId, cameraInfo);
    }

    assert(index != NAME_NOT_FOUND);
+1 −1
Original line number Diff line number Diff line
@@ -33,6 +33,7 @@ namespace android {
class CameraModule {
public:
    CameraModule(camera_module_t *module);
    virtual ~CameraModule();

    // Must be called after construction
    // Returns OK on success, NO_INIT on failure
@@ -60,7 +61,6 @@ private:

    camera_module_t *mModule;
    KeyedVector<int, camera_info> mCameraInfoMap;
    KeyedVector<int, CameraMetadata> mCameraCharacteristicsMap;
    Mutex mCameraInfoLock;
};