summaryrefslogtreecommitdiffstats
path: root/media/libmedia/IOMX.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'media/libmedia/IOMX.cpp')
-rw-r--r--media/libmedia/IOMX.cpp24
1 files changed, 18 insertions, 6 deletions
diff --git a/media/libmedia/IOMX.cpp b/media/libmedia/IOMX.cpp
index 76a9e7d..b43e48f 100644
--- a/media/libmedia/IOMX.cpp
+++ b/media/libmedia/IOMX.cpp
@@ -75,7 +75,7 @@ public:
: BpInterface<IOMX>(impl) {
}
- virtual status_t listNodes(List<String8> *list) {
+ virtual status_t listNodes(List<ComponentInfo> *list) {
list->clear();
Parcel data, reply;
@@ -84,9 +84,14 @@ public:
int32_t n = reply.readInt32();
for (int32_t i = 0; i < n; ++i) {
- String8 s = reply.readString8();
+ list->push_back(ComponentInfo());
+ ComponentInfo &info = *--list->end();
- list->push_back(s);
+ info.mName = reply.readString8();
+ int32_t numRoles = reply.readInt32();
+ for (int32_t j = 0; j < numRoles; ++j) {
+ info.mRoles.push_back(reply.readString8());
+ }
}
return OK;
@@ -368,13 +373,20 @@ status_t BnOMX::onTransact(
{
CHECK_INTERFACE(IOMX, data, reply);
- List<String8> list;
+ List<ComponentInfo> list;
listNodes(&list);
reply->writeInt32(list.size());
- for (List<String8>::iterator it = list.begin();
+ for (List<ComponentInfo>::iterator it = list.begin();
it != list.end(); ++it) {
- reply->writeString8(*it);
+ ComponentInfo &cur = *it;
+
+ reply->writeString8(cur.mName);
+ reply->writeInt32(cur.mRoles.size());
+ for (List<String8>::iterator role_it = cur.mRoles.begin();
+ role_it != cur.mRoles.end(); ++role_it) {
+ reply->writeString8(*role_it);
+ }
}
return NO_ERROR;