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

Commit eb8b659a authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge changes Ic2684098,I48c26abc

* changes:
  Camera: check stream state in useHalBufManager mode
  Camera: fix RequestBufferStateMachine bug
parents ce4afa6c 110342bd
Loading
Loading
Loading
Loading
+7 −7
Original line number Diff line number Diff line
@@ -5443,6 +5443,10 @@ status_t Camera3Device::RequestThread::prepareHalRequests() {
            }

            if (mUseHalBufManager) {
                if (outputStream->isAbandoned()) {
                    ALOGE("%s: stream %d is abandoned.", __FUNCTION__, streamId);
                    return TIMED_OUT;
                }
                // HAL will request buffer through requestStreamBuffer API
                camera3_stream_buffer_t& buffer = outputBuffers->editItemAt(j);
                buffer.stream = outputStream->asHalStream();
@@ -6370,8 +6374,9 @@ status_t Camera3Device::RequestBufferStateMachine::initialize(

bool Camera3Device::RequestBufferStateMachine::startRequestBuffer() {
    std::lock_guard<std::mutex> lock(mLock);
    if (mStatus == RB_STATUS_READY) {
    if (mStatus == RB_STATUS_READY || mStatus == RB_STATUS_PENDING_STOP) {
        mRequestBufferOngoing = true;
        notifyTrackerLocked(/*active*/true);
        return true;
    }
    return false;
@@ -6387,15 +6392,12 @@ void Camera3Device::RequestBufferStateMachine::endRequestBuffer() {
    if (mStatus == RB_STATUS_PENDING_STOP) {
        checkSwitchToStopLocked();
    }
    notifyTrackerLocked(/*active*/false);
}

void Camera3Device::RequestBufferStateMachine::onStreamsConfigured() {
    std::lock_guard<std::mutex> lock(mLock);
    RequestBufferState oldStatus = mStatus;
    mStatus = RB_STATUS_READY;
    if (oldStatus != RB_STATUS_READY) {
        notifyTrackerLocked(/*active*/true);
    }
    return;
}

@@ -6405,7 +6407,6 @@ void Camera3Device::RequestBufferStateMachine::onRequestSubmitted() {
    mInflightMapEmpty = false;
    if (mStatus == RB_STATUS_STOPPED) {
        mStatus = RB_STATUS_READY;
        notifyTrackerLocked(/*active*/true);
    }
    return;
}
@@ -6450,7 +6451,6 @@ void Camera3Device::RequestBufferStateMachine::notifyTrackerLocked(bool active)
bool Camera3Device::RequestBufferStateMachine::checkSwitchToStopLocked() {
    if (mInflightMapEmpty && mRequestThreadPaused && !mRequestBufferOngoing) {
        mStatus = RB_STATUS_STOPPED;
        notifyTrackerLocked(/*active*/false);
        return true;
    }
    return false;