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

Commit e1dcef20 authored by Steven Moreland's avatar Steven Moreland Committed by android-build-merger
Browse files

Merge "binder: Bp: clear DRs in onLastStrongRef"

am: 6c151787

Change-Id: I84c5b9fab8d1c22f1ad479b990f3b36b039ecb99
parents 80e1e6de 6c151787
Loading
Loading
Loading
Loading
+19 −15
Original line number Diff line number Diff line
@@ -387,21 +387,6 @@ BpBinder::~BpBinder()
        }
    }

    mLock.lock();
    Vector<Obituary>* obits = mObituaries;
    if(obits != nullptr) {
        if (ipc) ipc->clearDeathNotification(mHandle, this);
        mObituaries = nullptr;
    }
    mLock.unlock();

    if (obits != nullptr) {
        // XXX Should we tell any remaining DeathRecipient
        // objects that the last strong ref has gone away, so they
        // are no longer linked?
        delete obits;
    }

    if (ipc) {
        ipc->expungeHandle(mHandle, this);
        ipc->decWeakHandle(mHandle);
@@ -423,6 +408,25 @@ void BpBinder::onLastStrongRef(const void* /*id*/)
    }
    IPCThreadState* ipc = IPCThreadState::self();
    if (ipc) ipc->decStrongHandle(mHandle);

    mLock.lock();
    Vector<Obituary>* obits = mObituaries;
    if(obits != nullptr) {
        if (!obits->isEmpty()) {
            ALOGI("onLastStrongRef automatically unlinking death recipients");
        }

        if (ipc) ipc->clearDeathNotification(mHandle, this);
        mObituaries = nullptr;
    }
    mLock.unlock();

    if (obits != nullptr) {
        // XXX Should we tell any remaining DeathRecipient
        // objects that the last strong ref has gone away, so they
        // are no longer linked?
        delete obits;
    }
}

bool BpBinder::onIncStrongAttempted(uint32_t /*flags*/, const void* /*id*/)