Callback elision for HIDL interfaces.
Test: mma
Bug: 31380743
Change-Id: I33080b61d6233b63106b2602a628bfcdaa878a90
diff --git a/cmds/atrace/atrace.cpp b/cmds/atrace/atrace.cpp
index d99084b..af5380c 100644
--- a/cmds/atrace/atrace.cpp
+++ b/cmds/atrace/atrace.cpp
@@ -514,8 +514,10 @@
// their system properties.
static void pokeHalServices()
{
+ using ::android::hidl::base::V1_0::IBase;
using ::android::hidl::manager::V1_0::IServiceManager;
using ::android::hardware::hidl_string;
+ using ::android::hardware::Return;
sp<IServiceManager> sm = ::android::hardware::defaultServiceManager();
@@ -532,18 +534,19 @@
continue;
hidl_string fqInterfaceName = fqInstanceName.substr(0, n);
hidl_string instanceName = fqInstanceName.substr(n+1, std::string::npos);
- auto getRet = sm->get(fqInterfaceName, instanceName, [&](const auto &interface) {
- auto notifyRet = interface->notifySyspropsChanged();
- if (!notifyRet.isOk()) {
- fprintf(stderr, "failed to notifySyspropsChanged on service %s: %s\n",
- fqInstanceName.c_str(),
- notifyRet.description().c_str());
- }
- });
- if (!getRet.isOk()) {
+ Return<sp<IBase>> interfaceRet = sm->get(fqInterfaceName, instanceName);
+ if (!interfaceRet.isOk()) {
fprintf(stderr, "failed to get service %s: %s\n",
fqInstanceName.c_str(),
- getRet.description().c_str());
+ interfaceRet.description().c_str());
+ continue;
+ }
+ sp<IBase> interface = interfaceRet;
+ auto notifyRet = interface->notifySyspropsChanged();
+ if (!notifyRet.isOk()) {
+ fprintf(stderr, "failed to notifySyspropsChanged on service %s: %s\n",
+ fqInstanceName.c_str(),
+ notifyRet.description().c_str());
}
}
});