From 88bda02160e8c1bb2b1e3da3cdfe7dd77975e25a Mon Sep 17 00:00:00 2001 From: MyoungJune Park Date: Thu, 5 Jan 2017 15:39:32 +0900 Subject: [PATCH] apply font-change commands by socket Change-Id: Idf88e1573c4990310e9f16d14b701edf63ac6056 Signed-off-by: MyoungJune Park --- src/system_setting_platform.c | 4 - system-settings-util/src/system_settings_util.c | 209 ++++++++++++------------ 2 files changed, 103 insertions(+), 110 deletions(-) diff --git a/src/system_setting_platform.c b/src/system_setting_platform.c index e0fd469..c493e5f 100644 --- a/src/system_setting_platform.c +++ b/src/system_setting_platform.c @@ -49,10 +49,6 @@ #include #include -#ifdef USE_EFL_ASSIST -#include -#endif - #define SETTING_FONT_CONF_FILE _TZ_SYS_ETC"/fonts/conf.avail/99-tizen.conf" diff --git a/system-settings-util/src/system_settings_util.c b/system-settings-util/src/system_settings_util.c index 3e9c331..e76a560 100644 --- a/system-settings-util/src/system_settings_util.c +++ b/system-settings-util/src/system_settings_util.c @@ -7,8 +7,14 @@ #include #include #include +#include +#include +#include #include +#define EFL_CONFIG_SOCK_PATH "/run/user_ext/%d" +#define EFL_CONFIG_SOCKET_FILE ".efl-config.sock" + #include #include @@ -269,140 +275,131 @@ char *_get_default_font() return __get_main_font_family_name_by_alias(SETTING_FONT_TIZEN_DEFAULT_FONT_ALIAS); } -/* LCOV_EXCL_START */ -bool font_config_set(char *font_name) +bool _is_in_system_session() { SETTING_TRACE_BEGIN; - Eina_List *text_classes = NULL; - Elm_Text_Class *etc = NULL; - const Eina_List *l = NULL; - Eina_List *fo_list = NULL; - Elm_Font_Overlay *efo = NULL; + int ret = 0; + char *slice = NULL; - int font_size = __font_size_get(); - int size = 0; - - text_classes = elm_config_text_classes_list_get(); - - fo_list = (Eina_List *)elm_config_font_overlay_list_get(); - - Eina_List *ll = NULL; - Eina_List *l_next = NULL; - - Eina_Bool slp_medium_exist = EINA_FALSE; - Eina_Bool slp_roman_exist = EINA_FALSE; - Eina_Bool slp_bold_exist = EINA_FALSE; - Eina_Bool slp_regular_exist = EINA_FALSE; - - /* Tizen */ - Eina_Bool tizen_exist = EINA_FALSE; - - EINA_LIST_FOREACH_SAFE(fo_list, ll, l_next, efo) { - if (!strcmp(efo->text_class, "tizen_medium")) { - elm_config_font_overlay_set(efo->text_class, (const char *)font_name, efo->size); - slp_medium_exist = EINA_TRUE; - } else if (!strcmp(efo->text_class, "tizen_roman")) { - elm_config_font_overlay_set(efo->text_class, (const char *)font_name, efo->size); - slp_roman_exist = EINA_TRUE; - } else if (!strcmp(efo->text_class, "tizen_bold")) { - elm_config_font_overlay_set(efo->text_class, (const char *)font_name, efo->size); - slp_bold_exist = EINA_TRUE; - } else if (!strcmp(efo->text_class, "tizen_regular")) { - elm_config_font_overlay_set(efo->text_class, (const char *)font_name, efo->size); - slp_regular_exist = EINA_TRUE; + ret = sd_pid_get_slice(getpid(), &slice); + if (0 <= ret && slice) { + if (0 == strncmp(slice, "system.slice", strlen("system.slice"))) { + free(slice); + return true; } + } else { + SETTING_TRACE("sd_pid_get_slice() Fail(%d)", ret); + } - /* Tizen */ - if (!strcmp(efo->text_class, "tizen")) { - elm_config_font_overlay_set(efo->text_class, (const char *)font_name, efo->size); - tizen_exist = EINA_TRUE; - } + free(slice); + return false; +} +bool _get_active_uid(uid_t *uid) +{ + SETTING_TRACE_BEGIN; + int active_user_count = 0; + uid_t *active_user_list = NULL; + + active_user_count = sd_get_active_uids(&active_user_list); + /* the number of active users is 1 in tizen3.0 */ + if (1 == active_user_count && active_user_list) { + *uid = active_user_list[0]; + SETTING_TRACE("active uid = %d", *uid); + } else { + SETTING_TRACE("sd_get_active_uids() Fail(%d)", active_user_count); + free(active_user_list); + return false; } - /* if slp_XX do not exist, need to set them, font size is -100(100%) */ - if (slp_medium_exist == EINA_FALSE) { - elm_config_font_overlay_set("tizen_medium", (const char *)font_name, MIDDLE_FONT_DPI); - } - if (slp_roman_exist == EINA_FALSE) { - elm_config_font_overlay_set("tizen_roman", (const char *)font_name, MIDDLE_FONT_DPI); - } - if (slp_bold_exist == EINA_FALSE) { - elm_config_font_overlay_set("tizen_bold", (const char *)font_name, MIDDLE_FONT_DPI); - } - if (slp_regular_exist == EINA_FALSE) { - elm_config_font_overlay_set("tizen_regular", (const char *)font_name, MIDDLE_FONT_DPI); - } + return true; +} - /* Tizen */ - if (tizen_exist == EINA_FALSE) { - elm_config_font_overlay_set("tizen", (const char *)font_name, MIDDLE_FONT_DPI); +bool +_efl_config_set(char *msg) +{ + SETTING_TRACE_BEGIN; + int fd; + char sock_file[1024] = {0}; + uid_t active_uid = getuid(); + bool ret = false; + + if (_is_in_system_session() == true) { + if (_get_active_uid(&active_uid) == false) { + SETTING_TRACE("get active uid fail"); + return ret; + } } - elm_config_font_overlay_set("tizen", (const char *)font_name, MIDDLE_FONT_DPI); + snprintf(sock_file, sizeof(sock_file), EFL_CONFIG_SOCK_PATH"/%s", + active_uid, + EFL_CONFIG_SOCKET_FILE); - /* Tizen */ - elm_config_font_overlay_set("tizen", (const char *)font_name, MIDDLE_FONT_DPI); + do { + int r, size, flags; + struct sockaddr_un server_addr; - EINA_LIST_FOREACH(text_classes, l, etc) { - ll = NULL; + fd = socket(PF_UNIX, SOCK_STREAM, 0); + if (fd < 0) { + SETTING_TRACE("socket[%d] error :%d", fd, errno); + break; + } - size = font_size; - EINA_LIST_FOREACH(fo_list, ll, efo) { - if (!strcmp(etc->name, efo->text_class)) { - size = efo->size; - } + flags = fcntl(fd, F_GETFL, 0); + if (flags == -1) + flags = 0; + r = fcntl(fd, F_SETFL, flags | O_NONBLOCK); + if (0 != r) + SETTING_TRACE("fcntl fail : %d", errno); + + bzero(&server_addr, sizeof(server_addr)); + server_addr.sun_family = AF_UNIX; + snprintf(server_addr.sun_path, sizeof(server_addr.sun_path), "%s", + sock_file); + + r = connect(fd, (struct sockaddr *)&server_addr, sizeof(server_addr)); + if (r != 0) { + SETTING_TRACE("connect error : %d, %d", r, errno); + break; } - elm_config_font_overlay_set(etc->name, (const char *)font_name, size); - } - elm_config_text_classes_list_free(text_classes); - text_classes = NULL; - /* add new function */ -#ifdef USE_EFL_ASSIST - ea_theme_system_font_set(font_name, font_size); - ea_theme_system_fonts_apply(); -#endif + size = write(fd, msg, strlen(msg)); + if (size <= 0) { + SETTING_TRACE("write fail : %d", errno); + } else { + ret = true; + } + } while (0); - elm_config_font_overlay_apply(); - elm_config_all_flush(); - elm_config_save(); - return 1; + return ret; } -/* LCOV_EXCL_STOP */ /* LCOV_EXCL_START */ -void __font_size_set() +bool font_config_set(char *font_name) { SETTING_TRACE_BEGIN; - Eina_List *text_classes = NULL; - Elm_Text_Class *etc = NULL; - const Eina_List *l = NULL; + char buf[255] = { 0 }; int font_size = __font_size_get(); - char *font_name = _get_cur_font(); - - if (font_size == -1) { - return; - } - - text_classes = elm_config_text_classes_list_get(); + bool ret; - EINA_LIST_FOREACH(text_classes, l, etc) { - elm_config_font_overlay_set(etc->name, font_name, font_size); - } + snprintf(buf, sizeof(buf), "font_name: %s, font_size: %d", font_name, font_size); + ret = _efl_config_set(buf); - elm_config_text_classes_list_free(text_classes); + return ret; +} +/* LCOV_EXCL_STOP */ -#ifdef USE_EFL_ASSIST - ea_theme_system_font_set(font_name, font_size); - ea_theme_system_fonts_apply(); -#endif +/* LCOV_EXCL_START */ +void __font_size_set() +{ + SETTING_TRACE_BEGIN; + char buf[255] = { 0 }; + int font_size = __font_size_get(); + char *font_name = _get_cur_font(); - elm_config_font_overlay_apply(); - elm_config_all_flush(); - elm_config_save(); + snprintf(buf, sizeof(buf), "font_name: %s, font_size: %d", font_name, font_size); + _efl_config_set(buf); - text_classes = NULL; g_free(font_name); } /* LCOV_EXCL_STOP */ -- 2.7.4