From 2254612aaf2d1928b185076b799f66e5817e995b Mon Sep 17 00:00:00 2001 From: "sh.pi" Date: Thu, 28 Mar 2013 18:06:47 +0900 Subject: [PATCH] Patch to block turning off auto brightness during power-off. deviced checks lux value from light sensor every second when auto brightness is on. If there is fail to get light sensor value over 5 times, deviced turn off auto brightness. In case that sensor-framework is destroyed before deviced, auto brightness is off. Now deviced don't change auto brightness setting during power-off state. Change-Id: I70976d52dd484b8cdf01d39cf3e025e85eed86de Signed-off-by: Krzysztof Sasiak --- display/core.c | 12 ++++++++++++ display/core.h | 1 + display/lsensor.c | 2 +- display/setting.h | 1 + src/core/predefine.c | 4 ++++ 5 files changed, 19 insertions(+), 1 deletion(-) diff --git a/display/core.c b/display/core.c index b093465..27ab297 100644 --- a/display/core.c +++ b/display/core.c @@ -1163,6 +1163,18 @@ static int update_setting(int key_idx, int val) backlight_ops.restore(); } break; + case SETTING_POWEROFF: + switch (val) { + case VCONFKEY_SYSMAN_POWER_OFF_NONE: + case VCONFKEY_SYSMAN_POWER_OFF_POPUP: + pm_status_flag &= ~PWROFF_FLAG; + break; + case VCONFKEY_SYSMAN_POWER_OFF_DIRECT: + case VCONFKEY_SYSMAN_POWER_OFF_RESTART: + pm_status_flag |= PWROFF_FLAG; + break; + } + break; default: return -1; } diff --git a/display/core.h b/display/core.h index dc8f6ff..6ebd444 100644 --- a/display/core.h +++ b/display/core.h @@ -40,6 +40,7 @@ #define CHRGR_FLAG 0x00000200 #define PWRSV_FLAG 0x00000400 #define BRTCH_FLAG 0x00002000 +#define PWROFF_FLAG 0x00004000 #define TOLERANCE_SLOT 2 diff --git a/display/lsensor.c b/display/lsensor.c index d17f045..bf5263c 100644 --- a/display/lsensor.c +++ b/display/lsensor.c @@ -78,7 +78,7 @@ static bool alc_handler(void* data) } } - if (fault_count > MAX_FAULT) { + if ((fault_count > MAX_FAULT) && !(pm_status_flag & PWROFF_FLAG)) { if (alc_timeout_id > 0) ecore_timer_del(alc_timeout_id); alc_timeout_id = NULL; diff --git a/display/setting.h b/display/setting.h index c78ddd7..42b8201 100644 --- a/display/setting.h +++ b/display/setting.h @@ -41,6 +41,7 @@ enum { SETTING_PM_STATE = SETTING_GET_END, SETTING_LOW_BATT, SETTING_CHARGING, + SETTING_POWEROFF, SETTING_END }; diff --git a/src/core/predefine.c b/src/core/predefine.c index 758f601..9401ff3 100644 --- a/src/core/predefine.c +++ b/src/core/predefine.c @@ -41,6 +41,7 @@ #include "core/data.h" #include "common.h" #include "display/poll.h" +#include "setting.h" #include "led/led.h" #define CALL_EXEC_PATH PREFIX"/bin/call" @@ -859,6 +860,9 @@ static void poweroff_control_cb(keynode_t *in_key, struct ss_main_data *ad) ss_action_entry_call_internal(PREDEF_REBOOT, 0); break; } + + if (update_pm_setting) + update_pm_setting(SETTING_POWEROFF, val); } void ss_predefine_internal_init(void) -- 2.7.4