diff --git a/cas/1.0/default/FactoryLoader.h b/cas/1.0/default/FactoryLoader.h index 943f761033..18c2186dcb 100644 --- a/cas/1.0/default/FactoryLoader.h +++ b/cas/1.0/default/FactoryLoader.h @@ -45,9 +45,9 @@ public: sp *library = NULL, T** factory = NULL); - bool enumeratePlugins(hidl_vec* results); + bool enumeratePlugins(vector* results); - private: +private: typedef T*(*CreateFactoryFunc)(); Mutex mMapLock; @@ -63,7 +63,9 @@ public: sp *library, T** factory); - bool queryPluginsFromPath(const String8& path, hidl_vec* results); + bool queryPluginsFromPath( + const String8 &path, + vector* results); bool openFactory(const String8 &path); void closeFactory(); @@ -119,9 +121,12 @@ bool FactoryLoader::findFactoryForScheme( } template -bool FactoryLoader::enumeratePlugins(hidl_vec* results) { +bool FactoryLoader::enumeratePlugins( + vector* results) { ALOGI("enumeratePlugins"); + results->clear(); + String8 dirPath("/vendor/lib/mediacas"); DIR* pDir = opendir(dirPath.string()); @@ -163,8 +168,8 @@ bool FactoryLoader::loadFactoryForSchemeFromPath( } template -bool FactoryLoader::queryPluginsFromPath(const String8& path, - hidl_vec* results) { +bool FactoryLoader::queryPluginsFromPath( + const String8 &path, vector* results) { closeFactory(); vector descriptors; @@ -173,19 +178,11 @@ bool FactoryLoader::queryPluginsFromPath(const String8& path, return false; } - results->resize(descriptors.size()); - - if (results->size() >= SIZE_MAX / sizeof(HidlCasPluginDescriptor)) { - return false; + for (auto it = descriptors.begin(); it != descriptors.end(); it++) { + results->push_back( HidlCasPluginDescriptor { + .caSystemId = it->CA_system_id, + .name = it->name.c_str()}); } - memset(results->data(), 0, results->size() * sizeof(HidlCasPluginDescriptor)); - - for (size_t i = 0; i < results->size(); i++) { - HidlCasPluginDescriptor& descriptor = (*results)[i]; - descriptor.caSystemId = descriptors[i].CA_system_id; - descriptor.name = descriptors[i].name.c_str(); - } - return true; } diff --git a/cas/1.0/default/MediaCasService.cpp b/cas/1.0/default/MediaCasService.cpp index b159f5b918..dbdd0087db 100644 --- a/cas/1.0/default/MediaCasService.cpp +++ b/cas/1.0/default/MediaCasService.cpp @@ -44,7 +44,7 @@ Return MediaCasService::enumeratePlugins(enumeratePlugins_cb _hidl_cb) { ALOGV("%s", __FUNCTION__); - hidl_vec results; + vector results; mCasLoader.enumeratePlugins(&results); _hidl_cb(results); diff --git a/cas/1.1/default/FactoryLoader.h b/cas/1.1/default/FactoryLoader.h index 862d5570e6..c4a48e2852 100644 --- a/cas/1.1/default/FactoryLoader.h +++ b/cas/1.1/default/FactoryLoader.h @@ -44,9 +44,9 @@ class FactoryLoader { bool findFactoryForScheme(int32_t CA_system_id, sp* library = NULL, T** factory = NULL); - bool enumeratePlugins(hidl_vec* results); + bool enumeratePlugins(vector* results); - private: + private: typedef T* (*CreateFactoryFunc)(); Mutex mMapLock; @@ -59,7 +59,7 @@ class FactoryLoader { bool loadFactoryForSchemeFromPath(const String8& path, int32_t CA_system_id, sp* library, T** factory); - bool queryPluginsFromPath(const String8& path, hidl_vec* results); + bool queryPluginsFromPath(const String8& path, vector* results); bool openFactory(const String8& path); void closeFactory(); @@ -113,9 +113,11 @@ bool FactoryLoader::findFactoryForScheme(int32_t CA_system_id, sp -bool FactoryLoader::enumeratePlugins(hidl_vec* results) { +bool FactoryLoader::enumeratePlugins(vector* results) { ALOGI("enumeratePlugins"); + results->clear(); + String8 dirPath("/vendor/lib/mediacas"); DIR* pDir = opendir(dirPath.string()); @@ -157,7 +159,7 @@ bool FactoryLoader::loadFactoryForSchemeFromPath(const String8& path, int32_t template bool FactoryLoader::queryPluginsFromPath(const String8& path, - hidl_vec* results) { + vector* results) { closeFactory(); vector descriptors; @@ -166,19 +168,10 @@ bool FactoryLoader::queryPluginsFromPath(const String8& path, return false; } - results->resize(descriptors.size()); - - if (results->size() >= SIZE_MAX / sizeof(HidlCasPluginDescriptor)) { - return false; + for (auto it = descriptors.begin(); it != descriptors.end(); it++) { + results->push_back( + HidlCasPluginDescriptor{.caSystemId = it->CA_system_id, .name = it->name.c_str()}); } - memset(results->data(), 0, results->size() * sizeof(HidlCasPluginDescriptor)); - - for (size_t i = 0; i < results->size(); i++) { - HidlCasPluginDescriptor& descriptor = (*results)[i]; - descriptor.caSystemId = descriptors[i].CA_system_id; - descriptor.name = descriptors[i].name.c_str(); - } - return true; } diff --git a/cas/1.1/default/MediaCasService.cpp b/cas/1.1/default/MediaCasService.cpp index 122c53f6fe..eb3fa6b599 100644 --- a/cas/1.1/default/MediaCasService.cpp +++ b/cas/1.1/default/MediaCasService.cpp @@ -68,7 +68,7 @@ MediaCasService::~MediaCasService() {} Return MediaCasService::enumeratePlugins(enumeratePlugins_cb _hidl_cb) { ALOGV("%s", __FUNCTION__); - hidl_vec results; + vector results; mCasLoader.enumeratePlugins(&results); _hidl_cb(results);