Merge "Fix order of hidl unlinkToDeath."
This commit is contained in:
@@ -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() {
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user