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

Commit a992b581 authored by Wonsik Kim's avatar Wonsik Kim
Browse files

ACodec: CodecObserver to always have mNotify set

Bug: 123385269
Test: atest CtsMediaTestCases -- --module-arg CtsMediaTestCases:size:small
Change-Id: I6ed41102e76c7e857705fc2e1785c9fed706be54
parent 8b0e6fa0
Loading
Loading
Loading
Loading
+7 −12
Original line number Original line Diff line number Diff line
@@ -171,11 +171,7 @@ static sp<DataConverter> getCopyConverter() {
}
}


struct CodecObserver : public BnOMXObserver {
struct CodecObserver : public BnOMXObserver {
    CodecObserver() {}
    explicit CodecObserver(const sp<AMessage> &msg) : mNotify(msg) {}

    void setNotificationMessage(const sp<AMessage> &msg) {
        mNotify = msg;
    }


    // from IOMXObserver
    // from IOMXObserver
    virtual void onMessages(const std::list<omx_message> &messages) {
    virtual void onMessages(const std::list<omx_message> &messages) {
@@ -251,7 +247,7 @@ protected:
    virtual ~CodecObserver() {}
    virtual ~CodecObserver() {}


private:
private:
    sp<AMessage> mNotify;
    const sp<AMessage> mNotify;


    DISALLOW_EVIL_CONSTRUCTORS(CodecObserver);
    DISALLOW_EVIL_CONSTRUCTORS(CodecObserver);
};
};
@@ -6629,7 +6625,8 @@ bool ACodec::UninitializedState::onAllocateComponent(const sp<AMessage> &msg) {


    CHECK(mCodec->mOMXNode == NULL);
    CHECK(mCodec->mOMXNode == NULL);


    sp<AMessage> notify = new AMessage(kWhatOMXDied, mCodec);
    sp<AMessage> notify = new AMessage(kWhatOMXMessageList, mCodec);
    notify->setInt32("generation", mCodec->mNodeGeneration + 1);


    sp<RefBase> obj;
    sp<RefBase> obj;
    CHECK(msg->findObject("codecInfo", &obj));
    CHECK(msg->findObject("codecInfo", &obj));
@@ -6644,7 +6641,7 @@ bool ACodec::UninitializedState::onAllocateComponent(const sp<AMessage> &msg) {
    AString componentName;
    AString componentName;
    CHECK(msg->findString("componentName", &componentName));
    CHECK(msg->findString("componentName", &componentName));


    sp<CodecObserver> observer = new CodecObserver;
    sp<CodecObserver> observer = new CodecObserver(notify);
    sp<IOMX> omx;
    sp<IOMX> omx;
    sp<IOMXNode> omxNode;
    sp<IOMXNode> omxNode;


@@ -6675,9 +6672,7 @@ bool ACodec::UninitializedState::onAllocateComponent(const sp<AMessage> &msg) {
        mDeathNotifier.clear();
        mDeathNotifier.clear();
    }
    }


    notify = new AMessage(kWhatOMXMessageList, mCodec);
    ++mCodec->mNodeGeneration;
    notify->setInt32("generation", ++mCodec->mNodeGeneration);
    observer->setNotificationMessage(notify);


    mCodec->mComponentName = componentName;
    mCodec->mComponentName = componentName;
    mCodec->mRenderTracker.setComponentName(componentName);
    mCodec->mRenderTracker.setComponentName(componentName);
@@ -8572,7 +8567,7 @@ status_t ACodec::queryCapabilities(
    }
    }


    sp<IOMX> omx = client.interface();
    sp<IOMX> omx = client.interface();
    sp<CodecObserver> observer = new CodecObserver;
    sp<CodecObserver> observer = new CodecObserver(new AMessage);
    sp<IOMXNode> omxNode;
    sp<IOMXNode> omxNode;


    err = omx->allocateNode(name, observer, &omxNode);
    err = omx->allocateNode(name, observer, &omxNode);