MediaUtils: Create singleton UidInfo
A singleton optimizes for multiple calling sites, and
the info is contained in a shared pointer to avoid copying.
Test: adb shell dumpsys media.audio_flinger / media.metrics
Bug: 350114693
Flag: EXEMPT bugfix
Change-Id: I5578e49e61145812ea0378752cea485cbb5b57d8
diff --git a/services/audioflinger/AudioFlinger.cpp b/services/audioflinger/AudioFlinger.cpp
index 37fc1fc..fa7ac41 100644
--- a/services/audioflinger/AudioFlinger.cpp
+++ b/services/audioflinger/AudioFlinger.cpp
@@ -754,17 +754,19 @@
for (size_t i = 0; i < mNotificationClients.size(); ++i) {
const pid_t pid = mNotificationClients[i]->getPid();
const uid_t uid = mNotificationClients[i]->getUid();
- const mediautils::UidInfo::Info info = mUidInfo.getInfo(uid);
- result.appendFormat("%6d %6u %s\n", pid, uid, info.package.c_str());
+ const std::shared_ptr<const mediautils::UidInfo::Info> info =
+ mediautils::UidInfo::getInfo(uid);
+ result.appendFormat("%6d %6u %s\n", pid, uid, info->package.c_str());
}
result.append("Global session refs:\n");
result.append(" session cnt pid uid name\n");
for (size_t i = 0; i < mAudioSessionRefs.size(); i++) {
AudioSessionRef *r = mAudioSessionRefs[i];
- const mediautils::UidInfo::Info info = mUidInfo.getInfo(r->mUid);
+ const std::shared_ptr<const mediautils::UidInfo::Info> info =
+ mediautils::UidInfo::getInfo(r->mUid);
result.appendFormat(" %7d %4d %7d %6u %s\n", r->mSessionid, r->mCnt, r->mPid,
- r->mUid, info.package.c_str());
+ r->mUid, info->package.c_str());
}
write(fd, result.c_str(), result.size());
}