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

Commit b4f9d09d authored by Yahan Zhou's avatar Yahan Zhou Committed by android-build-merger
Browse files

Merge "Camera: fix recursive lock in CameraDevice 1.0" into oc-dev am: eed6653f

am: a61c24c0

Change-Id: I3144fd4dd59d909fb503b2accce70719f6c150b2
parents 5e2d6e29 a61c24c0
Loading
Loading
Loading
Loading
+8 −4
Original line number Diff line number Diff line
@@ -116,7 +116,7 @@ CameraDevice::~CameraDevice() {
    Mutex::Autolock _l(mLock);
    if (mDevice != nullptr) {
        ALOGW("%s: camera %s is deleted while open", __FUNCTION__, mCameraId.c_str());
        close();
        closeLocked();
    }
    mHalPreviewWindow.cleanUpCirculatingBuffers();
}
@@ -130,7 +130,7 @@ void CameraDevice::setConnectionStatus(bool connected) {
    }
    if (!connected) {
        ALOGW("%s: camera %s is disconneted. Closing", __FUNCTION__, mCameraId.c_str());
        close();
        closeLocked();
    }
    return;
}
@@ -982,8 +982,13 @@ Return<Status> CameraDevice::sendCommand(CommandType cmd, int32_t arg1, int32_t
}

Return<void> CameraDevice::close() {
    ALOGI("Closing camera %s", mCameraId.c_str());
    Mutex::Autolock _l(mLock);
    closeLocked();
    return Void();
}

void CameraDevice::closeLocked() {
    ALOGI("Closing camera %s", mCameraId.c_str());
    if(mDevice) {
        int rc = mDevice->common.close(&mDevice->common);
        if (rc != OK) {
@@ -991,7 +996,6 @@ Return<void> CameraDevice::close() {
        }
        mDevice = nullptr;
    }
    return Void();
}

}  // namespace implementation
+1 −0
Original line number Diff line number Diff line
@@ -222,6 +222,7 @@ private:
    static status_t getStatusT(const Status& s);

    Status initStatus() const;
    void closeLocked();
};

}  // namespace implementation