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

Commit 256dfce2 authored by Treehugger Robot's avatar Treehugger Robot Committed by Android (Google) Code Review
Browse files

Merge "BufferItemConsumer: initialize ConsumerBase in onFirstRef()." into main

parents a0c744fd 505d7646
Loading
Loading
Loading
Loading
+23 −18
Original line number Original line Diff line number Diff line
@@ -54,33 +54,38 @@ sp<BufferItemConsumer> BufferItemConsumer::create(const sp<IGraphicBufferConsume


BufferItemConsumer::BufferItemConsumer(uint64_t consumerUsage, int bufferCount,
BufferItemConsumer::BufferItemConsumer(uint64_t consumerUsage, int bufferCount,
                                       bool controlledByApp, bool isConsumerSurfaceFlinger)
                                       bool controlledByApp, bool isConsumerSurfaceFlinger)
      : ConsumerBase(controlledByApp, isConsumerSurfaceFlinger) {
      : ConsumerBase(controlledByApp, isConsumerSurfaceFlinger),
    initialize(consumerUsage, bufferCount);
        mConsumerUsage(consumerUsage),
}
        mBufferCount(bufferCount) {}


BufferItemConsumer::BufferItemConsumer(const sp<IGraphicBufferProducer>& producer,
BufferItemConsumer::BufferItemConsumer(const sp<IGraphicBufferProducer>& producer,
                                       const sp<IGraphicBufferConsumer>& consumer,
                                       const sp<IGraphicBufferConsumer>& consumer,
                                       uint64_t consumerUsage, int bufferCount,
                                       uint64_t consumerUsage, int bufferCount,
                                       bool controlledByApp)
                                       bool controlledByApp)
      : ConsumerBase(producer, consumer, controlledByApp) {
      : ConsumerBase(producer, consumer, controlledByApp),
    initialize(consumerUsage, bufferCount);
        mConsumerUsage(consumerUsage),
}
        mBufferCount(bufferCount) {}

BufferItemConsumer::BufferItemConsumer(const sp<IGraphicBufferConsumer>& consumer,
                                       uint64_t consumerUsage, int bufferCount,
                                       bool controlledByApp)
      : ConsumerBase(consumer, controlledByApp),
        mConsumerUsage(consumerUsage),
        mBufferCount(bufferCount) {}


BufferItemConsumer::BufferItemConsumer(
void BufferItemConsumer::onFirstRef() {
        const sp<IGraphicBufferConsumer>& consumer, uint64_t consumerUsage,
    ConsumerBase::onFirstRef();
        int bufferCount, bool controlledByApp) :
    initializeConsumer();
    ConsumerBase(consumer, controlledByApp)
{
    initialize(consumerUsage, bufferCount);
}
}


void BufferItemConsumer::initialize(uint64_t consumerUsage, int bufferCount) {
void BufferItemConsumer::initializeConsumer() {
    status_t err = mConsumer->setConsumerUsageBits(consumerUsage);
    status_t err = mConsumer->setConsumerUsageBits(mConsumerUsage);
    LOG_ALWAYS_FATAL_IF(err != OK, "Failed to set consumer usage bits to %#" PRIx64, consumerUsage);
    LOG_ALWAYS_FATAL_IF(err != OK, "Failed to set consumer usage bits to %#" PRIx64,
    if (bufferCount != DEFAULT_MAX_BUFFERS) {
                        mConsumerUsage);
        err = mConsumer->setMaxAcquiredBufferCount(bufferCount);
    if (mBufferCount != DEFAULT_MAX_BUFFERS) {
        err = mConsumer->setMaxAcquiredBufferCount(mBufferCount);
        LOG_ALWAYS_FATAL_IF(err != OK, "Failed to set max acquired buffer count to %d",
        LOG_ALWAYS_FATAL_IF(err != OK, "Failed to set max acquired buffer count to %d",
                            bufferCount);
                            mBufferCount);
    }
    }
}
}


+6 −1
Original line number Original line Diff line number Diff line
@@ -104,6 +104,8 @@ class BufferItemConsumer: public ConsumerBase
    status_t releaseBuffer(const sp<GraphicBuffer>& buffer,
    status_t releaseBuffer(const sp<GraphicBuffer>& buffer,
                           const sp<Fence>& releaseFence = Fence::NO_FENCE);
                           const sp<Fence>& releaseFence = Fence::NO_FENCE);


    void onFirstRef() override;

protected:
protected:
    // This should only be used by BLASTBufferQueue:
    // This should only be used by BLASTBufferQueue:
    BufferItemConsumer(const sp<IGraphicBufferProducer>& producer,
    BufferItemConsumer(const sp<IGraphicBufferProducer>& producer,
@@ -119,13 +121,16 @@ protected:
private:
private:
    friend sp<BufferItemConsumer>;
    friend sp<BufferItemConsumer>;


    void initialize(uint64_t consumerUsage, int bufferCount);
    void initializeConsumer();


    status_t releaseBufferSlotLocked(int slotIndex, const sp<GraphicBuffer>& buffer,
    status_t releaseBufferSlotLocked(int slotIndex, const sp<GraphicBuffer>& buffer,
                                     const sp<Fence>& releaseFence);
                                     const sp<Fence>& releaseFence);


    void freeBufferLocked(int slotIndex) override;
    void freeBufferLocked(int slotIndex) override;


    uint64_t mConsumerUsage;
    int mBufferCount;

    // mBufferFreedListener is the listener object that will be called when
    // mBufferFreedListener is the listener object that will be called when
    // an old buffer is being freed. If it is not NULL it will be called from
    // an old buffer is being freed. If it is not NULL it will be called from
    // freeBufferLocked.
    // freeBufferLocked.