summaryrefslogtreecommitdiffstats
path: root/services/mediaresourcemanager/ResourceManagerService.cpp
diff options
context:
space:
mode:
authorRonghua Wu <ronghuawu@google.com>2015-07-15 12:23:48 -0700
committerRonghua Wu <ronghuawu@google.com>2015-07-17 10:19:21 -0700
commit37c8924c508a7c9b8bd3c8ce80fc005070531902 (patch)
tree0ed47e0ceb97bcdf6169e1189f0f555b6c2bd89c /services/mediaresourcemanager/ResourceManagerService.cpp
parent495151d3f4c5f92f1d162efb32b636521c105df5 (diff)
downloadframeworks_av-37c8924c508a7c9b8bd3c8ce80fc005070531902.zip
frameworks_av-37c8924c508a7c9b8bd3c8ce80fc005070531902.tar.gz
frameworks_av-37c8924c508a7c9b8bd3c8ce80fc005070531902.tar.bz2
mediaresourcemanager: add pid to removeResource method
Bug: 22496209 Change-Id: I73311573e8d1ac15fec668a9ef6e6af7a07a1d30
Diffstat (limited to 'services/mediaresourcemanager/ResourceManagerService.cpp')
-rw-r--r--services/mediaresourcemanager/ResourceManagerService.cpp27
1 files changed, 14 insertions, 13 deletions
diff --git a/services/mediaresourcemanager/ResourceManagerService.cpp b/services/mediaresourcemanager/ResourceManagerService.cpp
index 61147ff..e54cc5a 100644
--- a/services/mediaresourcemanager/ResourceManagerService.cpp
+++ b/services/mediaresourcemanager/ResourceManagerService.cpp
@@ -179,23 +179,24 @@ void ResourceManagerService::addResource(
info.resources.appendVector(resources);
}
-void ResourceManagerService::removeResource(int64_t clientId) {
- String8 log = String8::format("removeResource(%lld)", (long long) clientId);
+void ResourceManagerService::removeResource(int pid, int64_t clientId) {
+ String8 log = String8::format(
+ "removeResource(pid %d, clientId %lld)",
+ pid, (long long) clientId);
mServiceLog->add(log);
Mutex::Autolock lock(mLock);
+ ssize_t index = mMap.indexOfKey(pid);
+ if (index < 0) {
+ ALOGV("removeResource: didn't find pid %d for clientId %lld", pid, (long long) clientId);
+ return;
+ }
bool found = false;
- for (size_t i = 0; i < mMap.size(); ++i) {
- ResourceInfos &infos = mMap.editValueAt(i);
- for (size_t j = 0; j < infos.size();) {
- if (infos[j].clientId == clientId) {
- j = infos.removeAt(j);
- found = true;
- } else {
- ++j;
- }
- }
- if (found) {
+ ResourceInfos &infos = mMap.editValueAt(index);
+ for (size_t j = 0; j < infos.size(); ++j) {
+ if (infos[j].clientId == clientId) {
+ j = infos.removeAt(j);
+ found = true;
break;
}
}