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

Commit ab9496bf authored by Sungtak Lee's avatar Sungtak Lee Committed by Automerger Merge Worker
Browse files

Merge changes from topic "ccodec-stop-hal-first" into main am: 0c88d1c5

parents da2879ae 0c88d1c5
Loading
Loading
Loading
Loading
+10 −0
Original line number Diff line number Diff line
@@ -107,6 +107,16 @@ flag {
  }
}

flag {
  name: "stop_hal_before_surface"
  namespace: "codec_fwk"
  description: "Bugfix flag for setting state early to avoid a race condition"
  bug: "339247977"
  metadata {
    purpose: PURPOSE_BUGFIX
  }
}

flag {
  name: "teamfood"
  namespace: "codec_fwk"
+21 −4
Original line number Diff line number Diff line
@@ -2227,8 +2227,17 @@ void CCodec::stop(bool pushBlankBuffer) {
    // So we reverse their order for stopUseOutputSurface() to notify C2Fence waiters
    // prior to comp->stop().
    // See also b/300350761.
    //
    // The workaround is no longer needed with fetchGraphicBlock & C2Fence changes.
    // so we are reverting back to the logical sequence of the operations.
    status_t err = C2_OK;
    if (android::media::codec::provider_->stop_hal_before_surface()) {
        err = comp->stop();
        mChannel->stopUseOutputSurface(pushBlankBuffer);
    status_t err = comp->stop();
    } else {
        mChannel->stopUseOutputSurface(pushBlankBuffer);
        err = comp->stop();
    }
    if (err != C2_OK) {
        // TODO: convert err into status_t
        mCallback->onError(UNKNOWN_ERROR, ACTION_CODE_FATAL);
@@ -2323,8 +2332,16 @@ void CCodec::release(bool sendCallback, bool pushBlankBuffer) {
    // So we reverse their order for stopUseOutputSurface() to notify C2Fence waiters
    // prior to comp->release().
    // See also b/300350761.
    //
    // The workaround is no longer needed with fetchGraphicBlock & C2Fence changes.
    // so we are reverting back to the logical sequence of the operations.
    if (android::media::codec::provider_->stop_hal_before_surface()) {
        comp->release();
        mChannel->stopUseOutputSurface(pushBlankBuffer);
    } else {
        mChannel->stopUseOutputSurface(pushBlankBuffer);
        comp->release();
    }

    {
        Mutexed<State>::Locked state(mState);