diff --git a/services/core/jni/com_android_server_lights_LightsService.cpp b/services/core/jni/com_android_server_lights_LightsService.cpp index c90113f4b44ec..26f6d7428fcc2 100644 --- a/services/core/jni/com_android_server_lights_LightsService.cpp +++ b/services/core/jni/com_android_server_lights_LightsService.cpp @@ -39,37 +39,7 @@ using Type = ::android::hardware::light::V2_0::Type; template using Return = ::android::hardware::Return; -class LightHal { -private: - static sp sLight; - static bool sLightInit; - - LightHal() {} - -public: - static void disassociate() { - sLightInit = false; - sLight = nullptr; - } - - static sp associate() { - if ((sLight == nullptr && !sLightInit) || - (sLight != nullptr && !sLight->ping().isOk())) { - // will return the hal if it exists the first time. - sLight = ILight::getService(); - sLightInit = true; - - if (sLight == nullptr) { - ALOGE("Unable to get ILight interface."); - } - } - - return sLight; - } -}; - -sp LightHal::sLight = nullptr; -bool LightHal::sLightInit = false; +static bool sLightSupported = true; static bool validate(jint light, jint flash, jint brightness) { bool valid = true; @@ -134,7 +104,6 @@ static void processReturn( const LightState &state) { if (!ret.isOk()) { ALOGE("Failed to issue set light command."); - LightHal::disassociate(); return; } @@ -164,13 +133,11 @@ static void setLight_native( jint offMS, jint brightnessMode) { - if (!validate(light, flashMode, brightnessMode)) { + if (!sLightSupported) { return; } - sp hal = LightHal::associate(); - - if (hal == nullptr) { + if (!validate(light, flashMode, brightnessMode)) { return; } @@ -180,6 +147,11 @@ static void setLight_native( { android::base::Timer t; + sp hal = ILight::getService(); + if (hal == nullptr) { + sLightSupported = false; + return; + } Return ret = hal->setLight(type, state); processReturn(ret, type, state); if (t.duration() > 50ms) ALOGD("Excessive delay setting light");