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

Commit 0b918674 authored by Igor Murashkin's avatar Igor Murashkin
Browse files

camera3: Don't eagerly finish configuring bidi streams more than once

Finishing all stream configuration immediately is good, but when a stream is
both input and output it attempted to finish configuring bidi streams twice.
Since all ZSL streams are bidi, when we had a ZSL stream active preview would
immediately stop working.

Bug: 8563838
Change-Id: Iec998f11f6405fc15f3f31bd7cd29f03a7968d14
parent 768b7d07
Loading
Loading
Loading
Loading
+10 −6
Original line number Diff line number Diff line
@@ -1060,7 +1060,7 @@ status_t Camera3Device::configureStreamsLocked() {
    // TODO: Try to relax this later back to lazy completion, which should be
    // faster

    if (mInputStream != NULL) {
    if (mInputStream != NULL && mInputStream->isConfiguring()) {
        res = mInputStream->finishConfiguration(mHal3Device);
        if (res != OK) {
            SET_ERR_L("Can't finish configuring input stream %d: %s (%d)",
@@ -1070,13 +1070,17 @@ status_t Camera3Device::configureStreamsLocked() {
    }

    for (size_t i = 0; i < mOutputStreams.size(); i++) {
        res = mOutputStreams.editValueAt(i)->finishConfiguration(mHal3Device);
        sp<Camera3OutputStreamInterface> outputStream =
            mOutputStreams.editValueAt(i);
        if (outputStream->isConfiguring()) {
            res = outputStream->finishConfiguration(mHal3Device);
            if (res != OK) {
                SET_ERR_L("Can't finish configuring output stream %d: %s (%d)",
                    mOutputStreams[i]->getId(), strerror(-res), res);
                        outputStream->getId(), strerror(-res), res);
                return res;
            }
        }
    }

    // Request thread needs to know to avoid using repeat-last-settings protocol
    // across configure_streams() calls