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

Commit f8230032 authored by Dichen Zhang's avatar Dichen Zhang
Browse files

Fix grid HEIF decoding bug

Root cause is retriever being cleared before usage.

Bug: b/259187246
Test: (1) CTS AImageDecoderTest, (2) displaying grid HEIF image on
device

Change-Id: I2b23445569923e1065e1bd72c7062e700e7ecab5
parent a37901b1
Loading
Loading
Loading
Loading
+10 −2
Original line number Diff line number Diff line
@@ -518,7 +518,6 @@ bool HeifDecoderImpl::decodeAsync() {
    {
        Mutex::Autolock _l(mRetrieverLock);
        weakRetriever = mRetriever;
        mRetriever.clear();
    }

    for (size_t i = 1; i < mNumSlices; i++) {
@@ -551,6 +550,12 @@ bool HeifDecoderImpl::decodeAsync() {
        }
    }
    // Hold on to mDataSource in case the client wants to redecode.

    {
        Mutex::Autolock _l(mRetrieverLock);
        mRetriever.clear();
    }

    return false;
}

@@ -660,7 +665,10 @@ bool HeifDecoderImpl::decode(HeifFrameInfo* frameInfo) {
    mFrameDecoded = true;

    // Aggressively clear to avoid holding on to resources
    {
        Mutex::Autolock _l(mRetrieverLock);
        mRetriever.clear();
    }

    // Hold on to mDataSource in case the client wants to redecode.
    return true;