Do not create Codec2Client when IConfigurable is not accessible
Bug: 247689681
Change-Id: Ie3c0130a7682b3b091bdc882324ee93258221228
Merged-In: Ie3c0130a7682b3b091bdc882324ee93258221228
diff --git a/media/codec2/hal/client/client.cpp b/media/codec2/hal/client/client.cpp
index 01fc593..eb3b936 100644
--- a/media/codec2/hal/client/client.cpp
+++ b/media/codec2/hal/client/client.cpp
@@ -770,16 +770,9 @@
// Codec2Client
Codec2Client::Codec2Client(sp<Base> const& base,
+ sp<c2_hidl::IConfigurable> const& configurable,
size_t serviceIndex)
- : Configurable{
- [base]() -> sp<c2_hidl::IConfigurable> {
- Return<sp<c2_hidl::IConfigurable>> transResult =
- base->getConfigurable();
- return transResult.isOk() ?
- static_cast<sp<c2_hidl::IConfigurable>>(transResult) :
- nullptr;
- }()
- },
+ : Configurable{configurable},
mBase1_0{base},
mBase1_1{Base1_1::castFrom(base)},
mBase1_2{Base1_2::castFrom(base)},
@@ -1163,7 +1156,11 @@
CHECK(baseStore) << "Codec2 service \"" << name << "\""
" inaccessible for unknown reasons.";
LOG(VERBOSE) << "Client to Codec2 service \"" << name << "\" created";
- return std::make_shared<Codec2Client>(baseStore, index);
+ Return<sp<IConfigurable>> transResult = baseStore->getConfigurable();
+ CHECK(transResult.isOk()) << "Codec2 service \"" << name << "\""
+ "does not have IConfigurable.";
+ sp<IConfigurable> configurable = static_cast<sp<IConfigurable>>(transResult);
+ return std::make_shared<Codec2Client>(baseStore, configurable, index);
}
c2_status_t Codec2Client::ForAllServices(