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

Commit bbd96e99 authored by Yin-Chia Yeh's avatar Yin-Chia Yeh Committed by Android (Google) Code Review
Browse files

Merge "Camera: remove stream_configuration_counter from camera3.h"

parents ca63bed6 9e3079b0
Loading
Loading
Loading
Loading
+3 −1
Original line number Diff line number Diff line
@@ -128,7 +128,9 @@ void CameraDeviceSession::configureStreams_3_4_Impl(
    }

    camera3_stream_configuration_t stream_list{};
    stream_list.stream_configuration_counter = streamConfigCounter;
    // Block reading mStreamConfigCounter until configureStream returns
    Mutex::Autolock _sccl(mStreamConfigCounterLock);
    mStreamConfigCounter = streamConfigCounter;
    hidl_vec<camera3_stream_t*> streams;
    stream_list.session_parameters = paramBuffer;
    if (!preProcessConfigurationLocked_3_4(requestedConfiguration, &stream_list, &streams)) {
+4 −0
Original line number Diff line number Diff line
@@ -123,6 +123,10 @@ protected:
    // Physical camera ids for the logical multi-camera. Empty if this
    // is not a logical multi-camera.
    std::unordered_set<std::string> mPhysicalCameraIds;

    Mutex    mStreamConfigCounterLock;
    uint32_t mStreamConfigCounter = 1;

private:

    struct TrampolineSessionInterface_3_4 : public ICameraDeviceSession {
+18 −4
Original line number Diff line number Diff line
@@ -72,6 +72,22 @@ Return<void> CameraDeviceSession::configureStreams_3_5(

Return<void> CameraDeviceSession::signalStreamFlush(
        const hidl_vec<int32_t>& streamIds, uint32_t streamConfigCounter) {
    if (mDevice->ops->signal_stream_flush == nullptr) {
        return Void();
    }

    uint32_t currentCounter = 0;
    {
        Mutex::Autolock _l(mStreamConfigCounterLock);
        currentCounter = mStreamConfigCounter;
    }

    if (streamConfigCounter < currentCounter) {
        ALOGV("%s: streamConfigCounter %d is stale (current %d), skipping signal_stream_flush call",
                __FUNCTION__, streamConfigCounter, mStreamConfigCounter);
        return Void();
    }

    std::vector<camera3_stream_t*> streams(streamIds.size());
    {
        Mutex::Autolock _l(mInflightLock);
@@ -84,10 +100,8 @@ Return<void> CameraDeviceSession::signalStreamFlush(
            streams[i] = &mStreamMap[id];
        }
    }
    if (mDevice->ops->signal_stream_flush != nullptr) {
        mDevice->ops->signal_stream_flush(mDevice,
                streamConfigCounter, streams.size(), streams.data());
    }

    mDevice->ops->signal_stream_flush(mDevice, streams.size(), streams.data());
    return Void();
}