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

Commit f9b4eb9e authored by Shuzhen Wang's avatar Shuzhen Wang
Browse files

Camera: Compare old and new overrides for finishConfigure

With the new dataSpace/format override logic, during
finishConfiguration, we shouldn't check mDataSpaceOverride flag anymore
because now mDataSpaceOverride will be true for reconfigure.

Instead, we should check if the new override is the same as old
override.

Test: testPrepare on HAL device with dataSpace override
Bug: 134800141
Change-Id: I1ddc258100dfd7e3c2cc86f9e476d8d52c710e3f
parent 9c8dfd59
Loading
Loading
Loading
Loading
+7 −1
Original line number Diff line number Diff line
@@ -60,6 +60,8 @@ Camera3Stream::Camera3Stream(int id,
    mUsage(0),
    mOldUsage(0),
    mOldMaxBuffers(0),
    mOldFormat(-1),
    mOldDataSpace(HAL_DATASPACE_UNKNOWN),
    mPrepared(false),
    mPrepareBlockRequest(true),
    mPreparedBufferIdx(0),
@@ -256,6 +258,8 @@ camera3_stream* Camera3Stream::startConfiguration() {

    mOldUsage = mUsage;
    mOldMaxBuffers = camera3_stream::max_buffers;
    mOldFormat = camera3_stream::format;
    mOldDataSpace = camera3_stream::data_space;

    res = getEndpointUsage(&mUsage);
    if (res != OK) {
@@ -330,7 +334,9 @@ status_t Camera3Stream::finishConfiguration(/*out*/bool* streamReconfigured) {
    // so. As documented in hardware/camera3.h:configure_streams().
    if (mState == STATE_IN_RECONFIG &&
            mOldUsage == mUsage &&
            mOldMaxBuffers == camera3_stream::max_buffers && !mDataSpaceOverridden) {
            mOldMaxBuffers == camera3_stream::max_buffers &&
            mOldDataSpace == camera3_stream::data_space &&
            mOldFormat == camera3_stream::format) {
        mState = STATE_CONFIGURED;
        return OK;
    }
+4 −0
Original line number Diff line number Diff line
@@ -540,8 +540,12 @@ class Camera3Stream :
    uint64_t mUsage;

  private:
    // Previously configured stream properties (post HAL override)
    uint64_t mOldUsage;
    uint32_t mOldMaxBuffers;
    int mOldFormat;
    android_dataspace mOldDataSpace;

    Condition mOutputBufferReturnedSignal;
    Condition mInputBufferReturnedSignal;
    static const nsecs_t kWaitForBufferDuration = 3000000000LL; // 3000 ms