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

Commit 5ba37006 authored by Sungtak Lee's avatar Sungtak Lee Committed by Android Build Coastguard Worker
Browse files

GraphicsTracker: handle dequeueBuffer error while switching Surfaces

dequeueBuffer() can be called just after the output surface has
been switched. Ignore the error in the case.

Bug: 351820377
Test: atest android.mediav2.cts.CodecDecoderDetachedSurfaceTest#testDetachOutputSurface
FLAG: EXEMPT bugfix
(cherry picked from https://googleplex-android-review.googlesource.com/q/commit:1dc00b0a2986ce5b096f1d18e07ab008f6bfdc52)
Merged-In: I66058eab90d14418830fdbbbf3b6319bf585072f
Change-Id: I66058eab90d14418830fdbbbf3b6319bf585072f
parent 48b6a83a
Loading
Loading
Loading
Loading
+9 −0
Original line number Diff line number Diff line
@@ -673,6 +673,15 @@ c2_status_t GraphicsTracker::_allocate(const std::shared_ptr<BufferCache> &cache
            ALOGW("BQ might not be ready for dequeueBuffer()");
            return C2_BLOCKING;
        }
        bool cacheExpired = false;
        {
            std::unique_lock<std::mutex> l(mLock);
            cacheExpired = (mBufferCache.get() != cache.get());
        }
        if (cacheExpired) {
            ALOGW("a new BQ is configured. dequeueBuffer() error %d", (int)status);
            return C2_BLOCKING;
        }
        ALOGE("BQ in inconsistent status. dequeueBuffer() error %d", (int)status);
        return C2_CORRUPTED;
    }