From bd2d84c295feeee30bf0aca038499a2ee6fdda67 Mon Sep 17 00:00:00 2001 From: Albert Tang Date: Mon, 5 Dec 2022 09:52:50 -0600 Subject: [PATCH] livedisplay: Check current state before toggling AF/SE This prevents us from sending unexpected panel commands. Fixes: https://gitlab.com/LineageOS/issues/android/-/issues/4790 Change-Id: I97c5a008f242c861cafdec392b19ab9435a5239b --- hidl/livedisplay/AntiFlicker.cpp | 3 ++- hidl/livedisplay/SunlightEnhancement.cpp | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/hidl/livedisplay/AntiFlicker.cpp b/hidl/livedisplay/AntiFlicker.cpp index ed84413..ab29c51 100644 --- a/hidl/livedisplay/AntiFlicker.cpp +++ b/hidl/livedisplay/AntiFlicker.cpp @@ -33,7 +33,8 @@ Return AntiFlicker::isEnabled() { Return AntiFlicker::setEnabled(bool enabled) { unsigned int value = enabled; - return ioctl(mOplusDisplayFd, PANEL_IOCTL_SET_DIMLAYER_BL_EN, &value) == 0; + return isEnabled() == enabled || + ioctl(mOplusDisplayFd, PANEL_IOCTL_SET_DIMLAYER_BL_EN, &value) == 0; } } // namespace implementation diff --git a/hidl/livedisplay/SunlightEnhancement.cpp b/hidl/livedisplay/SunlightEnhancement.cpp index d4c6942..d1b6262 100644 --- a/hidl/livedisplay/SunlightEnhancement.cpp +++ b/hidl/livedisplay/SunlightEnhancement.cpp @@ -33,7 +33,7 @@ Return SunlightEnhancement::isEnabled() { Return SunlightEnhancement::setEnabled(bool enabled) { unsigned int value = enabled; - return ioctl(mOplusDisplayFd, PANEL_IOCTL_SET_HBM, &value) == 0; + return isEnabled() == enabled || ioctl(mOplusDisplayFd, PANEL_IOCTL_SET_HBM, &value) == 0; } } // namespace implementation