#include "shared/eventsystem.h"
#include "shared/plugin.h"
+#define EXCLUSIVE_DIM_TIMEOUT_UNSET (-1)
#define LCD_DIM_RATIO 0.3
#define LCD_MAX_DIM_TIMEOUT 7000
#define LCD_MIN_DIM_TIMEOUT 500
[SETTING_BRT_LEVEL] = VCONFKEY_SETAPPL_LCD_BRIGHTNESS,
[SETTING_LOCK_SCREEN] = VCONFKEY_IDLE_LOCK_STATE,
[SETTING_POWER_CUSTOM_BRIGHTNESS] = VCONFKEY_PM_CUSTOM_BRIGHTNESS_STATUS,
+ [SETTING_EXCLUSIVE_DIM_TIMEOUT] = VCONFKEY_SETAPPL_TIMEOUT_DIM,
};
static struct display_plugin *disp_plgn;
static int custom_on_timeout = 0;
static int custom_normal_timeout = 0;
static int custom_dim_timeout = 0;
+static int exclusive_dim_timeout = EXCLUSIVE_DIM_TIMEOUT_UNSET;
static const struct display_config *display_conf;
int (*update_pm_setting) (int key_idx, int val);
return G_SOURCE_REMOVE;
}
+int set_exclusive_dim_timeout(int timeout)
+{
+ if (timeout < 0)
+ exclusive_dim_timeout = EXCLUSIVE_DIM_TIMEOUT_UNSET;
+ else
+ exclusive_dim_timeout = SEC_TO_MSEC(timeout);
+
+ return 0;
+}
+
int set_force_lcdtimeout(int timeout)
{
if (timeout < 0)
{
int vconf_timeout, on_timeout, val, ret;
+ if (exclusive_dim_timeout != EXCLUSIVE_DIM_TIMEOUT_UNSET) {
+ *dim_timeout = exclusive_dim_timeout;
+ return;
+ }
+
if (custom_dim_timeout > 0) {
*dim_timeout = custom_dim_timeout;
return;
if (custom_normal_timeout > 0) {
*timeout = custom_normal_timeout;
+ /**
+ * The exclusive_dim_timeout doesn't share timeout with custom_normal_timeout
+ * in LCD_DIM_RATIO, but only consumes fixed time allocated to it.
+ * Therefore feed the custom_dim_timeout back to the custom_normal_timeout.
+ */
+ if (exclusive_dim_timeout != EXCLUSIVE_DIM_TIMEOUT_UNSET)
+ *timeout += custom_dim_timeout;
return;
}
return;
}
+ if (exclusive_dim_timeout != EXCLUSIVE_DIM_TIMEOUT_UNSET) {
+ *timeout = on_timeout;
+ return;
+ }
+
get_dim_timeout(&dim_timeout);
*timeout = on_timeout - dim_timeout;
}
static void __CONSTRUCTOR__ initialize(void)
{
+ int ret;
+
+ ret = vconf_get_int(VCONFKEY_SETAPPL_TIMEOUT_DIM, &exclusive_dim_timeout);
+ if (ret < 0 || exclusive_dim_timeout < 0)
+ exclusive_dim_timeout = EXCLUSIVE_DIM_TIMEOUT_UNSET;
+
disp_plgn = get_var_display_plugin();
if (!disp_plgn) {
_E("Failed to get display plugin variable.");