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

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

media: further resource cleanup for async release

Bug: 158158088
Test: atest CtsMediaTestCases:MediaCodecCapabilitiesTest#testGetMaxSupportedInstances
Test: atest CtsMediaTestCases -- --module-arg CtsMediaTestCases:size:small
Change-Id: Ie8ab527516836624837c96fa4fdae4dcffe18f43
parent 77542c73
Loading
Loading
Loading
Loading
+12 −4
Original line number Diff line number Diff line
@@ -233,10 +233,12 @@ void JMediaCodec::release() {
}

void JMediaCodec::releaseAsync() {
    std::call_once(mAsyncReleaseFlag, [this] {
        if (mCodec != NULL) {
        mCodec->releaseAsync();
            mCodec->releaseAsync(new AMessage(kWhatAsyncReleaseComplete, this));
        }
        mInitStatus = NO_INIT;
    });
}

JMediaCodec::~JMediaCodec() {
@@ -1084,6 +1086,12 @@ void JMediaCodec::onMessageReceived(const sp<AMessage> &msg) {
            handleFrameRenderedNotification(msg);
            break;
        }
        case kWhatAsyncReleaseComplete:
        {
            mCodec.clear();
            mLooper->stop();
            break;
        }
        default:
            TRESPASS();
    }
+2 −0
Original line number Diff line number Diff line
@@ -173,6 +173,7 @@ private:
    enum {
        kWhatCallbackNotify,
        kWhatFrameRendered,
        kWhatAsyncReleaseComplete,
    };

    jclass mClass;
@@ -185,6 +186,7 @@ private:
    bool mGraphicOutput{false};
    bool mHasCryptoOrDescrambler{false};
    std::once_flag mReleaseFlag;
    std::once_flag mAsyncReleaseFlag;

    sp<AMessage> mCallbackNotification;
    sp<AMessage> mOnFrameRenderedNotification;