Loading libs/gui/BufferQueue.cpp +7 −0 Original line number Diff line number Diff line Loading @@ -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) { Loading libs/gui/BufferQueueProducer.cpp +14 −0 Original line number Diff line number Diff line Loading @@ -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 } Loading Loading @@ -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); Loading libs/gui/ConsumerBase.cpp +2 −0 Original line number Diff line number Diff line Loading @@ -131,6 +131,8 @@ void ConsumerBase::onFrameReplaced(const BufferItem &item) { } } void ConsumerBase::onBufferAllocated(const BufferItem& /*item*/) {} void ConsumerBase::onBuffersReleased() { Mutex::Autolock lock(mMutex); Loading libs/gui/IConsumerListener.cpp +9 −1 Original line number Diff line number Diff line Loading @@ -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 Loading @@ -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); } Loading Loading @@ -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: Loading libs/gui/include/gui/BufferQueue.h +1 −0 Original line number Diff line number Diff line Loading @@ -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 Loading
libs/gui/BufferQueue.cpp +7 −0 Original line number Diff line number Diff line Loading @@ -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) { Loading
libs/gui/BufferQueueProducer.cpp +14 −0 Original line number Diff line number Diff line Loading @@ -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 } Loading Loading @@ -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); Loading
libs/gui/ConsumerBase.cpp +2 −0 Original line number Diff line number Diff line Loading @@ -131,6 +131,8 @@ void ConsumerBase::onFrameReplaced(const BufferItem &item) { } } void ConsumerBase::onBufferAllocated(const BufferItem& /*item*/) {} void ConsumerBase::onBuffersReleased() { Mutex::Autolock lock(mMutex); Loading
libs/gui/IConsumerListener.cpp +9 −1 Original line number Diff line number Diff line Loading @@ -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 Loading @@ -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); } Loading Loading @@ -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: Loading
libs/gui/include/gui/BufferQueue.h +1 −0 Original line number Diff line number Diff line Loading @@ -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