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

Commit dd263072 authored by Jay Patel's avatar Jay Patel Committed by Automerger Merge Worker
Browse files

Merge "Fix stuck while disconnecting chromecast" am: 54af4197

Original change: https://android-review.googlesource.com/c/platform/frameworks/av/+/1580283

MUST ONLY BE SUBMITTED BY AUTOMERGER

Change-Id: Ie7e0e9ced0ccc985cbb380e6b83851fb04ba63d4
parents 50cd8496 54af4197
Loading
Loading
Loading
Loading
+15 −2
Original line number Diff line number Diff line
@@ -321,11 +321,24 @@ public:
        BufferQueue::createBufferQueue(&mProducer, &mConsumer);
        mSurface = new Surface(mProducer, false /* controlledByApp */);
        struct ConsumerListener : public BnConsumerListener {
            void onFrameAvailable(const BufferItem&) override {}
            ConsumerListener(const sp<IGraphicBufferConsumer> &consumer) {
                mConsumer = consumer;
            }
            void onFrameAvailable(const BufferItem&) override {
                BufferItem buffer;
                // consume buffer
                sp<IGraphicBufferConsumer> consumer = mConsumer.promote();
                if (consumer != nullptr && consumer->acquireBuffer(&buffer, 0) == NO_ERROR) {
                    consumer->releaseBuffer(buffer.mSlot, buffer.mFrameNumber,
                                            EGL_NO_DISPLAY, EGL_NO_SYNC_KHR, buffer.mFence);
                }
            }

            wp<IGraphicBufferConsumer> mConsumer;
            void onBuffersReleased() override {}
            void onSidebandStreamChanged() override {}
        };
        sp<ConsumerListener> listener{new ConsumerListener};
        sp<ConsumerListener> listener{new ConsumerListener(mConsumer)};
        mConsumer->consumerConnect(listener, false);
        mConsumer->setConsumerName(String8{"MediaCodec.release"});
        mConsumer->setConsumerUsageBits(usage);