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

Commit d677162f authored by android-build-team Robot's avatar android-build-team Robot
Browse files

Merge cherrypicks of [13231586, 13231437, 13231588, 13230397, 13230399,...

Merge cherrypicks of [13231586, 13231437, 13231588, 13230397, 13230399, 13231350, 13231351, 13231354, 13231356, 13231439, 13231441, 13231358, 13231443, 13231360, 13231030, 13231457, 13230243, 13231032, 13231725, 13230838, 13231034, 13230840, 13230842, 13231361, 13231363, 13231745, 13231458, 13231747, 13231749, 13231751, 13229580, 13229582, 13231589, 13231591, 13231764, 13230400, 13230402, 13231784, 13231786, 13231788, 13231790] into rvc-qpr1-release

Change-Id: I41a47ef6ed622f909adbae3241ddb9d58cc5e49b
parents 25710af9 5fe4a516
Loading
Loading
Loading
Loading
+7 −2
Original line number Diff line number Diff line
@@ -314,7 +314,7 @@ MediaCodec::BufferInfo::BufferInfo() : mOwnedByClient(false) {}

class MediaCodec::ReleaseSurface {
public:
    ReleaseSurface() {
    explicit ReleaseSurface(uint64_t usage) {
        BufferQueue::createBufferQueue(&mProducer, &mConsumer);
        mSurface = new Surface(mProducer, false /* controlledByApp */);
        struct ConsumerListener : public BnConsumerListener {
@@ -325,6 +325,7 @@ public:
        sp<ConsumerListener> listener{new ConsumerListener};
        mConsumer->consumerConnect(listener, false);
        mConsumer->setConsumerName(String8{"MediaCodec.release"});
        mConsumer->setConsumerUsageBits(usage);
    }

    const sp<Surface> &getSurface() {
@@ -3001,7 +3002,11 @@ void MediaCodec::onMessageReceived(const sp<AMessage> &msg) {
            if (msg->findMessage("async", &asyncNotify) && asyncNotify != nullptr) {
                if (mSurface != NULL) {
                    if (!mReleaseSurface) {
                        mReleaseSurface.reset(new ReleaseSurface);
                        uint64_t usage = 0;
                        if (mSurface->getConsumerUsage(&usage) != OK) {
                            usage = 0;
                        }
                        mReleaseSurface.reset(new ReleaseSurface(usage));
                    }
                    if (mSurface != mReleaseSurface->getSurface()) {
                        status_t err = connectToSurface(mReleaseSurface->getSurface());