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

Commit dd26416f authored by Dan Stoza's avatar Dan Stoza
Browse files

libgui: Prepare for IGBC::BufferItem removal

Switches some dependencies from IGraphicBufferConsumer::BufferItem to
android::BufferItem and adds some methods to facilitate incrementally
changing client code to do the same.

Change-Id: I699ed0a6837076867ca756b28d1ffb2238f7a0d9
parent de7100ab
Loading
Loading
Loading
Loading
+4 −2
Original line number Diff line number Diff line
@@ -76,7 +76,9 @@ class BufferItemConsumer: public ConsumerBase
    //
    // If waitForFence is true, and the acquired BufferItem has a valid fence object,
    // acquireBuffer will wait on the fence with no timeout before returning.
    status_t acquireBuffer(BufferItem *item, nsecs_t presentWhen,
    status_t acquireBuffer(BufferQueue::BufferItem *item, nsecs_t presentWhen,
            bool waitForFence = true);
    status_t acquireBuffer(android::BufferItem* item, nsecs_t presentWhen,
            bool waitForFence = true);

    // Returns an acquired buffer to the queue, allowing it to be reused. Since
+2 −2
Original line number Diff line number Diff line
@@ -153,8 +153,8 @@ protected:
    // initialization that must take place the first time a buffer is assigned
    // to a slot.  If it is overridden the derived class's implementation must
    // call ConsumerBase::acquireBufferLocked.
    virtual status_t acquireBufferLocked(IGraphicBufferConsumer::BufferItem *item,
        nsecs_t presentWhen);
    virtual status_t acquireBufferLocked(BufferItem *item, nsecs_t presentWhen);
    virtual status_t acquireBufferLocked(BufferQueue::BufferItem *item, nsecs_t presentWhen);

    // releaseBufferLocked relinquishes control over a buffer, returning that
    // control to the BufferQueue.
+2 −2
Original line number Diff line number Diff line
@@ -241,8 +241,8 @@ protected:

    // acquireBufferLocked overrides the ConsumerBase method to update the
    // mEglSlots array in addition to the ConsumerBase behavior.
    virtual status_t acquireBufferLocked(BufferQueue::BufferItem *item,
        nsecs_t presentWhen);
    virtual status_t acquireBufferLocked(BufferItem *item, nsecs_t presentWhen);
    virtual status_t acquireBufferLocked(IGraphicBufferConsumer::BufferItem *item, nsecs_t presentWhen);

    // releaseBufferLocked overrides the ConsumerBase method to update the
    // mEglSlots array in addition to the ConsumerBase.
+13 −1
Original line number Diff line number Diff line
@@ -19,6 +19,7 @@
//#define ATRACE_TAG ATRACE_TAG_GRAPHICS
#include <utils/Log.h>

#include <gui/BufferItem.h>
#include <gui/BufferItemConsumer.h>

//#define BI_LOGV(x, ...) ALOGV("[%s] " x, mName.string(), ##__VA_ARGS__)
@@ -52,7 +53,7 @@ void BufferItemConsumer::setName(const String8& name) {
    mConsumer->setConsumerName(name);
}

status_t BufferItemConsumer::acquireBuffer(BufferItem *item,
status_t BufferItemConsumer::acquireBuffer(BufferQueue::BufferItem *item,
        nsecs_t presentWhen, bool waitForFence) {
    status_t err;

@@ -82,6 +83,17 @@ status_t BufferItemConsumer::acquireBuffer(BufferItem *item,
    return OK;
}

status_t BufferItemConsumer::acquireBuffer(android::BufferItem* outItem,
        nsecs_t presentWhen, bool waitForFence) {
    BufferQueue::BufferItem item;
    status_t result = acquireBuffer(&item, presentWhen, waitForFence);
    if (result != NO_ERROR) {
        return result;
    }
    *outItem = item;
    return NO_ERROR;
}

status_t BufferItemConsumer::releaseBuffer(const BufferItem &item,
        const sp<Fence>& releaseFence) {
    status_t err;
+13 −1
Original line number Diff line number Diff line
@@ -27,6 +27,7 @@

#include <hardware/hardware.h>

#include <gui/BufferItem.h>
#include <gui/IGraphicBufferAlloc.h>
#include <gui/ISurfaceComposer.h>
#include <gui/SurfaceComposerClient.h>
@@ -179,7 +180,7 @@ void ConsumerBase::dumpLocked(String8& result, const char* prefix) const {
    }
}

status_t ConsumerBase::acquireBufferLocked(BufferQueue::BufferItem *item,
status_t ConsumerBase::acquireBufferLocked(BufferItem *item,
        nsecs_t presentWhen) {
    status_t err = mConsumer->acquireBuffer(item, presentWhen);
    if (err != NO_ERROR) {
@@ -199,6 +200,17 @@ status_t ConsumerBase::acquireBufferLocked(BufferQueue::BufferItem *item,
    return OK;
}

status_t ConsumerBase::acquireBufferLocked(BufferQueue::BufferItem *outItem,
        nsecs_t presentWhen) {
    BufferItem item;
    status_t result = acquireBufferLocked(&item, presentWhen);
    if (result != NO_ERROR) {
        return result;
    }
    *outItem = item;
    return NO_ERROR;
}

status_t ConsumerBase::addReleaseFence(int slot,
        const sp<GraphicBuffer> graphicBuffer, const sp<Fence>& fence) {
    Mutex::Autolock lock(mMutex);
Loading