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

Commit 0d2b2d5e authored by Jason Sams's avatar Jason Sams
Browse files

Fix deadlock on RS teardown.

Change-Id: I34d2702b535e28e9519c7368fd8a942bfe0724bc
parent 9c25aee5
Loading
Loading
Loading
Loading
+3 −9
Original line number Diff line number Diff line
@@ -93,9 +93,8 @@ bool ObjectBase::checkDelete() const
        if (mRSC && mRSC->props.mLogObjects) {
            dumpLOGV("checkDelete");
        }
        delete this;

        unlockUserRef();
        delete this;
        return true;
    }
    return false;
@@ -170,9 +169,7 @@ void ObjectBase::add() const

void ObjectBase::remove() const
{
    // Should be within gObjectInitMutex lock
    // lock will be from checkDelete a few levels up in the stack.

    lockUserRef();
    //LOGV("calling remove  rsc %p", mRSC);
    if (!mRSC) {
        rsAssert(!mPrev);
@@ -191,12 +188,11 @@ void ObjectBase::remove() const
    }
    mPrev = NULL;
    mNext = NULL;
    unlockUserRef();
}

void ObjectBase::zeroAllUserRef(Context *rsc)
{
    lockUserRef();

    if (rsc->props.mLogObjects) {
        LOGV("Forcing release of all outstanding user refs.");
    }
@@ -219,8 +215,6 @@ void ObjectBase::zeroAllUserRef(Context *rsc)
        LOGV("Objects remaining.");
        dumpAll(rsc);
    }

    unlockUserRef();
}

void ObjectBase::dumpAll(Context *rsc)