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

Commit 34df4e84 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 am: 4fbac0b4

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



Change-Id: I04348a87e5195302bd60be3e877ba6c32249c877
Signed-off-by: default avatarAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
parents 7128079c 4fbac0b4
Loading
Loading
Loading
Loading
+20 −26
Original line number Diff line number Diff line
@@ -1556,7 +1556,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;
@@ -1578,8 +1577,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;
            }

@@ -1621,8 +1621,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
@@ -1641,8 +1639,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);
@@ -1669,15 +1665,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;