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

Commit 611a5459 authored by Praveen Chavan's avatar Praveen Chavan Committed by android-build-merger
Browse files

Omx: Fix codec instance leak if Observer dies am: 990bc6de

am: 0140b054

Change-Id: Ibcc916d72d516dad391c89c8597225a54e622856
parents b896efdc 0140b054
Loading
Loading
Loading
Loading
+13 −17
Original line number Diff line number Diff line
@@ -180,27 +180,23 @@ status_t Omx::freeNode(sp<OMXNodeInstance> const& instance) {
        return OK;
    }

    wp<IBase> observer;
    {
        Mutex::Autolock autoLock(mLock);
        ssize_t observerIndex = mNode2Observer.indexOfKey(instance.get());
        if (observerIndex < 0) {
            return OK;
        }
        observer = mNode2Observer.valueAt(observerIndex);
        if (observerIndex >= 0) {
            wp<IBase> observer = mNode2Observer.valueAt(observerIndex);
            ssize_t nodeIndex = mLiveNodes.indexOfKey(observer);
        if (nodeIndex < 0) {
            return OK;
        }
            if (nodeIndex >= 0) {
                mNode2Observer.removeItemsAt(observerIndex);
                mLiveNodes.removeItemsAt(nodeIndex);
    }

    {
                sp<IBase> sObserver = observer.promote();
                if (sObserver != nullptr) {
                    sObserver->unlinkToDeath(this);
                }
            } else {
                LOG(WARNING) << "Inconsistent observer record";
            }
        }
    }

    OMX_ERRORTYPE err = OMX_ErrorNone;