display: Support lockscreen enable/disable 58/317258/9 accepted/tizen/unified/20240912.084739 accepted/tizen/unified/dev/20240913.055524 accepted/tizen/unified/x/20240913.014907
authorYunhee Seo <yuni.seo@samsung.com>
Tue, 3 Sep 2024 08:05:42 +0000 (17:05 +0900)
committerYunhee Seo <yuni.seo@samsung.com>
Wed, 11 Sep 2024 06:13:29 +0000 (15:13 +0900)
Added a feature that enables/disables the lockscreen logic according to the profile's configuration
because the lockscreen is not always a necessary function.

int display_config_get_lockscreen_disable(bool *lockscreen_disable);
To get lockscreen configuration info, above function is added.

Change-Id: Ie36bcb1ae5621ca69382fac55ecb900c743c0949
Signed-off-by: Yunhee Seo <yuni.seo@samsung.com>
src/display/display-config.c
src/display/display-config.h
src/display/display-state-transition.c
src/display/display.c
src/led/touch-key.c

index 18a98cab5d48b06b08129fa3ce4abab35e4da6f0..7598686837fce77537a0a01da916abaed07b4379 100644 (file)
@@ -191,3 +191,16 @@ int display_config_get_pm_default_brightness(int *pm_default_brightness)
 
        return 0;
 }
+
+int display_config_get_lockscreen_disable(bool *lockscreen_disable)
+{
+       if (!lockscreen_disable)
+               return -EINVAL;
+
+       if (!g_display_config)
+               return -ENOSYS;
+
+       *lockscreen_disable = g_display_config->lockscreen_disable;
+
+       return 0;
+}
index 6bc67bfc482e53f8faa81625b22e35599d868235..e71a1ac6bc7c55f4be995952467aad1f19b0e29a 100644 (file)
@@ -35,5 +35,6 @@ int display_config_get_lcdoff_timeout(int *lcdoff_timeout);
 int display_config_get_lcd_always_on(int *lcd_always_on);
 int display_config_get_dimming(int *dimming);
 int display_config_get_pm_default_brightness(int *pm_default_brightness);
+int display_config_get_lockscreen_disable(bool *lockscreen_disable);
 
 #endif //__DISPLAY_CONFIG_H__
index 2887dddea63d0be157bf7a2932878a22a15bb25e..29c259f3b3720b3d475345be76463225f9198161 100644 (file)
@@ -119,6 +119,37 @@ inline void set_pm_old_state(int state)
        previous = state;
 }
 
+static bool is_possible_to_set_lock_screen_timeout(void)
+{
+       int ret = 0;
+       int lockscreen = 0;
+       bool lockscreen_disable = false;
+
+       ret = display_config_get_lockscreen_disable(&lockscreen_disable);
+       if (ret < 0) {
+               _E("Failed to get lockscreen disable value, ret(%d)", ret);
+               return false;
+       }
+
+       if (lockscreen_disable == true) {
+               _I("lockscreen is disabled, skip getting lockscreen timeout value");
+               return false;
+       }
+
+       ret = vconf_get_int(VCONFKEY_IDLE_LOCK_STATE, &lockscreen);
+       if (ret < 0) {
+               _E("Failed to get lockscreen state, ret(%d)", ret);
+               return false;
+       }
+
+       if (lockscreen == VCONFKEY_IDLE_UNLOCK) {
+               _I("lockscreen is not being displayed. skip setting lock screen timeout value");
+               return false;
+       }
+
+       return true;
+}
+
 /**
  * Default policy for display state timeout.
  */
@@ -126,7 +157,6 @@ static int get_default_timeout(enum syscommon_deviced_display_state state, int *
 {
        double display_on_ratio = 1.0;
        double display_dim_ratio = 0.0;
-       int lockscreen = 0;
        int screen_timeout = 0;
        int dimming = 0;
        int ret = 0;
@@ -144,9 +174,7 @@ static int get_default_timeout(enum syscommon_deviced_display_state state, int *
        if (ret < 0)
                return ret;
 
-       /* If lockscreen is being displayed, use lockscreen timeout instead. */
-       ret = vconf_get_int(VCONFKEY_IDLE_LOCK_STATE, &lockscreen);
-       if (ret == 0 && lockscreen == VCONFKEY_IDLE_LOCK)
+       if (is_possible_to_set_lock_screen_timeout())
                screen_timeout = LOCK_SCREEN_INPUT_TIMEOUT;
 
        /* If dimming enabled, devide screen timeout into
index 529371c29c14d4912b04cce7257e9d0536fe121d..dc0ca1f2a364a702344cba39b25d5402253cb4f9 100644 (file)
@@ -410,6 +410,16 @@ void display_set_initial_lockscreen_status(void)
        int ret = -1;
        int lock_state = 0;
        int lock_screen_timeout = 0;
+       bool lockscreen_disable = false;
+
+       ret = display_config_get_lockscreen_disable(&lockscreen_disable);
+       if (ret < 0)
+               _W("Cannot get lockscreen disable configuration, ret(%d)", ret);
+
+       if (lockscreen_disable == true) {
+               _I("Lockscreen is disabled by configuration. Skip the initial lock screen status.");
+               return;
+       }
 
        ret = vconf_get_int(VCONFKEY_IDLE_LOCK_STATE, &lock_state);
        if (ret < 0) {
index 2cf5009a1ceeff3c8dac3ed9b5699c546e2e0538..6682cae9cabebf524a4b849ad573eabe0be39ced 100644 (file)
@@ -127,6 +127,8 @@ static void process_touchkey_release(void)
 static void process_touchkey_enable(bool enable)
 {
        int lockscreen_state = VCONFKEY_IDLE_UNLOCK;
+       bool lockscreen_disable = false;
+       int ret = 0;
 
        /* release existing timer */
        if (hardkey_timeout_id > 0) {
@@ -143,12 +145,18 @@ static void process_touchkey_enable(bool enable)
                /* turn on hardkey backlight */
                touchled_set_state(true);
 
-               /* do not create turnoff timer in case of idle lock state */
-               syscommon_resman_get_resource_attr_int(
-                       SYSCOMMON_RESOURCE_ID(DEVICED_RESOURCE_TYPE_DISPLAY),
-                       DEVICED_DISPLAY_ATTR_INT_LOCKSCREEN_STATE, &lockscreen_state);
-               if (lockscreen_state == VCONFKEY_IDLE_LOCK)
-                       return;
+               ret = display_config_get_lockscreen_disable(&lockscreen_disable);
+               if (ret < 0)
+                       _W("Cannot get lockscreen disable configuration, ret(%d)", ret);
+
+               if (lockscreen_disable == false) {
+                       /* do not create turnoff timer in case of idle lock state */
+                       syscommon_resman_get_resource_attr_int(
+                               SYSCOMMON_RESOURCE_ID(DEVICED_RESOURCE_TYPE_DISPLAY),
+                               DEVICED_DISPLAY_ATTR_INT_LOCKSCREEN_STATE, &lockscreen_state);
+                       if (lockscreen_state == VCONFKEY_IDLE_LOCK)
+                               return;
+               }
 
                /* start timer */
                hardkey_timeout_id = g_timeout_add_seconds(