Merge "Fix failure to load power HAL implementation" into oc-dev

This commit is contained in:
Connor O'Brien
2017-04-12 17:57:32 +00:00
committed by Android (Google) Code Review

View File

@@ -145,25 +145,27 @@ done:
}
IPower* HIDL_FETCH_IPower(const char* /* name */) {
int ret = 0;
const hw_module_t* hw_module = NULL;
power_module_t *power_module;
ret = hw_get_module(POWER_HARDWARE_MODULE_ID, &hw_module);
if (ret == 0 && hw_module->methods->open) {
ret = hw_module->methods->open(hw_module, POWER_HARDWARE_MODULE_ID,
reinterpret_cast<hw_device_t**>(&power_module));
if (ret == 0) {
return new Power(power_module);
}
else {
ALOGE("Passthrough failed to load legacy power HAL.");
const hw_module_t* hw_module = nullptr;
power_module_t* power_module = nullptr;
int err = hw_get_module(POWER_HARDWARE_MODULE_ID, &hw_module);
if (err) {
ALOGE("hw_get_module %s failed: %d", POWER_HARDWARE_MODULE_ID, err);
return nullptr;
}
if (!hw_module->methods || !hw_module->methods->open) {
power_module = reinterpret_cast<power_module_t*>(
const_cast<hw_module_t*>(hw_module));
} else {
err = hw_module->methods->open(
hw_module, POWER_HARDWARE_MODULE_ID,
reinterpret_cast<hw_device_t**>(&power_module));
if (err) {
ALOGE("Passthrough failed to load legacy HAL.");
return nullptr;
}
}
else {
ALOGE ("hw_get_module %s failed: %d", POWER_HARDWARE_MODULE_ID, ret);
return nullptr;
}
return new Power(power_module);
}
} // namespace implementation