From: Youngjae Cho Date: Mon, 17 Jun 2024 11:12:58 +0000 (+0900) Subject: display: Replace auto brightness with plugin api X-Git-Tag: accepted/tizen/8.0/unified/20240710.161341~8 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=8c04e2e1f1ee25e68efb1ce0d988fd8cdda4203b;p=platform%2Fcore%2Fsystem%2Fdeviced.git display: Replace auto brightness with plugin api The reset_autobrightness_min has removed and it is intended to be a part of plugin implementation, .set_auto_brightness_min. Change-Id: Ie5eeb1bab5a3a8b78a0f6e034dbf2b6b82708e87 Signed-off-by: Youngjae Cho --- diff --git a/plugins/wearable/display/auto-brightness-sensorhub.c b/plugins/wearable/display/auto-brightness-sensorhub.c index a982af98..10c2d7ac 100644 --- a/plugins/wearable/display/auto-brightness-sensorhub.c +++ b/plugins/wearable/display/auto-brightness-sensorhub.c @@ -343,8 +343,6 @@ int prepare_level_handler(void) { int status, ret; - disp_plgn->auto_brightness_control = auto_brightness_control; - ret = vconf_get_int(VCONFKEY_SETAPPL_BRIGHTNESS_AUTOMATIC_INT, &status); if (ret >= 0) auto_brightness_state = status; diff --git a/plugins/wearable/display/auto-brightness-sensorhub.h b/plugins/wearable/display/auto-brightness-sensorhub.h index a3d401f5..150a4ae5 100644 --- a/plugins/wearable/display/auto-brightness-sensorhub.h +++ b/plugins/wearable/display/auto-brightness-sensorhub.h @@ -28,6 +28,7 @@ #define LBM_LEVEL 110 #define HBM_LEVEL 120 +#include "core.h" #include "display.h" #include "display-ops.h" diff --git a/plugins/wearable/display/auto-brightness.c b/plugins/wearable/display/auto-brightness.c index b0e145a3..8c759a49 100644 --- a/plugins/wearable/display/auto-brightness.c +++ b/plugins/wearable/display/auto-brightness.c @@ -64,6 +64,11 @@ static char *min_brightness_name = 0; /* light sensor */ static float lmax, lmin; +static void reset_autobrightness_min(GDBusConnection *conn, + const gchar *sender, + const gchar *unique_name, + gpointer data); + static bool update_working_position(void) { sensor_event_s data; @@ -567,8 +572,14 @@ static void update_brightness_direct(void) _E("Failed to get vconf value for automatic brightness: %d", vconf_get_ext_errno()); } +/** + * FIXME: Register it to plugin interface .set_auto_brightness_min + */ +__attribute__((unused)) static int set_autobrightness_min(int val, char *name) { + int id; + if (!name) return -EINVAL; @@ -588,6 +599,13 @@ static int set_autobrightness_min(int val, char *name) _I("Auto brightness min value changed. min_brightness=%d min_brightness_name=%s", min_brightness, min_brightness_name); + id = gdbus_watch_name(name, reset_autobrightness_min, NULL, NULL, NULL); + if (id <= 0) { + _E("failed to watch name %s, id %d", name, id); + //todo: set return value + } + _I("set autobrightness min %d by %s", val, name); + return 0; } @@ -661,9 +679,6 @@ static void exit_lsensor(void) static void auto_brightness_init(void *data) { - g_display_plugin.set_autobrightness_min = set_autobrightness_min; - g_display_plugin.reset_autobrightness_min = reset_autobrightness_min; - syscommon_notifier_subscribe_notify(DEVICED_NOTIFIER_LCD, lcd_changed_cb); syscommon_notifier_subscribe_notify(DEVICED_NOTIFIER_DELAYED_INIT, delayed_init_done); } diff --git a/src/display/core.h b/src/display/core.h index 7378d2e4..d3778404 100644 --- a/src/display/core.h +++ b/src/display/core.h @@ -52,6 +52,40 @@ #define MAX_LOG_COUNT 250 #endif +/** + * FIXME: + * It is passed via first parameter 'mode' of plugin api + * syscommon_plugin_deviced_display_control_auto_brightness(mode, brightness), + * but have not moved it to plugin-api(libsyscommon) as it is currently + * only wearable specific enum and technically, the wearable is not plugin structure. + */ +enum brightness_request_e { + /** + * request for brightness that managed internally. + * BR_HOLD_BRIGHTNESS and BR_SET_BRIGHTNESS does not use this implicit brightness + * for request, but explicitly request for a brightness value + */ + BR_IMPLICIT = -1, + + BR_MIN = 0, + /* entering request */ + BR_LBM_ON, + BR_HBM_ON, + BR_HOLD_BRIGHTNESS, + BR_LOWDIM_ON, /* low battery dim */ + + /* exiting request */ + BR_LBM_OFF, + BR_HBM_OFF, + BR_RELEASE_BRIGHTNESS, + BR_LOWDIM_OFF, /* low battery dim off */ + + /* special */ + BR_SET_BRIGHTNESS, + + BR_MAX, +}; + struct syscommon_deviced_display_state_info *state_st(enum syscommon_deviced_display_state state); /* diff --git a/src/display/display-dbus.c b/src/display/display-dbus.c index 1d54a5ca..6c54daaf 100644 --- a/src/display/display-dbus.c +++ b/src/display/display-dbus.c @@ -505,9 +505,9 @@ static GVariant *dbus_setbrightness(GDBusConnection *conn, clear_pm_status_flag(DIM_MASK); if (state == DISPLAY_STATE_NORMAL) { - if (disp_plgn->auto_brightness_control) { - ret = disp_plgn->auto_brightness_control(BR_SET_BRIGHTNESS, brt); - } else { + ret = syscommon_plugin_deviced_display_control_auto_brightness(BR_SET_BRIGHTNESS, brt); + if (ret == -ENOTSUP || ret == -EOPNOTSUPP) { + _D("Take default operation as there is no found plugin backend, ret=%d", ret); display_backlight_set_default_brightness(brt); ret = display_backlight_set_brightness(brt); if (ret < 0) @@ -571,13 +571,15 @@ static GVariant *dbus_holdbrightness(GDBusConnection *conn, } ret = vconf_set_int(VCONFKEY_PM_CUSTOM_BRIGHTNESS_STATUS, VCONFKEY_PM_CUSTOM_BRIGHTNESS_ON); + if (ret < 0) _E("Failed to set vconf value for custom brightness status: %d", vconf_get_ext_errno()); - if (disp_plgn->auto_brightness_control) - ret = disp_plgn->auto_brightness_control(BR_HOLD_BRIGHTNESS, brt); - else + ret = syscommon_plugin_deviced_display_control_auto_brightness(BR_HOLD_BRIGHTNESS, brt); + if (ret == -ENOTSUP || ret == -EOPNOTSUPP) { + _D("Take default operation as there is no found plugin backend, ret=%d", ret); ret = display_backlight_set_brightness(brt); + } if (ret < 0) goto error; @@ -650,7 +652,7 @@ static GVariant *dbus_releasebrightness(GDBusConnection *conn, brt = ret; // check dim state - if (!disp_plgn->auto_brightness_control && display_misc_is_low_battery_state(bat) && + if (display_misc_is_low_battery_state(bat) && charger == VCONFKEY_SYSMAN_CHARGER_DISCONNECTED && !changed) { _D("batt warning low : brightness is not changed!"); if (brt != 0) @@ -659,9 +661,8 @@ static GVariant *dbus_releasebrightness(GDBusConnection *conn, } if (autobrt == SETTING_BRIGHTNESS_AUTOMATIC_OFF) { - if (disp_plgn->auto_brightness_control) { - disp_plgn->auto_brightness_control(BR_RELEASE_BRIGHTNESS, BR_IMPLICIT); - } else { + ret = syscommon_plugin_deviced_display_control_auto_brightness(BR_RELEASE_BRIGHTNESS, BR_IMPLICIT); + if (ret == -ENOTSUP || ret == -EOPNOTSUPP) { if (brt != setting) display_backlight_set_brightness(setting); } @@ -720,12 +721,7 @@ static GVariant *dbus_setautobrightnessmin(GDBusConnection *conn, { int val, ret; pid_t pid; - int id = 0; - if (!g_display_plugin.set_autobrightness_min) { - ret = -EIO; - goto error; - } g_variant_get(param, "(i)", &val); pid = gdbus_connection_get_sender_pid(conn, sender); @@ -734,19 +730,9 @@ static GVariant *dbus_setautobrightnessmin(GDBusConnection *conn, ret = -ESRCH; goto error; } - ret = g_display_plugin.set_autobrightness_min(val, (char *)sender); - if (ret) { - _W("fail to set autobrightness min %d, %d by %d", val, ret, pid); - goto error; - } - if (g_display_plugin.reset_autobrightness_min) { - id = gdbus_watch_name(sender, g_display_plugin.reset_autobrightness_min, NULL, NULL, NULL); - if (id <= 0) { - _E("failed to watch name %s, id %d", sender, id); - //todo: set return value - } - _I("set autobrightness min %d by %d", val, pid); - } + + ret = syscommon_plugin_deviced_display_set_auto_brightness_min(val, sender); + error: return g_variant_new("(i)", ret); } diff --git a/src/display/display-plugin.c b/src/display/display-plugin.c index bff05d4d..6716a7c4 100644 --- a/src/display/display-plugin.c +++ b/src/display/display-plugin.c @@ -37,14 +37,6 @@ int display_plugin_set_system_wakeup_flag(bool flag) return 0; } -int display_plugin_auto_brightness_control(enum brightness_request_e request, int set_brightness) -{ - if (g_display_plugin.auto_brightness_control) - return g_display_plugin.auto_brightness_control(request, set_brightness); - - return 0; -} - /* FIXME: Below functions are temorary to separtate display state transition functions */ int display_plugin_state_do_default_trans(enum syscommon_deviced_display_state state, int evt) { diff --git a/src/display/display-plugin.h b/src/display/display-plugin.h index 084b2c00..f55a99ac 100644 --- a/src/display/display-plugin.h +++ b/src/display/display-plugin.h @@ -28,40 +28,9 @@ #include "display-backlight.h" #include "shared/devices.h" -/* FIXME: Currently because of display_plugin.auto_brightness_control(), - * it is here. Please relocate it to proper place later. */ -enum brightness_request_e { - BR_MIN = 0, - /* entering request */ - BR_LBM_ON, - BR_HBM_ON, - BR_HOLD_BRIGHTNESS, - BR_LOWDIM_ON, /* low battery dim */ - - /* exiting request */ - BR_LBM_OFF, - BR_HBM_OFF, - BR_RELEASE_BRIGHTNESS, - BR_LOWDIM_OFF, /* low battery dim off */ - - /* special */ - BR_SET_BRIGHTNESS, - - BR_MAX, -}; - -/* request for brightness that managed internally. - * BR_HOLD_BRIGHTNESS and BR_SET_BRIGHTNESS does not use this implicit brightness - * for request, but explicitly request for a brightness value */ -#define BR_IMPLICIT (-1) - struct display_plugin { bool system_wakeup_flag; - int (*auto_brightness_control) (enum brightness_request_e request, int set_brightness); int (*proc_change_state) (unsigned int cond, pid_t pid); - int (*set_autobrightness_min) (int val, char *name); - void (*reset_autobrightness_min) (GDBusConnection *conn, const gchar *sender, - const gchar *unique_name, gpointer data); struct syscommon_deviced_display_config *config; struct syscommon_deviced_display_state_info* display_states[SYSCOMMON_DEVICED_DISPLAY_STATE_END]; @@ -70,7 +39,6 @@ extern struct display_plugin g_display_plugin; int display_plugin_get_system_wakeup_flag(bool *flag); int display_plugin_set_system_wakeup_flag(bool flag); -int display_plugin_auto_brightness_control(enum brightness_request_e request, int set_brightness); /* FIXME: function names will be redefined */ int display_plugin_state_do_default_trans(enum syscommon_deviced_display_state state, int evt);