summaryrefslogtreecommitdiff
path: root/hal
diff options
context:
space:
mode:
authorWei Wang <wvw@google.com>2020-03-04 11:44:58 -0800
committerWei Wang <wvw@google.com>2020-03-04 11:49:06 -0800
commitb8c5a0f93636821804b03144a7a91426b69005ff (patch)
treed4d76f5a113a828772bb03bc6edc75ca4371c959 /hal
parente18c26251b791295ef0f0655a846f707898ec4c5 (diff)
downloadaudio-b8c5a0f93636821804b03144a7a91426b69005ff.tar.gz
Probe PowerHAL HIDL first
Right now AIDL doesn't provide an API for vendor code to query if the AIDL HAL declared. This will lead to 1) long blocking call for device doesn't have the AIDL HAL and also 2) potential problem if the service starts late after 5s timeout. This is a workaround for addressing 1) on devices having HIDL, but still affects device that doesn't have HIDL service. Bug: 149797408 Test: build Change-Id: I60aada1ab1a044db965987bca5f6eee5b6262b20
Diffstat (limited to 'hal')
-rw-r--r--hal/audio_perf.cpp30
1 files changed, 15 insertions, 15 deletions
diff --git a/hal/audio_perf.cpp b/hal/audio_perf.cpp
index 4623f19..e2620a1 100644
--- a/hal/audio_perf.cpp
+++ b/hal/audio_perf.cpp
@@ -54,6 +54,21 @@ static hal_version connectPowerHalLocked() {
return NONE;
}
+ if (gPowerHalHidlExists) {
+ // (re)connect if handle is null
+ if (!gPowerHal_1_2_) {
+ gPowerHal_1_2_ =
+ android::hardware::power::V1_2::IPower::getService();
+ }
+ if (gPowerHal_1_2_) {
+ ALOGI("Successfully connected to Power Hal Hidl service.");
+ return HIDL_1_2;
+ } else {
+ // no more try on this handle
+ gPowerHalHidlExists = false;
+ }
+ }
+
if (gPowerHalAidlExists) {
// (re)connect if handle is null
if (!gPowerHal_Aidl_) {
@@ -70,21 +85,6 @@ static hal_version connectPowerHalLocked() {
}
}
- if (gPowerHalHidlExists) {
- // (re)connect if handle is null
- if (!gPowerHal_1_2_) {
- gPowerHal_1_2_ =
- android::hardware::power::V1_2::IPower::getService();
- }
- if (gPowerHal_1_2_) {
- ALOGI("Successfully connected to Power Hal Hidl service.");
- return HIDL_1_2;
- } else {
- // no more try on this handle
- gPowerHalHidlExists = false;
- }
- }
-
return NONE;
}