Loading media/libmedia/aidl/android/media/IResourceManagerService.aidl +0 −8 Original line number Diff line number Diff line Loading @@ -94,12 +94,4 @@ interface IResourceManagerService { * remove existing override on originalPid if newPid is -1. */ void overridePid(int originalPid, int newPid); /** * Mark a client for pending removal * * @param pid pid from which the client's resources will be removed. * @param clientId clientId within the pid that will be removed. */ void markClientForPendingRemoval(int pid, long clientId); } media/libstagefright/MediaCodec.cpp +1 −26 Original line number Diff line number Diff line Loading @@ -199,7 +199,6 @@ struct MediaCodec::ResourceManagerServiceProxy : public RefBase { void addResource(const MediaResourceParcel &resource); void removeResource(const MediaResourceParcel &resource); void removeClient(); void markClientForPendingRemoval(); bool reclaimResource(const std::vector<MediaResourceParcel> &resources); private: Loading Loading @@ -281,14 +280,6 @@ void MediaCodec::ResourceManagerServiceProxy::removeClient() { mService->removeClient(mPid, getId(mClient)); } void MediaCodec::ResourceManagerServiceProxy::markClientForPendingRemoval() { Mutex::Autolock _l(mLock); if (mService == nullptr) { return; } mService->markClientForPendingRemoval(mPid, getId(mClient)); } bool MediaCodec::ResourceManagerServiceProxy::reclaimResource( const std::vector<MediaResourceParcel> &resources) { Mutex::Autolock _l(mLock); Loading Loading @@ -1441,13 +1432,7 @@ status_t MediaCodec::reclaim(bool force) { status_t MediaCodec::release() { sp<AMessage> msg = new AMessage(kWhatRelease, this); sp<AMessage> response; return PostAndAwaitResponse(msg, &response); } status_t MediaCodec::releaseAsync() { sp<AMessage> msg = new AMessage(kWhatRelease, this); msg->setInt32("async", 1); sp<AMessage> response; return PostAndAwaitResponse(msg, &response); } Loading Loading @@ -2615,9 +2600,7 @@ void MediaCodec::onMessageReceived(const sp<AMessage> &msg) { mResourceManagerProxy->removeClient(); if (mReplyID != nullptr) { (new AMessage)->postReply(mReplyID); } break; } Loading Loading @@ -3016,14 +2999,6 @@ void MediaCodec::onMessageReceived(const sp<AMessage> &msg) { pushBlankBuffersToNativeWindow(mSurface.get()); } int32_t async = 0; if (msg->findInt32("async", &async) && async) { mResourceManagerProxy->markClientForPendingRemoval(); handleSetSurface(NULL); (new AMessage)->postReply(mReplyID); mReplyID = 0; } break; } Loading media/libstagefright/include/media/stagefright/MediaCodec.h +0 −2 Original line number Diff line number Diff line Loading @@ -139,8 +139,6 @@ struct MediaCodec : public AHandler { // object. status_t release(); status_t releaseAsync(); status_t flush(); status_t queueInputBuffer( Loading services/mediaresourcemanager/ResourceManagerService.cpp +1 −42 Original line number Diff line number Diff line Loading @@ -114,7 +114,6 @@ static ResourceInfo& getResourceInfoForEdit( info.uid = uid; info.clientId = clientId; info.client = client; info.pendingRemoval = false; index = infos.add(clientId, info); } Loading Loading @@ -649,36 +648,6 @@ Status ResourceManagerService::overridePid( return Status::ok(); } Status ResourceManagerService::markClientForPendingRemoval(int32_t pid, int64_t clientId) { String8 log = String8::format( "markClientForPendingRemoval(pid %d, clientId %lld)", pid, (long long) clientId); mServiceLog->add(log); Mutex::Autolock lock(mLock); if (!mProcessInfo->isValidPid(pid)) { ALOGE("Rejected markClientForPendingRemoval call with invalid pid."); return Status::fromServiceSpecificError(BAD_VALUE); } ssize_t index = mMap.indexOfKey(pid); if (index < 0) { ALOGV("markClientForPendingRemoval: didn't find pid %d for clientId %lld", pid, (long long)clientId); return Status::ok(); } ResourceInfos &infos = mMap.editValueAt(index); index = infos.indexOfKey(clientId); if (index < 0) { ALOGV("markClientForPendingRemoval: didn't find clientId %lld", (long long) clientId); return Status::ok(); } ResourceInfo &info = infos.editValueAt(index); info.pendingRemoval = true; return Status::ok(); } bool ResourceManagerService::getPriority_l(int pid, int* priority) { int newPid = pid; Loading Loading @@ -724,12 +693,6 @@ bool ResourceManagerService::getLowestPriorityBiggestClient_l( int lowestPriorityPid; int lowestPriority; int callingPriority; // Before looking into other processes, check if we have clients marked for // pending removal in the same process. if (getBiggestClient_l(callingPid, type, client, true /* pendingRemovalOnly */)) { return true; } if (!getPriority_l(callingPid, &callingPriority)) { ALOGE("getLowestPriorityBiggestClient_l: can't get process priority for pid %d", callingPid); Loading Loading @@ -798,8 +761,7 @@ bool ResourceManagerService::isCallingPriorityHigher_l(int callingPid, int pid) } bool ResourceManagerService::getBiggestClient_l( int pid, MediaResource::Type type, std::shared_ptr<IResourceManagerClient> *client, bool pendingRemovalOnly) { int pid, MediaResource::Type type, std::shared_ptr<IResourceManagerClient> *client) { ssize_t index = mMap.indexOfKey(pid); if (index < 0) { ALOGE("getBiggestClient_l: can't find resource info for pid %d", pid); Loading @@ -811,9 +773,6 @@ bool ResourceManagerService::getBiggestClient_l( const ResourceInfos &infos = mMap.valueAt(index); for (size_t i = 0; i < infos.size(); ++i) { const ResourceList &resources = infos[i].resources; if (pendingRemovalOnly && !infos[i].pendingRemoval) { continue; } for (auto it = resources.begin(); it != resources.end(); it++) { const MediaResourceParcel &resource = it->second; if (resource.type == type) { Loading services/mediaresourcemanager/ResourceManagerService.h +1 −7 Original line number Diff line number Diff line Loading @@ -18,8 +18,6 @@ #ifndef ANDROID_MEDIA_RESOURCEMANAGERSERVICE_H #define ANDROID_MEDIA_RESOURCEMANAGERSERVICE_H #include <map> #include <aidl/android/media/BnResourceManagerService.h> #include <arpa/inet.h> #include <media/MediaResource.h> Loading Loading @@ -52,7 +50,6 @@ struct ResourceInfo { std::shared_ptr<IResourceManagerClient> client; sp<DeathNotifier> deathNotifier; ResourceList resources; bool pendingRemoval{false}; }; // TODO: convert these to std::map Loading Loading @@ -125,8 +122,6 @@ public: int originalPid, int newPid) override; Status markClientForPendingRemoval(int32_t pid, int64_t clientId) override; Status removeResource(int pid, int64_t clientId, bool checkValid); private: Loading @@ -151,8 +146,7 @@ private: // Gets the client who owns biggest piece of specified resource type from pid. // Returns false if failed. The client will remain unchanged if failed. bool getBiggestClient_l(int pid, MediaResource::Type type, std::shared_ptr<IResourceManagerClient> *client, bool pendingRemovalOnly = false); std::shared_ptr<IResourceManagerClient> *client); bool isCallingPriorityHigher_l(int callingPid, int pid); Loading Loading
media/libmedia/aidl/android/media/IResourceManagerService.aidl +0 −8 Original line number Diff line number Diff line Loading @@ -94,12 +94,4 @@ interface IResourceManagerService { * remove existing override on originalPid if newPid is -1. */ void overridePid(int originalPid, int newPid); /** * Mark a client for pending removal * * @param pid pid from which the client's resources will be removed. * @param clientId clientId within the pid that will be removed. */ void markClientForPendingRemoval(int pid, long clientId); }
media/libstagefright/MediaCodec.cpp +1 −26 Original line number Diff line number Diff line Loading @@ -199,7 +199,6 @@ struct MediaCodec::ResourceManagerServiceProxy : public RefBase { void addResource(const MediaResourceParcel &resource); void removeResource(const MediaResourceParcel &resource); void removeClient(); void markClientForPendingRemoval(); bool reclaimResource(const std::vector<MediaResourceParcel> &resources); private: Loading Loading @@ -281,14 +280,6 @@ void MediaCodec::ResourceManagerServiceProxy::removeClient() { mService->removeClient(mPid, getId(mClient)); } void MediaCodec::ResourceManagerServiceProxy::markClientForPendingRemoval() { Mutex::Autolock _l(mLock); if (mService == nullptr) { return; } mService->markClientForPendingRemoval(mPid, getId(mClient)); } bool MediaCodec::ResourceManagerServiceProxy::reclaimResource( const std::vector<MediaResourceParcel> &resources) { Mutex::Autolock _l(mLock); Loading Loading @@ -1441,13 +1432,7 @@ status_t MediaCodec::reclaim(bool force) { status_t MediaCodec::release() { sp<AMessage> msg = new AMessage(kWhatRelease, this); sp<AMessage> response; return PostAndAwaitResponse(msg, &response); } status_t MediaCodec::releaseAsync() { sp<AMessage> msg = new AMessage(kWhatRelease, this); msg->setInt32("async", 1); sp<AMessage> response; return PostAndAwaitResponse(msg, &response); } Loading Loading @@ -2615,9 +2600,7 @@ void MediaCodec::onMessageReceived(const sp<AMessage> &msg) { mResourceManagerProxy->removeClient(); if (mReplyID != nullptr) { (new AMessage)->postReply(mReplyID); } break; } Loading Loading @@ -3016,14 +2999,6 @@ void MediaCodec::onMessageReceived(const sp<AMessage> &msg) { pushBlankBuffersToNativeWindow(mSurface.get()); } int32_t async = 0; if (msg->findInt32("async", &async) && async) { mResourceManagerProxy->markClientForPendingRemoval(); handleSetSurface(NULL); (new AMessage)->postReply(mReplyID); mReplyID = 0; } break; } Loading
media/libstagefright/include/media/stagefright/MediaCodec.h +0 −2 Original line number Diff line number Diff line Loading @@ -139,8 +139,6 @@ struct MediaCodec : public AHandler { // object. status_t release(); status_t releaseAsync(); status_t flush(); status_t queueInputBuffer( Loading
services/mediaresourcemanager/ResourceManagerService.cpp +1 −42 Original line number Diff line number Diff line Loading @@ -114,7 +114,6 @@ static ResourceInfo& getResourceInfoForEdit( info.uid = uid; info.clientId = clientId; info.client = client; info.pendingRemoval = false; index = infos.add(clientId, info); } Loading Loading @@ -649,36 +648,6 @@ Status ResourceManagerService::overridePid( return Status::ok(); } Status ResourceManagerService::markClientForPendingRemoval(int32_t pid, int64_t clientId) { String8 log = String8::format( "markClientForPendingRemoval(pid %d, clientId %lld)", pid, (long long) clientId); mServiceLog->add(log); Mutex::Autolock lock(mLock); if (!mProcessInfo->isValidPid(pid)) { ALOGE("Rejected markClientForPendingRemoval call with invalid pid."); return Status::fromServiceSpecificError(BAD_VALUE); } ssize_t index = mMap.indexOfKey(pid); if (index < 0) { ALOGV("markClientForPendingRemoval: didn't find pid %d for clientId %lld", pid, (long long)clientId); return Status::ok(); } ResourceInfos &infos = mMap.editValueAt(index); index = infos.indexOfKey(clientId); if (index < 0) { ALOGV("markClientForPendingRemoval: didn't find clientId %lld", (long long) clientId); return Status::ok(); } ResourceInfo &info = infos.editValueAt(index); info.pendingRemoval = true; return Status::ok(); } bool ResourceManagerService::getPriority_l(int pid, int* priority) { int newPid = pid; Loading Loading @@ -724,12 +693,6 @@ bool ResourceManagerService::getLowestPriorityBiggestClient_l( int lowestPriorityPid; int lowestPriority; int callingPriority; // Before looking into other processes, check if we have clients marked for // pending removal in the same process. if (getBiggestClient_l(callingPid, type, client, true /* pendingRemovalOnly */)) { return true; } if (!getPriority_l(callingPid, &callingPriority)) { ALOGE("getLowestPriorityBiggestClient_l: can't get process priority for pid %d", callingPid); Loading Loading @@ -798,8 +761,7 @@ bool ResourceManagerService::isCallingPriorityHigher_l(int callingPid, int pid) } bool ResourceManagerService::getBiggestClient_l( int pid, MediaResource::Type type, std::shared_ptr<IResourceManagerClient> *client, bool pendingRemovalOnly) { int pid, MediaResource::Type type, std::shared_ptr<IResourceManagerClient> *client) { ssize_t index = mMap.indexOfKey(pid); if (index < 0) { ALOGE("getBiggestClient_l: can't find resource info for pid %d", pid); Loading @@ -811,9 +773,6 @@ bool ResourceManagerService::getBiggestClient_l( const ResourceInfos &infos = mMap.valueAt(index); for (size_t i = 0; i < infos.size(); ++i) { const ResourceList &resources = infos[i].resources; if (pendingRemovalOnly && !infos[i].pendingRemoval) { continue; } for (auto it = resources.begin(); it != resources.end(); it++) { const MediaResourceParcel &resource = it->second; if (resource.type == type) { Loading
services/mediaresourcemanager/ResourceManagerService.h +1 −7 Original line number Diff line number Diff line Loading @@ -18,8 +18,6 @@ #ifndef ANDROID_MEDIA_RESOURCEMANAGERSERVICE_H #define ANDROID_MEDIA_RESOURCEMANAGERSERVICE_H #include <map> #include <aidl/android/media/BnResourceManagerService.h> #include <arpa/inet.h> #include <media/MediaResource.h> Loading Loading @@ -52,7 +50,6 @@ struct ResourceInfo { std::shared_ptr<IResourceManagerClient> client; sp<DeathNotifier> deathNotifier; ResourceList resources; bool pendingRemoval{false}; }; // TODO: convert these to std::map Loading Loading @@ -125,8 +122,6 @@ public: int originalPid, int newPid) override; Status markClientForPendingRemoval(int32_t pid, int64_t clientId) override; Status removeResource(int pid, int64_t clientId, bool checkValid); private: Loading @@ -151,8 +146,7 @@ private: // Gets the client who owns biggest piece of specified resource type from pid. // Returns false if failed. The client will remain unchanged if failed. bool getBiggestClient_l(int pid, MediaResource::Type type, std::shared_ptr<IResourceManagerClient> *client, bool pendingRemovalOnly = false); std::shared_ptr<IResourceManagerClient> *client); bool isCallingPriorityHigher_l(int callingPid, int pid); Loading