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

Commit 720d797c authored by Steven Moreland's avatar Steven Moreland Committed by Gerrit Code Review
Browse files

Merge "Fix order of hidl unlinkToDeath."

parents 894d8cf4 90a98688
Loading
Loading
Loading
Loading
+6 −6
Original line number Diff line number Diff line
@@ -189,8 +189,7 @@ void HwBinderDeathRecipientList::add(const sp<HwBinderDeathRecipient>& recipient
void HwBinderDeathRecipientList::remove(const sp<HwBinderDeathRecipient>& recipient) {
    AutoMutex _l(mLock);

    List< sp<HwBinderDeathRecipient> >::iterator iter;
    for (iter = mList.begin(); iter != mList.end(); iter++) {
    for (auto iter = mList.begin(); iter != mList.end(); iter++) {
        if (*iter == recipient) {
            mList.erase(iter);
            return;
@@ -201,12 +200,13 @@ void HwBinderDeathRecipientList::remove(const sp<HwBinderDeathRecipient>& recipi
sp<HwBinderDeathRecipient> HwBinderDeathRecipientList::find(jobject recipient) {
    AutoMutex _l(mLock);

    for (const sp<HwBinderDeathRecipient>& deathRecipient : mList) {
        if (deathRecipient->matches(recipient)) {
            return deathRecipient;
    for(auto iter = mList.rbegin(); iter != mList.rend(); iter++) {
        if ((*iter)->matches(recipient)) {
            return (*iter);
        }
    }
    return NULL;

    return nullptr;
}

Mutex& HwBinderDeathRecipientList::lock() {
+4 −2
Original line number Diff line number Diff line
@@ -20,9 +20,9 @@
#include <android-base/macros.h>
#include <hwbinder/Binder.h>
#include <jni.h>
#include <utils/List.h>
#include <utils/Mutex.h>
#include <utils/RefBase.h>
#include <vector>

namespace android {

@@ -33,7 +33,7 @@ namespace android {
class HwBinderDeathRecipient;

class HwBinderDeathRecipientList : public RefBase {
    List< sp<HwBinderDeathRecipient> > mList;
    std::vector<sp<HwBinderDeathRecipient>> mList;
    Mutex mLock;

public:
@@ -42,6 +42,8 @@ public:

    void add(const sp<HwBinderDeathRecipient>& recipient);
    void remove(const sp<HwBinderDeathRecipient>& recipient);

    // finds the most recently added matching death recipient
    sp<HwBinderDeathRecipient> find(jobject recipient);

    Mutex& lock();  // Use with care; specifically for mutual exclusion during binder death