Loading libs/gui/BLASTBufferQueue.cpp +4 −12 Original line number Original line Diff line number Diff line Loading @@ -119,16 +119,11 @@ void BLASTBufferItemConsumer::getConnectionEvents(uint64_t frameNumber, bool* ne if (needsDisconnect != nullptr) *needsDisconnect = disconnect; if (needsDisconnect != nullptr) *needsDisconnect = disconnect; } } void BLASTBufferItemConsumer::setBlastBufferQueue(BLASTBufferQueue* blastbufferqueue) { std::scoped_lock lock(mBufferQueueMutex); mBLASTBufferQueue = blastbufferqueue; } void BLASTBufferItemConsumer::onSidebandStreamChanged() { void BLASTBufferItemConsumer::onSidebandStreamChanged() { std::scoped_lock lock(mBufferQueueMutex); sp<BLASTBufferQueue> bbq = mBLASTBufferQueue.promote(); if (mBLASTBufferQueue != nullptr) { if (bbq != nullptr) { sp<NativeHandle> stream = getSidebandStream(); sp<NativeHandle> stream = getSidebandStream(); mBLASTBufferQueue->setSidebandStream(stream); bbq->setSidebandStream(stream); } } } } Loading @@ -148,7 +143,7 @@ BLASTBufferQueue::BLASTBufferQueue(const std::string& name) mBufferItemConsumer = new BLASTBufferItemConsumer(mConsumer, mBufferItemConsumer = new BLASTBufferItemConsumer(mConsumer, GraphicBuffer::USAGE_HW_COMPOSER | GraphicBuffer::USAGE_HW_COMPOSER | GraphicBuffer::USAGE_HW_TEXTURE, GraphicBuffer::USAGE_HW_TEXTURE, 1, false); 1, false, this); static int32_t id = 0; static int32_t id = 0; mName = name + "#" + std::to_string(id); mName = name + "#" + std::to_string(id); auto consumerName = mName + "(BLAST Consumer)" + std::to_string(id); auto consumerName = mName + "(BLAST Consumer)" + std::to_string(id); Loading @@ -157,7 +152,6 @@ BLASTBufferQueue::BLASTBufferQueue(const std::string& name) mBufferItemConsumer->setName(String8(consumerName.c_str())); mBufferItemConsumer->setName(String8(consumerName.c_str())); mBufferItemConsumer->setFrameAvailableListener(this); mBufferItemConsumer->setFrameAvailableListener(this); mBufferItemConsumer->setBufferFreedListener(this); mBufferItemConsumer->setBufferFreedListener(this); mBufferItemConsumer->setBlastBufferQueue(this); ComposerService::getComposerService()->getMaxAcquiredBufferCount(&mMaxAcquiredBuffers); ComposerService::getComposerService()->getMaxAcquiredBufferCount(&mMaxAcquiredBuffers); mBufferItemConsumer->setMaxAcquiredBufferCount(mMaxAcquiredBuffers); mBufferItemConsumer->setMaxAcquiredBufferCount(mMaxAcquiredBuffers); Loading @@ -174,7 +168,6 @@ BLASTBufferQueue::BLASTBufferQueue(const std::string& name, const sp<SurfaceCont } } BLASTBufferQueue::~BLASTBufferQueue() { BLASTBufferQueue::~BLASTBufferQueue() { mBufferItemConsumer->setBlastBufferQueue(nullptr); if (mPendingTransactions.empty()) { if (mPendingTransactions.empty()) { return; return; } } Loading Loading @@ -1025,7 +1018,6 @@ void BLASTBufferQueue::abandon() { mBufferItemConsumer->abandon(); mBufferItemConsumer->abandon(); mBufferItemConsumer->setFrameAvailableListener(nullptr); mBufferItemConsumer->setFrameAvailableListener(nullptr); mBufferItemConsumer->setBufferFreedListener(nullptr); mBufferItemConsumer->setBufferFreedListener(nullptr); mBufferItemConsumer->setBlastBufferQueue(nullptr); } } mBufferItemConsumer = nullptr; mBufferItemConsumer = nullptr; mConsumer = nullptr; mConsumer = nullptr; Loading libs/gui/include/gui/BLASTBufferQueue.h +5 −6 Original line number Original line Diff line number Diff line Loading @@ -38,11 +38,11 @@ class BufferItemConsumer; class BLASTBufferItemConsumer : public BufferItemConsumer { class BLASTBufferItemConsumer : public BufferItemConsumer { public: public: BLASTBufferItemConsumer(const sp<IGraphicBufferConsumer>& consumer, uint64_t consumerUsage, BLASTBufferItemConsumer(const sp<IGraphicBufferConsumer>& consumer, uint64_t consumerUsage, int bufferCount, bool controlledByApp) int bufferCount, bool controlledByApp, wp<BLASTBufferQueue> bbq) : BufferItemConsumer(consumer, consumerUsage, bufferCount, controlledByApp), : BufferItemConsumer(consumer, consumerUsage, bufferCount, controlledByApp), mBLASTBufferQueue(std::move(bbq)), mCurrentlyConnected(false), mCurrentlyConnected(false), mPreviouslyConnected(false), mPreviouslyConnected(false) {} mBLASTBufferQueue(nullptr) {} void onDisconnect() override; void onDisconnect() override; void addAndGetFrameTimestamps(const NewFrameEventsEntry* newTimestamps, void addAndGetFrameTimestamps(const NewFrameEventsEntry* newTimestamps, Loading @@ -53,21 +53,20 @@ public: CompositorTiming compositorTiming, nsecs_t latchTime, CompositorTiming compositorTiming, nsecs_t latchTime, nsecs_t dequeueReadyTime) REQUIRES(mMutex); nsecs_t dequeueReadyTime) REQUIRES(mMutex); void getConnectionEvents(uint64_t frameNumber, bool* needsDisconnect); void getConnectionEvents(uint64_t frameNumber, bool* needsDisconnect); void setBlastBufferQueue(BLASTBufferQueue* blastbufferqueue) REQUIRES(mMutex); protected: protected: void onSidebandStreamChanged() override REQUIRES(mMutex); void onSidebandStreamChanged() override REQUIRES(mMutex); private: private: const wp<BLASTBufferQueue> mBLASTBufferQueue; uint64_t mCurrentFrameNumber = 0; uint64_t mCurrentFrameNumber = 0; Mutex mMutex; Mutex mMutex; std::mutex mBufferQueueMutex; ConsumerFrameEventHistory mFrameEventHistory GUARDED_BY(mMutex); ConsumerFrameEventHistory mFrameEventHistory GUARDED_BY(mMutex); std::queue<uint64_t> mDisconnectEvents GUARDED_BY(mMutex); std::queue<uint64_t> mDisconnectEvents GUARDED_BY(mMutex); bool mCurrentlyConnected GUARDED_BY(mMutex); bool mCurrentlyConnected GUARDED_BY(mMutex); bool mPreviouslyConnected GUARDED_BY(mMutex); bool mPreviouslyConnected GUARDED_BY(mMutex); BLASTBufferQueue* mBLASTBufferQueue GUARDED_BY(mBufferQueueMutex); }; }; class BLASTBufferQueue class BLASTBufferQueue Loading Loading
libs/gui/BLASTBufferQueue.cpp +4 −12 Original line number Original line Diff line number Diff line Loading @@ -119,16 +119,11 @@ void BLASTBufferItemConsumer::getConnectionEvents(uint64_t frameNumber, bool* ne if (needsDisconnect != nullptr) *needsDisconnect = disconnect; if (needsDisconnect != nullptr) *needsDisconnect = disconnect; } } void BLASTBufferItemConsumer::setBlastBufferQueue(BLASTBufferQueue* blastbufferqueue) { std::scoped_lock lock(mBufferQueueMutex); mBLASTBufferQueue = blastbufferqueue; } void BLASTBufferItemConsumer::onSidebandStreamChanged() { void BLASTBufferItemConsumer::onSidebandStreamChanged() { std::scoped_lock lock(mBufferQueueMutex); sp<BLASTBufferQueue> bbq = mBLASTBufferQueue.promote(); if (mBLASTBufferQueue != nullptr) { if (bbq != nullptr) { sp<NativeHandle> stream = getSidebandStream(); sp<NativeHandle> stream = getSidebandStream(); mBLASTBufferQueue->setSidebandStream(stream); bbq->setSidebandStream(stream); } } } } Loading @@ -148,7 +143,7 @@ BLASTBufferQueue::BLASTBufferQueue(const std::string& name) mBufferItemConsumer = new BLASTBufferItemConsumer(mConsumer, mBufferItemConsumer = new BLASTBufferItemConsumer(mConsumer, GraphicBuffer::USAGE_HW_COMPOSER | GraphicBuffer::USAGE_HW_COMPOSER | GraphicBuffer::USAGE_HW_TEXTURE, GraphicBuffer::USAGE_HW_TEXTURE, 1, false); 1, false, this); static int32_t id = 0; static int32_t id = 0; mName = name + "#" + std::to_string(id); mName = name + "#" + std::to_string(id); auto consumerName = mName + "(BLAST Consumer)" + std::to_string(id); auto consumerName = mName + "(BLAST Consumer)" + std::to_string(id); Loading @@ -157,7 +152,6 @@ BLASTBufferQueue::BLASTBufferQueue(const std::string& name) mBufferItemConsumer->setName(String8(consumerName.c_str())); mBufferItemConsumer->setName(String8(consumerName.c_str())); mBufferItemConsumer->setFrameAvailableListener(this); mBufferItemConsumer->setFrameAvailableListener(this); mBufferItemConsumer->setBufferFreedListener(this); mBufferItemConsumer->setBufferFreedListener(this); mBufferItemConsumer->setBlastBufferQueue(this); ComposerService::getComposerService()->getMaxAcquiredBufferCount(&mMaxAcquiredBuffers); ComposerService::getComposerService()->getMaxAcquiredBufferCount(&mMaxAcquiredBuffers); mBufferItemConsumer->setMaxAcquiredBufferCount(mMaxAcquiredBuffers); mBufferItemConsumer->setMaxAcquiredBufferCount(mMaxAcquiredBuffers); Loading @@ -174,7 +168,6 @@ BLASTBufferQueue::BLASTBufferQueue(const std::string& name, const sp<SurfaceCont } } BLASTBufferQueue::~BLASTBufferQueue() { BLASTBufferQueue::~BLASTBufferQueue() { mBufferItemConsumer->setBlastBufferQueue(nullptr); if (mPendingTransactions.empty()) { if (mPendingTransactions.empty()) { return; return; } } Loading Loading @@ -1025,7 +1018,6 @@ void BLASTBufferQueue::abandon() { mBufferItemConsumer->abandon(); mBufferItemConsumer->abandon(); mBufferItemConsumer->setFrameAvailableListener(nullptr); mBufferItemConsumer->setFrameAvailableListener(nullptr); mBufferItemConsumer->setBufferFreedListener(nullptr); mBufferItemConsumer->setBufferFreedListener(nullptr); mBufferItemConsumer->setBlastBufferQueue(nullptr); } } mBufferItemConsumer = nullptr; mBufferItemConsumer = nullptr; mConsumer = nullptr; mConsumer = nullptr; Loading
libs/gui/include/gui/BLASTBufferQueue.h +5 −6 Original line number Original line Diff line number Diff line Loading @@ -38,11 +38,11 @@ class BufferItemConsumer; class BLASTBufferItemConsumer : public BufferItemConsumer { class BLASTBufferItemConsumer : public BufferItemConsumer { public: public: BLASTBufferItemConsumer(const sp<IGraphicBufferConsumer>& consumer, uint64_t consumerUsage, BLASTBufferItemConsumer(const sp<IGraphicBufferConsumer>& consumer, uint64_t consumerUsage, int bufferCount, bool controlledByApp) int bufferCount, bool controlledByApp, wp<BLASTBufferQueue> bbq) : BufferItemConsumer(consumer, consumerUsage, bufferCount, controlledByApp), : BufferItemConsumer(consumer, consumerUsage, bufferCount, controlledByApp), mBLASTBufferQueue(std::move(bbq)), mCurrentlyConnected(false), mCurrentlyConnected(false), mPreviouslyConnected(false), mPreviouslyConnected(false) {} mBLASTBufferQueue(nullptr) {} void onDisconnect() override; void onDisconnect() override; void addAndGetFrameTimestamps(const NewFrameEventsEntry* newTimestamps, void addAndGetFrameTimestamps(const NewFrameEventsEntry* newTimestamps, Loading @@ -53,21 +53,20 @@ public: CompositorTiming compositorTiming, nsecs_t latchTime, CompositorTiming compositorTiming, nsecs_t latchTime, nsecs_t dequeueReadyTime) REQUIRES(mMutex); nsecs_t dequeueReadyTime) REQUIRES(mMutex); void getConnectionEvents(uint64_t frameNumber, bool* needsDisconnect); void getConnectionEvents(uint64_t frameNumber, bool* needsDisconnect); void setBlastBufferQueue(BLASTBufferQueue* blastbufferqueue) REQUIRES(mMutex); protected: protected: void onSidebandStreamChanged() override REQUIRES(mMutex); void onSidebandStreamChanged() override REQUIRES(mMutex); private: private: const wp<BLASTBufferQueue> mBLASTBufferQueue; uint64_t mCurrentFrameNumber = 0; uint64_t mCurrentFrameNumber = 0; Mutex mMutex; Mutex mMutex; std::mutex mBufferQueueMutex; ConsumerFrameEventHistory mFrameEventHistory GUARDED_BY(mMutex); ConsumerFrameEventHistory mFrameEventHistory GUARDED_BY(mMutex); std::queue<uint64_t> mDisconnectEvents GUARDED_BY(mMutex); std::queue<uint64_t> mDisconnectEvents GUARDED_BY(mMutex); bool mCurrentlyConnected GUARDED_BY(mMutex); bool mCurrentlyConnected GUARDED_BY(mMutex); bool mPreviouslyConnected GUARDED_BY(mMutex); bool mPreviouslyConnected GUARDED_BY(mMutex); BLASTBufferQueue* mBLASTBufferQueue GUARDED_BY(mBufferQueueMutex); }; }; class BLASTBufferQueue class BLASTBufferQueue Loading