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

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

Merge "binder: Bp: clear DRs in onLastStrongRef" am: 6c151787

am: e1dcef20

Change-Id: I18a0c110bd3f48d13f0d34e099e7215b93d6286f
parents c22c5994 e1dcef20
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*/)