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

Commit 913dd036 authored by android-build-team Robot's avatar android-build-team Robot
Browse files

release-request-bfd62fea-ae1d-4d0d-80fd-4ff0d407c488-for-git_oc-release-410226...

release-request-bfd62fea-ae1d-4d0d-80fd-4ff0d407c488-for-git_oc-release-4102265 snap-temp-L40000000074340189

Change-Id: Ic2e51b29c8f89f4ba9ac0ec03effe8f318bda5d9
parents fa9d1451 fd43dc67
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -267,6 +267,8 @@ public:
    // discardFreeBuffers releases all currently-free buffers held by the BufferQueue, in order to
    // reduce the memory consumption of the BufferQueue to the minimum possible without
    // discarding data.
    // The consumer invoking this method is responsible for calling getReleasedBuffers() after this
    // call to free up any of its locally cached buffers.
    virtual status_t discardFreeBuffers() = 0;

    // dump state into a string
+34 −26
Original line number Diff line number Diff line
@@ -632,6 +632,8 @@ status_t BufferQueueProducer::detachNextBuffer(sp<GraphicBuffer>* outBuffer,
        return BAD_VALUE;
    }

    sp<IConsumerListener> listener;
    {
        Mutex::Autolock lock(mCore->mMutex);

        if (mCore->mIsAbandoned) {
@@ -666,6 +668,12 @@ status_t BufferQueueProducer::detachNextBuffer(sp<GraphicBuffer>* outBuffer,
        *outFence = mSlots[found].mFence;
        mCore->clearBufferSlotLocked(found);
        VALIDATE_CONSISTENCY();
        listener = mCore->mConsumerListener;
    }

    if (listener != NULL) {
        listener->onBuffersReleased();
    }

    return NO_ERROR;
}
+12 −1
Original line number Diff line number Diff line
@@ -253,7 +253,18 @@ status_t ConsumerBase::discardFreeBuffers() {
        CB_LOGE("discardFreeBuffers: ConsumerBase is abandoned!");
        return NO_INIT;
    }
    return mConsumer->discardFreeBuffers();
    status_t err = mConsumer->discardFreeBuffers();
    if (err != OK) {
        return err;
    }
    uint64_t mask;
    mConsumer->getReleasedBuffers(&mask);
    for (int i = 0; i < BufferQueue::NUM_BUFFER_SLOTS; i++) {
        if (mask & (1ULL << i)) {
            freeBufferLocked(i);
        }
    }
    return OK;
}

void ConsumerBase::dumpState(String8& result) const {