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

Commit 21976c31 authored by Alec Mouri's avatar Alec Mouri Committed by Android (Google) Code Review
Browse files

Merge "Create EGLImages during buffer allocation"

parents f741e951 d7b3a8bc
Loading
Loading
Loading
Loading
+7 −0
Original line number Diff line number Diff line
@@ -59,6 +59,13 @@ void BufferQueue::ProxyConsumerListener::onFrameReplaced(
    }
}

void BufferQueue::ProxyConsumerListener::onBufferAllocated(const BufferItem& item) {
    sp<ConsumerListener> listener(mConsumerListener.promote());
    if (listener != nullptr) {
        listener->onBufferAllocated(item);
    }
}

void BufferQueue::ProxyConsumerListener::onBuffersReleased() {
    sp<ConsumerListener> listener(mConsumerListener.promote());
    if (listener != nullptr) {
+14 −0
Original line number Diff line number Diff line
@@ -530,6 +530,13 @@ status_t BufferQueueProducer::dequeueBuffer(int* outSlot, sp<android::Fence>* ou
                return NO_INIT;
            }

            if (mCore->mConsumerListener != nullptr) {
                BufferItem item;
                item.mGraphicBuffer = graphicBuffer;
                item.mSlot = *outSlot;
                mCore->mConsumerListener->onBufferAllocated(item);
            }

            VALIDATE_CONSISTENCY();
        } // Autolock scope
    }
@@ -1414,6 +1421,13 @@ void BufferQueueProducer::allocateBuffers(uint32_t width, uint32_t height,
                BQ_LOGV("allocateBuffers: allocated a new buffer in slot %d",
                        *slot);

                if (mCore->mConsumerListener != nullptr) {
                    BufferItem item;
                    item.mGraphicBuffer = buffers[i];
                    item.mSlot = *slot;
                    mCore->mConsumerListener->onBufferAllocated(item);
                }

                // Make sure the erase is done after all uses of the slot
                // iterator since it will be invalid after this point.
                mCore->mFreeSlots.erase(slot);
+2 −0
Original line number Diff line number Diff line
@@ -131,6 +131,8 @@ void ConsumerBase::onFrameReplaced(const BufferItem &item) {
    }
}

void ConsumerBase::onBufferAllocated(const BufferItem& /*item*/) {}

void ConsumerBase::onBuffersReleased() {
    Mutex::Autolock lock(mMutex);

+9 −1
Original line number Diff line number Diff line
@@ -28,7 +28,8 @@ enum class Tag : uint32_t {
    ON_FRAME_REPLACED,
    ON_BUFFERS_RELEASED,
    ON_SIDEBAND_STREAM_CHANGED,
    LAST = ON_SIDEBAND_STREAM_CHANGED,
    ON_BUFFER_ALLOCATED,
    LAST = ON_BUFFER_ALLOCATED,
};

} // Anonymous namespace
@@ -54,6 +55,11 @@ public:
                                                                       item);
    }

    void onBufferAllocated(const BufferItem& item) override {
        callRemoteAsync<decltype(&IConsumerListener::onBufferAllocated)>(Tag::ON_BUFFER_ALLOCATED,
                                                                         item);
    }

    void onBuffersReleased() override {
        callRemoteAsync<decltype(&IConsumerListener::onBuffersReleased)>(Tag::ON_BUFFERS_RELEASED);
    }
@@ -89,6 +95,8 @@ status_t BnConsumerListener::onTransact(uint32_t code, const Parcel& data, Parce
            return callLocalAsync(data, reply, &IConsumerListener::onFrameAvailable);
        case Tag::ON_FRAME_REPLACED:
            return callLocalAsync(data, reply, &IConsumerListener::onFrameReplaced);
        case Tag::ON_BUFFER_ALLOCATED:
            return callLocalAsync(data, reply, &IConsumerListener::onBufferAllocated);
        case Tag::ON_BUFFERS_RELEASED:
            return callLocalAsync(data, reply, &IConsumerListener::onBuffersReleased);
        case Tag::ON_SIDEBAND_STREAM_CHANGED:
+1 −0
Original line number Diff line number Diff line
@@ -61,6 +61,7 @@ public:
        void onDisconnect() override;
        void onFrameAvailable(const BufferItem& item) override;
        void onFrameReplaced(const BufferItem& item) override;
        void onBufferAllocated(const BufferItem& item) override;
        void onBuffersReleased() override;
        void onSidebandStreamChanged() override;
        void addAndGetFrameTimestamps(
Loading