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

Commit 4b91f8c3 authored by Eino-Ville Talvala's avatar Eino-Ville Talvala Committed by android-build-merger
Browse files

Merge changes Ibc1444b8,I14c200d1 into oc-dev am: fd43dc67

am: b209c121

Change-Id: I9da639be63a43343d236c865aa810957290e2e49
parents 659c063b b209c121
Loading
Loading
Loading
Loading
+2 −0
Original line number Original line Diff line number Diff line
@@ -267,6 +267,8 @@ public:
    // discardFreeBuffers releases all currently-free buffers held by the BufferQueue, in order to
    // 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
    // reduce the memory consumption of the BufferQueue to the minimum possible without
    // discarding data.
    // 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;
    virtual status_t discardFreeBuffers() = 0;


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


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


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

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


    return NO_ERROR;
    return NO_ERROR;
}
}
+12 −1
Original line number Original line Diff line number Diff line
@@ -253,7 +253,18 @@ status_t ConsumerBase::discardFreeBuffers() {
        CB_LOGE("discardFreeBuffers: ConsumerBase is abandoned!");
        CB_LOGE("discardFreeBuffers: ConsumerBase is abandoned!");
        return NO_INIT;
        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 {
void ConsumerBase::dumpState(String8& result) const {