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

Commit 4fbac0b4 authored by Treehugger Robot's avatar Treehugger Robot Committed by Automerger Merge Worker
Browse files

Merge "NewBufferCount'value changed:simplifying the steps of applying for new...

Merge "NewBufferCount'value changed:simplifying the steps of applying for new buffers" into main am: 326593b0

Original change: https://android-review.googlesource.com/c/platform/frameworks/native/+/3304525



Change-Id: I6faa20cb880ac0313d3a1f683794146c10309b85
Signed-off-by: default avatarAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
parents 4a57b810 326593b0
Loading
Loading
Loading
Loading
+20 −26
Original line number Diff line number Diff line
@@ -1501,7 +1501,6 @@ void BufferQueueProducer::allocateBuffers(uint32_t width, uint32_t height,

    const bool useDefaultSize = !width && !height;
    while (true) {
        size_t newBufferCount = 0;
        uint32_t allocWidth = 0;
        uint32_t allocHeight = 0;
        PixelFormat allocFormat = PIXEL_FORMAT_UNKNOWN;
@@ -1523,8 +1522,9 @@ void BufferQueueProducer::allocateBuffers(uint32_t width, uint32_t height,

            // Only allocate one buffer at a time to reduce risks of overlapping an allocation from
            // both allocateBuffers and dequeueBuffer.
            newBufferCount = mCore->mFreeSlots.empty() ? 0 : 1;
            if (newBufferCount == 0) {
            if (mCore->mFreeSlots.empty()) {
                BQ_LOGV("allocateBuffers: a slot was occupied while "
                        "allocating. Dropping allocated buffer.");
                return;
            }

@@ -1566,8 +1566,6 @@ void BufferQueueProducer::allocateBuffers(uint32_t width, uint32_t height,
        };
#endif

        Vector<sp<GraphicBuffer>> buffers;
        for (size_t i = 0; i < newBufferCount; ++i) {
#if COM_ANDROID_GRAPHICS_LIBGUI_FLAGS(BQ_EXTENDEDALLOCATE)
        sp<GraphicBuffer> graphicBuffer = new GraphicBuffer(allocRequest);
#else
@@ -1586,8 +1584,6 @@ void BufferQueueProducer::allocateBuffers(uint32_t width, uint32_t height,
            mCore->mIsAllocatingCondition.notify_all();
            return;
        }
            buffers.push_back(graphicBuffer);
        }

        { // Autolock scope
            std::unique_lock<std::mutex> lock(mCore->mMutex);
@@ -1614,15 +1610,13 @@ void BufferQueueProducer::allocateBuffers(uint32_t width, uint32_t height,
                continue;
            }

            for (size_t i = 0; i < newBufferCount; ++i) {
            if (mCore->mFreeSlots.empty()) {
                BQ_LOGV("allocateBuffers: a slot was occupied while "
                        "allocating. Dropping allocated buffer.");
                    continue;
                }
            } else {
                auto slot = mCore->mFreeSlots.begin();
                mCore->clearBufferSlotLocked(*slot); // Clean up the slot first
                mSlots[*slot].mGraphicBuffer = buffers[i];
                mSlots[*slot].mGraphicBuffer = graphicBuffer;
                mSlots[*slot].mFence = Fence::NO_FENCE;
#if COM_ANDROID_GRAPHICS_LIBGUI_FLAGS(BQ_EXTENDEDALLOCATE)
                mSlots[*slot].mAdditionalOptionsGenerationId = allocOptionsGenId;