[EGIT] [core/efl] master 02/02: eina: API for base64url decode.
jpeg pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=1243b24f9b2967433e0a00d36c58117afe21d56b commit 1243b24f9b2967433e0a00d36c58117afe21d56b Author: Srivardhan Hebbar Date: Wed Dec 16 16:15:43 2015 +0900 eina: API for base64url decode. Summary: eina_base64url_decode API. Signed-off-by: Srivardhan Hebbar Reviewers: jpeg, cedric Differential Revision: https://phab.enlightenment.org/D3434 --- src/lib/eina/eina_str.c | 155 +++- 1 file changed, 88 insertions(+), 67 deletions(-) diff --git a/src/lib/eina/eina_str.c b/src/lib/eina/eina_str.c index 9fbd730..3a83d03 100644 --- a/src/lib/eina/eina_str.c +++ b/src/lib/eina/eina_str.c @@ -301,9 +301,12 @@ eina_str_split_full_helper(const char *str, return str_array; } -static inline Eina_Bool is_base64(unsigned char c) +static inline Eina_Bool is_base64_char(unsigned char c, Eina_Bool is_base64url) { - return (isalnum(c) || (c == '+') || (c == '/')); + if (is_base64url) + return (isalnum(c) || (c == '-') || (c == '_')); + else + return (isalnum(c) || (c == '+') || (c == '/')); } static char * @@ -366,6 +369,83 @@ eina_str_base64_encode_common(const unsigned char *src, unsigned int len, Eina_B return dest; } +static +unsigned char *eina_str_base64_decode_common(const char * src, int *decoded_str_len, Eina_Bool is_base64url_decode) +{ + unsigned char inarr[4], outarr[3]; + int i = 0, j = 0, k = 0, l = 0; + int len; + unsigned char *dest; + const char *base64_table; + + if (!src) + goto error; + + len = strlen(src); + /* The encoded string length should be a multiple of 4. Else it is not a +* valid encoded string. +*/ + if (!is_base64url_decode && (len % 4)) + goto error; + + /* This is the max size the destination string can have. +*/ + dest = (unsigned char *)malloc(sizeof(unsigned char) * ((len * 3 / 4) + 1)); + if (!dest) + goto error; + + if (is_base64url_decode) + base64_table = base64_table_url; + else + base64_table = base64_table_normal; + + while (len-- && (src[k] != '=') && is_base64_char(src[k], is_base64url_decode)) + { + inarr[i++] = src[k++]; + if (i == 4) + { + for (i = 0; i <4; i++) + inarr[i] = strchr(base64_table,(int) inarr[i]) - base64_table; + + outarr[0] = (inarr[0] << 2) + ((inarr[1] & 0x30) >> 4); + outarr[1] = ((inarr[1] & 0xf) << 4) + ((inarr[2] & 0x3c) >> 2); + outarr[2] = ((inarr[2] & 0x3) << 6) + inarr[3]; + + for (i = 0; (i < 3); i++) + dest[l++] = outarr[i]; + i = 0; + } + } + + if (i) + { + for (j = i; j <4; j++) + inarr[j] = 0; + + for (j = 0; j <4; j++) + inarr[j] = strchr(base64_table, (int) inarr[j]) - base64_table; + + outarr[0] = (inarr[0] << 2) + ((inarr[1] & 0x30) >> 4); + outarr[1] = ((inarr[1] & 0xf) << 4) + ((inarr[2] & 0x3c) >> 2); + outarr[2] = ((inarr[2] & 0x3) << 6) + inarr[3]; + + for (j = 0; (j < i - 1); j++) + dest[l++] = outarr[j]; + } + + /* This is to prevent the applications from crashing. */ + dest[l] = '\0'; + + if (decoded_str_len) + *decoded_str_len = l; + return dest; + +error: + if (decoded_str_len) + *decoded_str_len = 0; + return NULL; +} + /** * @endcond */ @@ -810,70 +890,11 @@ eina_str_base64url_encode(const unsigned char *src, unsigned int len) EAPI unsigned char *eina_str_base64_decode(const char * src, int *decoded_str_len) { - unsigned char inarr[4], outarr[3]; - int i = 0, j = 0, k = 0, l = 0; - int len; - unsigned char *dest; - - if (!src) - goto error; - - len = strlen(src); - /* The encoded string length should be a multiple of 4. Else it is not a -* valid encoded string. -*/ - if (len % 4) - goto error; - - /* This is the max size the destination string can have. -*/ - dest = (unsigned char *)malloc(sizeof(unsigned char) * ((len * 3 / 4) + 1)); - if (!dest) - goto error; - - while (len-- && ( src[k] != '=') && is_base64(src[k])) - { - inarr[i++] = src[k++]; - if (i ==4) - { - for (i = 0; i <4; i++) - inarr[i] = strchr(base64_table_normal,(int) inarr[i]) - base64_table_normal; - - outarr[0] = (inarr[0] << 2) + ((inarr[1] & 0x30) >> 4); - outarr[1] = ((inarr[1] & 0xf) << 4) + ((inarr[2] & 0x3c) >> 2); - outarr[2] = ((inarr[2] & 0x3) << 6) + inarr[3]; - - for (i = 0; (i < 3); i++) - dest[l++] = outarr[i]; - i = 0; - } - } - - if (i) - { - for (j = i; j <4; j++) - inarr[j] = 0; - - for (j = 0; j <4; j++) - inarr[j] = strchr(base64_table_normal, (int) inarr[j]) - base64_table_normal; - - outarr[0] = (inarr[0] << 2) + ((inarr[1] & 0x30) >> 4); -
[EGIT] [core/efl] master 01/02: eina: Added testcase for base64url encoding API.
jpeg pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=9f9921372378d5badc1e5dd4ac1a294df3847d81 commit 9f9921372378d5badc1e5dd4ac1a294df3847d81 Author: Srivardhan Hebbar Date: Wed Dec 16 16:11:27 2015 +0900 eina: Added testcase for base64url encoding API. Summary: Depends on D414 Signed-off-by: Srivardhan Hebbar Reviewers: jpeg, cedric Differential Revision: https://phab.enlightenment.org/D3432 --- src/tests/eina/eina_test_str.c | 64 +++--- 1 file changed, 41 insertions(+), 23 deletions(-) diff --git a/src/tests/eina/eina_test_str.c b/src/tests/eina/eina_test_str.c index d13b32b..dcef1dc 100644 --- a/src/tests/eina/eina_test_str.c +++ b/src/tests/eina/eina_test_str.c @@ -365,29 +365,31 @@ START_TEST(str_strftime) } END_TEST +/* All cases are taken from https://en.wikipedia.org/wiki/Base64 */ +static const struct { + char *decoded_str; + char *encoded_normal; + char *encoded_url; + unsigned int len; + Eina_Bool not; +} tests[] = { + { "any carnal pleasure.", "YW55IGNhcm5hbCBwbGVhc3VyZS4=", "YW55IGNhcm5hbCBwbGVhc3VyZS4", 20 }, + { "any carnal pleasure.", "YW55IGNhcm5hbCBwbGVhc3VyZQ==", "YW55IGNhcm5hbCBwbGVhc3VyZQ", 19 }, + { "any carnal pleasure.", "YW55IGNhcm5hbCBwbGVhc3Vy", "YW55IGNhcm5hbCBwbGVhc3Vy", 18 }, + { "any carnal pleasure.", "YW55IGNhcm5hbCBwbGVhc3U=", "YW55IGNhcm5hbCBwbGVhc3U", 17 }, + { "any carnal pleasure.", "YW55IGNhcm5hbCBwbGVhcw==", "YW55IGNhcm5hbCBwbGVhcw", 16 }, + { "pleasure.", "cGxlYXN1cmUu", "cGxlYXN1cmUu", 9 }, + { "leasure.", "bGVhc3VyZS4=", "bGVhc3VyZS4", 8 }, + { "easure.", "ZWFzdXJlLg==", "ZWFzdXJlLg", 7 }, + { "asure.", "YXN1cmUu", "YXN1cmUu", 6 }, + { "sure.", "c3VyZS4=", "c3VyZS4", 5 }, + /* The following 2 cases are manually generated for -/ testing*/ + { "aabc123!?", "YWFiYzEyMyE/", "YWFiYzEyMyE_", 9 }, + { "abc123!?$*&()'-=@~", "YWJjMTIzIT8kKiYoKSctPUB+", "YWJjMTIzIT8kKiYoKSctPUB-", 18 } +}; + START_TEST(str_base64_encode_decode) { - /* All cases are taken from https://en.wikipedia.org/wiki/Base64 */ - static const struct { - char *decoded_str; - char *encoded_str; - int len; - Eina_Bool not; - } tests[] = { - { "any carnal pleasure.", "YW55IGNhcm5hbCBwbGVhc3VyZS4=", 20 }, - { "any carnal pleasure.", "YW55IGNhcm5hbCBwbGVhc3VyZQ==", 19 }, - { "any carnal pleasure.", "YW55IGNhcm5hbCBwbGVhc3Vy", 18 }, - { "any carnal pleasure.", "YW55IGNhcm5hbCBwbGVhc3U=", 17 }, - { "any carnal pleasure.", "YW55IGNhcm5hbCBwbGVhcw==", 16 }, - { "pleasure.", "cGxlYXN1cmUu", 9 }, - { "leasure.", "bGVhc3VyZS4=", 8 }, - { "easure.", "ZWFzdXJlLg==", 7 }, - { "asure.", "YXN1cmUu", 6 }, - { "sure.", "c3VyZS4=", 5 }, - /* The following 2 cases are manually generated for '-' and '/' testing*/ - { "aabc123!?", "YWFiYzEyMyE/", 9 }, - { "abc123!?$*&()'-=@~", "YWJjMTIzIT8kKiYoKSctPUB+", 18 } - }; unsigned int i; int len; unsigned char *decoded; @@ -397,9 +399,9 @@ START_TEST(str_base64_encode_decode) char *encoded; encoded = eina_str_base64_encode((unsigned char*) tests[i].decoded_str, tests[i].len); -fail_if(strcmp(encoded, tests[i].encoded_str)); +fail_if(strcmp(encoded, tests[i].encoded_normal)); -decoded = eina_str_base64_decode(tests[i].encoded_str, &len); +decoded = eina_str_base64_decode(tests[i].encoded_normal, &len); fail_if(memcmp(decoded, tests[i].decoded_str, tests[i].len)); fprintf(stderr, "len = %d, tests[%d].len = %d\n", len, i, tests[i].len); @@ -421,6 +423,21 @@ START_TEST(str_base64_encode_decode) } END_TEST +START_TEST(str_base64url_encode) +{ + unsigned int i; + + for (i = 0; i < sizeof (tests) / sizeof (tests[0]); i++) + { +char *encoded; + +encoded = eina_str_base64url_encode((unsigned char*) tests[i].decoded_str, tests[i].len); +fail_if(strcmp(encoded, tests[i].encoded_url)); +free(encoded); + } +} +END_TEST + #ifdef HAVE_ICONV START_TEST(str_convert) { @@ -461,6 +478,7 @@ eina_test_str(TCase *tc) tcase_add_test(tc, str_memdup); tcase_add_test(tc, str_strftime); tcase_add_test(tc, str_base64_encode_decode); + tcase_add_test(tc, str_base64url_encode); #ifdef HAVE_ICONV tcase_add_test(tc, str_convert); #endif --
[EGIT] [core/efl] master 01/01: Evas GL: Fix shaders for bigendian
jpeg pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=4a538ec2461a42507a1917cd63006507e52f5889 commit 4a538ec2461a42507a1917cd63006507e52f5889 Author: Jean-Philippe Andre Date: Wed Dec 16 15:55:10 2015 +0900 Evas GL: Fix shaders for bigendian Fixes T2918 --- src/modules/evas/engines/gl_common/shader/evas_gl_shaders.x | 4 ++-- src/modules/evas/engines/gl_common/shader/fragment.glsl | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/modules/evas/engines/gl_common/shader/evas_gl_shaders.x b/src/modules/evas/engines/gl_common/shader/evas_gl_shaders.x index 19120e2..a0132aa 100644 --- a/src/modules/evas/engines/gl_common/shader/evas_gl_shaders.x +++ b/src/modules/evas/engines/gl_common/shader/evas_gl_shaders.x @@ -67,13 +67,13 @@ static const char fragment_glsl[] = "# define SWZ \n" "#else\n" "# ifndef SHD_BGRA\n" - "# if defined(SHD_IMG) && defined(BIGENDIAN)\n" + "# if defined(SHD_IMG) && defined(SHD_BIGENDIAN)\n" "# define SWZ gbar\n" "# else\n" "# define SWZ bgra\n" "#endif\n" "# else\n" - "# if defined(SHD_IMG) && defined(BIGENDIAN)\n" + "# if defined(SHD_IMG) && defined(SHD_BIGENDIAN)\n" "# define SWZ grab\n" "# else\n" "# define SWZ rgba\n" diff --git a/src/modules/evas/engines/gl_common/shader/fragment.glsl b/src/modules/evas/engines/gl_common/shader/fragment.glsl index 3dce873..baa22e3 100644 --- a/src/modules/evas/engines/gl_common/shader/fragment.glsl +++ b/src/modules/evas/engines/gl_common/shader/fragment.glsl @@ -60,13 +60,13 @@ varying vec2 masktex_s[4]; # define SWZ #else # ifndef SHD_BGRA -# if defined(SHD_IMG) && defined(BIGENDIAN) +# if defined(SHD_IMG) && defined(SHD_BIGENDIAN) # define SWZ gbar # else # define SWZ bgra #endif # else -# if defined(SHD_IMG) && defined(BIGENDIAN) +# if defined(SHD_IMG) && defined(SHD_BIGENDIAN) # define SWZ grab # else # define SWZ rgba --
[EGIT] [core/efl] master 01/01: edje: add size_class test case
jpeg pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=395ed14f63ac7f96847c7a950ebc3a1f3a8360c6 commit 395ed14f63ac7f96847c7a950ebc3a1f3a8360c6 Author: Jee-Yong Um Date: Wed Dec 16 14:53:59 2015 +0900 edje: add size_class test case Summary: add edje size_class APIs' test case Reviewers: jpeg Reviewed By: jpeg Subscribers: cedric Differential Revision: https://phab.enlightenment.org/D3391 --- src/Makefile_Edje.am| 8 +++-- src/tests/edje/data/test_size_class.edc | 24 ++ src/tests/edje/edje_test_edje.c | 55 + 3 files changed, 85 insertions(+), 2 deletions(-) diff --git a/src/Makefile_Edje.am b/src/Makefile_Edje.am index 1e5059f..ca0eefc 100644 --- a/src/Makefile_Edje.am +++ b/src/Makefile_Edje.am @@ -255,6 +255,7 @@ tests/edje/data/test_parens.edc \ tests/edje/data/test_masking.edc \ tests/edje/data/test_filters.edc \ tests/edje/data/test_snapshot.edc \ +tests/edje/data/test_size_class.edc \ tests/edje/data/filter.lua @@ -297,6 +298,7 @@ EDJE_DATA_FILES = tests/edje/data/test_layout.edc \ tests/edje/data/test_masking.edc \ tests/edje/data/test_filters.edc \ tests/edje/data/test_snapshot.edc \ + tests/edje/data/test_size_class.edc \ tests/edje/data/filter.lua edjedatafilesdir = $(datadir)/edje/data @@ -305,14 +307,16 @@ edjedatafiles_DATA = tests/edje/data/test_layout.edj \ tests/edje/data/test_parens.edj \ tests/edje/data/test_masking.edj \ tests/edje/data/test_filters.edj \ - tests/edje/data/test_snapshot.edj + tests/edje/data/test_snapshot.edj \ + tests/edje/data/test_size_class.edj CLEANFILES += tests/edje/data/test_layout.edj \ tests/edje/data/complex_layout.edj \ tests/edje/data/test_parens.edj \ tests/edje/data/test_masking.edj \ tests/edje/data/test_filters.edj \ - tests/edje/data/test_snapshot.edj + tests/edje/data/test_snapshot.edj \ + tests/edje/data/test_size_class.edj endif diff --git a/src/tests/edje/data/test_size_class.edc b/src/tests/edje/data/test_size_class.edc new file mode 100644 index 000..1baf831 --- /dev/null +++ b/src/tests/edje/data/test_size_class.edc @@ -0,0 +1,24 @@ +collections { + group { name: "test_group"; + parts { + part { name: "background"; +type: RECT; +description { state: "default" 0.0; + color: 33 32 32 255; + rel1.relative: 0 0; + rel2.relative: 1 1; + max: 200 200; +} + } + part { name: "rect"; +type: RECT; +description { state: "default" 0.0; + rel1.relative: 0.5 0.5; + rel2.relative: 0.5 0.5; + min: 50 50; + size_class: "rect_size"; +} + } + } + } +} diff --git a/src/tests/edje/edje_test_edje.c b/src/tests/edje/edje_test_edje.c index 631abea..536de1d 100644 --- a/src/tests/edje/edje_test_edje.c +++ b/src/tests/edje/edje_test_edje.c @@ -273,6 +273,60 @@ START_TEST(edje_test_snapshot) } END_TEST +START_TEST(edje_test_size_class) +{ + int minw, minh, minw2, minh2; + Evas *evas = EDJE_TEST_INIT_EVAS(); + Eina_List *l; + Eina_Stringshare *name; + Evas_Object *obj, *obj2; + Eina_Bool b; + + obj = edje_object_add(evas); + fail_unless(edje_object_file_set(obj, test_layout_get("test_size_class.edj"), "test_group")); + + obj2 = edje_object_add(evas); + fail_unless(edje_object_file_set(obj2, test_layout_get("test_size_class.edj"), "test_group")); + + evas_object_resize(obj, 200, 200); + evas_object_resize(obj2, 200, 200); + + /* check predefined min size of rect part by edc */ + edje_object_part_geometry_get(obj, "rect", NULL, NULL, &minw, &minh); + fail_if(minw != 50 || minh != 50); + + /* check that edje_size_class_set works */ + b = edje_size_class_set("rect_size", 100, 100, -1, -1); + edje_object_part_geometry_get(obj, "rect", NULL, NULL, &minw, &minh); + edje_object_part_geometry_get(obj2, "rect", NULL, NULL, &minw2, &minh2); + fail_if(!b || minw != 100 || minh != 100 || minw2 != 100 || minh2 != 100); + + /* check that edje_size_class_get works */ + b = edje_size_class_get("rect_size", &minw, &minh, NULL, NULL); + fail_if(!b || minw != 100 || minh != 100); + + /* check that edje_size_class_list works */ + l = edje_size_class_list(); + EINA_LIST_FREE(l, name) + { +fail_if(strcmp(name, "rect_size")); +eina_stringshare_del(name); + } + + /* check that edje_object_size_class_set works */ + b = edje_object_size_class_set(obj, "rect_size", 150, 150, -1, -1); + edj
[EGIT] [tools/enventor] master 02/02: Localization: update localization and enventor.pot content.
nikawhite pushed a commit to branch master. http://git.enlightenment.org/tools/enventor.git/commit/?id=3fc121acd54e8b2b7f36b41ed7bcf5cf9814bb69 commit 3fc121acd54e8b2b7f36b41ed7bcf5cf9814bb69 Author: Mykyta Biliavskyi Date: Wed Dec 16 10:30:30 2015 +0900 Localization: update localization and enventor.pot content. --- po/en.po| 100 po/enventor.pot | 100 po/ru.po| 74 +++-- 3 files changed, 177 insertions(+), 97 deletions(-) diff --git a/po/en.po b/po/en.po index 1be1b2f..2783ece 100644 --- a/po/en.po +++ b/po/en.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: enventor 0.6.0\n" "Report-Msgid-Bugs-To: enlightenment-de...@lists.sourceforge.net\n" -"POT-Creation-Date: 2015-11-17 17:37+\n" +"POT-Creation-Date: 2015-12-16 10:22+0900\n" "PO-Revision-Date: 2015-11-17 17:37+\n" "Last-Translator: nikawhite belyavski...@gmail.com \n" "Language-Team: \n" @@ -21,30 +21,30 @@ msgstr "" msgid "%s - Enventor" msgstr "" -#: src/bin/config_data.c:66 +#: src/bin/config_data.c:67 msgid "Failed to generate tmp folder!" msgstr "" -#: src/bin/config_data.c:85 src/bin/config_data.c:98 +#: src/bin/config_data.c:86 src/bin/config_data.c:99 #, c-format msgid "Cannot create a config folder \"%s\"" msgstr "" -#: src/bin/config_data.c:109 +#: src/bin/config_data.c:110 #, c-format msgid "Cannot save a config file \"%s\"" msgstr "" -#: src/bin/config_data.c:148 +#: src/bin/config_data.c:149 #, c-format msgid "Cannot load a config file \"%s\"" msgstr "" -#: src/bin/config_data.c:156 src/bin/file_mgr.c:193 src/bin/goto.c:132 +#: src/bin/config_data.c:157 src/bin/file_mgr.c:193 src/bin/goto.c:132 #: src/bin/menu.c:687 src/bin/newfile.c:140 src/bin/panes.c:281 -#: src/bin/search.c:332 src/bin/setting.c:467 src/bin/statusbar.c:42 -#: src/bin/text_setting.c:487 src/bin/text_setting.c:540 -#: src/bin/text_setting.c:571 src/bin/text_setting.c:1070 src/bin/tools.c:170 +#: src/bin/search.c:332 src/bin/setting.c:476 src/bin/statusbar.c:42 +#: src/bin/text_setting.c:490 src/bin/text_setting.c:543 +#: src/bin/text_setting.c:574 src/bin/text_setting.c:1087 src/bin/tools.c:170 msgid "Failed to allocate Memory!" msgstr "" @@ -131,37 +131,37 @@ msgstr "" msgid "Auto Indentation Disabled." msgstr "" -#: src/bin/main.c:179 +#: src/bin/main.c:180 #, c-format msgid "Live View Scale: %2.2fx" msgstr "" -#: src/bin/main.c:205 +#: src/bin/main.c:206 #, c-format msgid "Font Size: %1.1fx" msgstr "" -#: src/bin/main.c:458 +#: src/bin/main.c:459 #, c-format msgid "Program Run: \"%s\"" msgstr "" -#: src/bin/main.c:557 +#: src/bin/main.c:558 msgid "Insertion of template code is disabled while in Live Edit mode" msgstr "" -#: src/bin/main.c:565 +#: src/bin/main.c:566 #, c-format msgid "Template code inserted, (%s)" msgstr "" -#: src/bin/main.c:571 +#: src/bin/main.c:572 msgid "" "Can't insert template code here. Move the cursor inside the \"Collections," "Images,Parts,Part,Programs\" scope." msgstr "" -#: src/bin/main.c:824 +#: src/bin/main.c:825 #, c-format msgid "Failed to grab key - %s" msgstr "" @@ -170,7 +170,7 @@ msgstr "" msgid "New File: Choose a template" msgstr "" -#: src/bin/menu.c:168 src/bin/menu.c:212 src/bin/setting.c:522 +#: src/bin/menu.c:168 src/bin/menu.c:212 src/bin/setting.c:532 msgid "Cancel" msgstr "" @@ -232,7 +232,7 @@ msgstr "" msgid "New" msgstr "" -#: src/bin/menu.c:656 +#: src/bin/menu.c:656 src/bin/setting.c:492 msgid "Settings" msgstr "" @@ -292,76 +292,104 @@ msgstr "" msgid "Replace All" msgstr "" -#: src/bin/setting.c:288 +#: src/bin/setting.c:249 +msgid "Image Paths:" +msgstr "" + +#: src/bin/setting.c:257 +msgid "Sound Paths:" +msgstr "" + +#: src/bin/setting.c:265 +msgid "Font Paths:" +msgstr "" + +#: src/bin/setting.c:273 +msgid "Data Paths:" +msgstr "" + +#: src/bin/setting.c:278 +msgid "Preferences:" +msgstr "" + +#: src/bin/setting.c:297 msgid "Live View Scale" msgstr "" -#: src/bin/setting.c:315 +#: src/bin/setting.c:324 msgid "Fixed Live View Size" msgstr "" -#: src/bin/setting.c:376 +#: src/bin/setting.c:385 msgid "Part Highlighting" msgstr "" -#: src/bin/setting.c:381 +#: src/bin/setting.c:390 msgid "Dummy Swallow" msgstr "" -#: src/bin/setting.c:386 +#: src/bin/setting.c:395 msgid "Status" msgstr "" -#: src/bin/setting.c:391 +#: src/bin/setting.c:400 msgid "Tools" msgstr "" -#: src/bin/setting.c:396 +#: src/bin/setting.c:405 msgid "Auto Hiding Console" msgstr "" -#: src/bin/setting.c:492 +#: src/bin/setting.c:502 msgid "General" msgstr "" -#: src/bin/setting.c:493 +#: src/bin/setting.c:503 msgid "Text Editor" msgstr "" -#: src/bin/setting.c:508 +#: src/bin/setting.c:518 msgid "Apply" msgstr "" -#: src/bin/setting.c:515 +#: src/bin/setting.c:525 msgid "Reset" msgstr "" -#: src/bin/text_setting.c:5
[EGIT] [tools/enventor] master 01/02: Localization: add texts from setting layouts to locale.
nikawhite pushed a commit to branch master. http://git.enlightenment.org/tools/enventor.git/commit/?id=d1c5cebb24e6f3cbdcb297453624aa616123 commit d1c5cebb24e6f3cbdcb297453624aa616123 Author: Mykyta Biliavskyi Date: Wed Dec 16 10:09:50 2015 +0900 Localization: add texts from setting layouts to locale. --- src/bin/setting.c | 7 +++ src/bin/text_setting.c | 1 + 2 files changed, 8 insertions(+) diff --git a/src/bin/setting.c b/src/bin/setting.c index 3d3c9ca..786d9bc 100644 --- a/src/bin/setting.c +++ b/src/bin/setting.c @@ -246,6 +246,7 @@ general_layout_create(setting_data *sd, Evas_Object *parent) elm_object_focus_set(img_path_entry, EINA_TRUE); elm_object_part_content_set(layout, "elm.swallow.img_path_entry", img_path_entry); + elm_layout_text_set(layout, "img_path_guide", _("Image Paths:")); //Sound Path Entry Evas_Object *snd_path_entry = entry_create(layout); @@ -253,12 +254,15 @@ general_layout_create(setting_data *sd, Evas_Object *parent) (Eina_List *)config_snd_path_list_get()); elm_object_part_content_set(layout, "elm.swallow.snd_path_entry", snd_path_entry); + elm_layout_text_set(layout, "snd_path_guide", _("Sound Paths:")); + //Font Path Entry Evas_Object *fnt_path_entry = entry_create(layout); fnt_path_entry_update(fnt_path_entry, (Eina_List *)config_fnt_path_list_get()); elm_object_part_content_set(layout, "elm.swallow.fnt_path_entry", fnt_path_entry); + elm_layout_text_set(layout, "fnt_path_guide", _("Font Paths:")); //Data Path Entry Evas_Object *dat_path_entry = entry_create(layout); @@ -266,10 +270,12 @@ general_layout_create(setting_data *sd, Evas_Object *parent) (Eina_List *)config_dat_path_list_get()); elm_object_part_content_set(layout, "elm.swallow.dat_path_entry", dat_path_entry); + elm_layout_text_set(layout, "dat_path_guide", _("Data Paths:")); //Preference Evas_Object *scroller = elm_scroller_add(layout); elm_object_part_content_set(layout, "elm.swallow.preference", scroller); + elm_layout_text_set(layout, "preference_guide", _("Preferences:")); //Box Evas_Object *box = elm_box_add(scroller); @@ -483,6 +489,7 @@ setting_open(void) elm_object_signal_callback_add(layout, "elm,state,dismiss,done", "", setting_dismiss_done_cb, sd); evas_object_size_hint_weight_set(layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + elm_layout_text_set(layout, "title_name", _("Settings")); evas_object_show(layout); base_win_resize_object_add(layout); diff --git a/src/bin/text_setting.c b/src/bin/text_setting.c index 071eef8..e4fb384 100644 --- a/src/bin/text_setting.c +++ b/src/bin/text_setting.c @@ -799,6 +799,7 @@ text_setting_layout_create(Evas_Object *parent) elm_entry_editable_set(entry, EINA_FALSE); evas_object_size_hint_weight_set(entry, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); evas_object_size_hint_align_set(entry, EVAS_HINT_FILL, EVAS_HINT_FILL); + elm_layout_text_set(layout, "text_setting_guide", _("Double click a keyword to change its color :")); //Font information const char *font_name; --
[EGIT] [core/efl] master 01/01: emile: fix compilation with --enable-liblz4
cedric pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=c46ab1d864ba274fd1950a87e5d7559eb42fe5e2 commit c46ab1d864ba274fd1950a87e5d7559eb42fe5e2 Author: Hein-Pieter van Braam Date: Tue Dec 15 17:15:46 2015 -0800 emile: fix compilation with --enable-liblz4 Signed-off-by: Cedric BAIL --- src/Makefile_Emile.am | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Makefile_Emile.am b/src/Makefile_Emile.am index 17e5151..423650d 100644 --- a/src/Makefile_Emile.am +++ b/src/Makefile_Emile.am @@ -54,7 +54,7 @@ lib_emile_libemile_la_LIBADD = @EMILE_LIBS@ lib_emile_libemile_la_DEPENDENCIES = @EMILE_INTERNAL_LIBS@ lib_emile_libemile_la_LDFLAGS = @EFL_LTLIBRARY_FLAGS@ -if ! ENABLE_LIBLZ4 +if ENABLE_LIBLZ4 lib_emile_libemile_la_LIBADD += @LIBLZ4_LIBS@ endif --
[EGIT] [core/efl] efl-1.16 01/01: emile: fix compilation with --enable-liblz4
cedric pushed a commit to branch efl-1.16. http://git.enlightenment.org/core/efl.git/commit/?id=ba8dac9172684db1d6a5eb02fb3f5f78d3f58eb3 commit ba8dac9172684db1d6a5eb02fb3f5f78d3f58eb3 Author: Hein-Pieter van Braam Date: Tue Dec 15 17:15:46 2015 -0800 emile: fix compilation with --enable-liblz4 Signed-off-by: Cedric BAIL --- src/Makefile_Emile.am | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Makefile_Emile.am b/src/Makefile_Emile.am index 17e5151..423650d 100644 --- a/src/Makefile_Emile.am +++ b/src/Makefile_Emile.am @@ -54,7 +54,7 @@ lib_emile_libemile_la_LIBADD = @EMILE_LIBS@ lib_emile_libemile_la_DEPENDENCIES = @EMILE_INTERNAL_LIBS@ lib_emile_libemile_la_LDFLAGS = @EFL_LTLIBRARY_FLAGS@ -if ! ENABLE_LIBLZ4 +if ENABLE_LIBLZ4 lib_emile_libemile_la_LIBADD += @LIBLZ4_LIBS@ endif --
[EGIT] [core/efl] efl-1.14 01/01: emile: fix compilation with --enable-liblz4
cedric pushed a commit to branch efl-1.14. http://git.enlightenment.org/core/efl.git/commit/?id=14ea2662087ad300a253c490f5cfc8c589908a1f commit 14ea2662087ad300a253c490f5cfc8c589908a1f Author: Hein-Pieter van Braam Date: Tue Dec 15 17:15:46 2015 -0800 emile: fix compilation with --enable-liblz4 Signed-off-by: Cedric BAIL --- src/Makefile_Emile.am | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Makefile_Emile.am b/src/Makefile_Emile.am index 9607b52..8fb6dc8 100644 --- a/src/Makefile_Emile.am +++ b/src/Makefile_Emile.am @@ -54,7 +54,7 @@ lib_emile_libemile_la_LIBADD = @EMILE_LIBS@ lib_emile_libemile_la_DEPENDENCIES = @EMILE_INTERNAL_LIBS@ lib_emile_libemile_la_LDFLAGS = @EFL_LTLIBRARY_FLAGS@ -if ! ENABLE_LIBLZ4 +if ENABLE_LIBLZ4 lib_emile_libemile_la_LIBADD += @LIBLZ4_LIBS@ endif --
[EGIT] [core/efl] efl-1.15 01/01: emile: fix compilation with --enable-liblz4
cedric pushed a commit to branch efl-1.15. http://git.enlightenment.org/core/efl.git/commit/?id=d3f91f5e41607a96f90e699b2d3ed1c87b9517b9 commit d3f91f5e41607a96f90e699b2d3ed1c87b9517b9 Author: Hein-Pieter van Braam Date: Tue Dec 15 17:15:46 2015 -0800 emile: fix compilation with --enable-liblz4 Signed-off-by: Cedric BAIL --- src/Makefile_Emile.am | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Makefile_Emile.am b/src/Makefile_Emile.am index 17e5151..423650d 100644 --- a/src/Makefile_Emile.am +++ b/src/Makefile_Emile.am @@ -54,7 +54,7 @@ lib_emile_libemile_la_LIBADD = @EMILE_LIBS@ lib_emile_libemile_la_DEPENDENCIES = @EMILE_INTERNAL_LIBS@ lib_emile_libemile_la_LDFLAGS = @EFL_LTLIBRARY_FLAGS@ -if ! ENABLE_LIBLZ4 +if ENABLE_LIBLZ4 lib_emile_libemile_la_LIBADD += @LIBLZ4_LIBS@ endif --
[EGIT] [core/efl] master 01/01: evas: update/clarify RENDER_FLUSH callback docs
discomfitor pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=fc4b927a83979d86fdd6e44ef720ef1a876f495e commit fc4b927a83979d86fdd6e44ef720ef1a876f495e Author: Mike Blumenkrantz Date: Tue Dec 15 17:57:37 2015 -0500 evas: update/clarify RENDER_FLUSH callback docs --- src/lib/evas/canvas/evas_types.eot | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/lib/evas/canvas/evas_types.eot b/src/lib/evas/canvas/evas_types.eot index 818aa6a..2b41d4e 100644 --- a/src/lib/evas/canvas/evas_types.eot +++ b/src/lib/evas/canvas/evas_types.eot @@ -193,8 +193,8 @@ enum Evas.Callback_Type canvas_focus_in, [[Canvas got focus as a whole]] canvas_focus_out, [[Canvas lost focus as a whole]] - render_flush_pre, [[Called just before rendering is updated on the canvas target]] - render_flush_post, [[Called just after rendering is updated on the canvas target]] + render_flush_pre, [[Called after render update regions have been calculated, but only if update regions exist]] + render_flush_post, [[Called after render update regions have been sent to the display server, but only if update regions existed for the most recent frame]] canvas_object_focus_in, [[Canvas object got focus]] canvas_object_focus_ouT, [[Canvas object lost focus]] --
[EGIT] [apps/ephoto] master 01/01: Ephoto: Add ability to search images
okra pushed a commit to branch master. http://git.enlightenment.org/apps/ephoto.git/commit/?id=230ffeaa8caf326d8fb10ca61b5f710cc64a9b3a commit 230ffeaa8caf326d8fb10ca61b5f710cc64a9b3a Author: Stephen okra Houston Date: Tue Dec 15 16:42:38 2015 -0600 Ephoto: Add ability to search images --- TODO | 1 - src/bin/ephoto_thumb_browser.c | 206 +++-- 2 files changed, 179 insertions(+), 28 deletions(-) diff --git a/TODO b/TODO index fead8c3..e3a12fd 100644 --- a/TODO +++ b/TODO @@ -6,7 +6,6 @@ Add more effects, filters as necessary Clean up Cropper -Thumb Browser: Add ability to view more info on image(Exif perhaps?) -Add ability to search -Slideshow: Possibly look at implementing moving slideshows. -Other Possibilities: diff --git a/src/bin/ephoto_thumb_browser.c b/src/bin/ephoto_thumb_browser.c index 054b4ba..2378f6b 100644 --- a/src/bin/ephoto_thumb_browser.c +++ b/src/bin/ephoto_thumb_browser.c @@ -22,6 +22,7 @@ struct _Ephoto_Thumb_Browser Ephoto *ephoto; Evas_Object *main; Evas_Object *table; + Evas_Object *gridbox; Evas_Object *grid; Evas_Object *nolabel; Evas_Object *infolabel; @@ -32,8 +33,10 @@ struct _Ephoto_Thumb_Browser Evas_Object *leftbox; Evas_Object *direntry; Evas_Object *ficon; + Evas_Object *search; Elm_Object_Item *dir_current; Elm_Object_Item *last_sel; + Elm_Object_Item *last_search; Ephoto_Sort sort; Eio_File *ls; Eina_List *cut_items; @@ -49,6 +52,7 @@ struct _Ephoto_Thumb_Browser int totimages; int file_errors; int dragging; + int searching; double totsize; struct { @@ -120,6 +124,7 @@ _on_list_expanded(void *data, Evas_Object *obj EINA_UNUSED, void *event_info) tb->thumbs_only = 0; ephoto_directory_set(tb->ephoto, path, it, tb->dirs_only, tb->thumbs_only); ephoto_title_set(tb->ephoto, tb->ephoto->config->directory); + elm_object_focus_set(tb->main, EINA_TRUE); } static void @@ -143,6 +148,7 @@ _on_list_contracted(void *data, Evas_Object *obj EINA_UNUSED, void *event_info) tb->dirs_only, tb->thumbs_only); ephoto_title_set(tb->ephoto, tb->ephoto->config->directory); + elm_object_focus_set(tb->main, EINA_TRUE); } static void @@ -158,6 +164,7 @@ _dir_job(void *data) ephoto_directory_set(tb->ephoto, path, NULL, tb->dirs_only, tb->thumbs_only); ephoto_title_set(tb->ephoto, tb->ephoto->config->directory); + elm_object_focus_set(tb->main, EINA_TRUE); } static void @@ -519,6 +526,7 @@ _ephoto_dir_go_up(void *data, Evas_Object *obj EINA_UNUSED, ephoto_directory_set(tb->ephoto, dirname(path), NULL, tb->dirs_only, tb->thumbs_only); ephoto_title_set(tb->ephoto, tb->ephoto->config->directory); +elm_object_focus_set(tb->main, EINA_TRUE); } } @@ -539,6 +547,7 @@ _ephoto_dir_go_trash(void *data, Evas_Object *obj EINA_UNUSED, ephoto_directory_set(tb->ephoto, path, NULL, tb->dirs_only, tb->thumbs_only); ephoto_title_set(tb->ephoto, _("Trash")); + elm_object_focus_set(tb->main, EINA_TRUE); } static void @@ -558,10 +567,64 @@ _ephoto_direntry_go(void *data, Evas_Object *obj EINA_UNUSED, ephoto_directory_set(tb->ephoto, dir, NULL, tb->dirs_only, tb->thumbs_only); ephoto_title_set(tb->ephoto, tb->ephoto->config->directory); +elm_object_focus_set(tb->main, EINA_TRUE); } } static void +_ephoto_search_go(void *data, Evas_Object *obj EINA_UNUSED, +void *event_info EINA_UNUSED) +{ + Evas_Object *search = data; + Ephoto_Thumb_Browser *tb = evas_object_data_get(search, "thumb_browser"); + Elm_Object_Item *next = NULL; + Elm_Object_Item *found = NULL; + Elm_Object_Item *o = NULL; + Eina_List *sel = eina_list_clone(elm_gengrid_selected_items_get(tb->grid)); + Eina_List *l; + const char *search_text = elm_object_text_get(search); + char pattern[PATH_MAX]; + + if (tb->last_search) + next = elm_gengrid_item_next_get(tb->last_search); + if (!next) + next = elm_gengrid_first_item_get(tb->grid); + + snprintf(pattern, PATH_MAX, "*%s*", search_text); + + EINA_LIST_FOREACH(sel, l, o) + { +elm_gengrid_item_selected_set(o, EINA_FALSE); + } + eina_list_free(sel); + + found = elm_gengrid_search_by_text_item_get(tb->grid, next, NULL, pattern, + ELM_GLOB_MATCH_NOCASE); + tb->last_search = found; + if (found) + { +elm_gengrid_item_selected_set(found, EINA_TRUE); +elm_gengrid_item_bring_in(found, ELM_GENGRID_ITEM_SCROLLTO_MIDDLE); +elm_object_focus_set(search, EINA_TRUE); + } +} + +static void +_ephoto_search_cancel(void *data, Evas_Object *obj EINA_UNUSED, +void *event_info EINA_UNUSED) +{ + Evas_Object *search = data; + Evas_Object *hbox = evas_object_data_get(search, "parent"); + Ephoto_Thumb_Browser *tb = evas_object_data_get(search, "thumb_browser"); + + evas_object_del(
[EGIT] [apps/terminology] master 01/01: do not force full textgrid width update if preedit_str is ""
discomfitor pushed a commit to branch master. http://git.enlightenment.org/apps/terminology.git/commit/?id=7f53f4daf784d073f9c4c0ad3072f146314bbde7 commit 7f53f4daf784d073f9c4c0ad3072f146314bbde7 Author: Mike Blumenkrantz Date: Tue Dec 15 17:29:44 2015 -0500 do not force full textgrid width update if preedit_str is "" in many cases this will be the value which has been set, so ignoring it will yield moderate performance improvements Reviewed-by: Boris Faure --- src/bin/termio.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/bin/termio.c b/src/bin/termio.c index 8b04b81..d75f8ab 100644 --- a/src/bin/termio.c +++ b/src/bin/termio.c @@ -4821,7 +4821,7 @@ _smart_apply(Evas_Object *obj) evas_object_textgrid_update_add(sd->grid.obj, ch1, y, ch2 - ch1 + 1, 1); } - if (sd->preedit_str) + if (sd->preedit_str && sd->preedit_str[0]) { Eina_Unicode *uni, g; int len = 0, i, jump, xx, backx; --
[EGIT] [core/efl] master 05/05: evas: do not unset/delete master clip after every frame
discomfitor pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=fb8c547077024dfe0287beb3b9359c0e002fa183 commit fb8c547077024dfe0287beb3b9359c0e002fa183 Author: Mike Blumenkrantz Date: Tue Dec 15 17:21:42 2015 -0500 evas: do not unset/delete master clip after every frame this is not ideal since it triggers a client-side rerender of every object which was clipped to the master clip (double render) and then this ends up forcing the server to rerender the same area twice as well not only that, it causes all surface damages to to be the size of the entire window - framespace for every frame @fix --- src/lib/evas/canvas/evas_render.c | 20 1 file changed, 20 deletions(-) diff --git a/src/lib/evas/canvas/evas_render.c b/src/lib/evas/canvas/evas_render.c index 3247b7c..4ae9af9 100644 --- a/src/lib/evas/canvas/evas_render.c +++ b/src/lib/evas/canvas/evas_render.c @@ -2882,26 +2882,6 @@ evas_render_updates_internal(Evas *eo_e, } } - if (!strncmp(e->engine.module->definition->name, "wayland", 7)) - { -/* unclip objects from master clip */ -for (i = 0; i < e->render_objects.count; ++i) - { - obj = eina_array_data_get(&e->render_objects, i); - if (obj->is_frame) continue; - if (obj->object == e->framespace.clip) continue; - - if (evas_object_clip_get(obj->object) == e->framespace.clip) - { - /* unclip this object from the master clip */ - evas_object_clip_unset(obj->object); - } - } - -/* delete master clip */ -evas_object_del(e->framespace.clip); -e->framespace.clip = NULL; - } e->changed = EINA_FALSE; e->viewport.changed = EINA_FALSE; --
[EGIT] [core/efl] master 04/05: evas: trigger FLUSH_PRE callback prior to kicking off an async render
discomfitor pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=1d3c4162b3d863a798c68865829c892c0832d903 commit 1d3c4162b3d863a798c68865829c892c0832d903 Author: Mike Blumenkrantz Date: Tue Dec 15 17:18:36 2015 -0500 evas: trigger FLUSH_PRE callback prior to kicking off an async render while not occurring immediately before flush as in sync rendering, this is functionally close enough that it will serve the purpose for which the callback was intended, namely receiving a callback that occurs after render update calculations have occurred but before flush happens @fix ref cbb447c878ef779230ebf4470b615b8276c50fa2 --- src/lib/evas/canvas/evas_render.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/lib/evas/canvas/evas_render.c b/src/lib/evas/canvas/evas_render.c index 90bb687..3247b7c 100644 --- a/src/lib/evas/canvas/evas_render.c +++ b/src/lib/evas/canvas/evas_render.c @@ -2787,7 +2787,8 @@ evas_render_updates_internal(Evas *eo_e, eo_ref(eo_e); e->rendering = EINA_TRUE; _rendering_evases = eina_list_append(_rendering_evases, e); - + if (haveup) + _cb_always_call(eo_e, EVAS_CALLBACK_RENDER_FLUSH_PRE, NULL); evas_thread_queue_flush((Evas_Thread_Command_Cb)done_func, done_data); } else if (haveup) @@ -3009,7 +3010,6 @@ evas_render_wakeup(Evas *eo_e) { _evas_object_image_video_overlay_do(eo_obj); } -_cb_always_call(eo_e, EVAS_CALLBACK_RENDER_FLUSH_PRE, NULL); _cb_always_call(eo_e, EVAS_CALLBACK_RENDER_FLUSH_POST, NULL); } --
[EGIT] [core/efl] master 01/05: ecore-evas wayland: move frame sending to pre-flush callback
discomfitor pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=54df1d9c6a5e42d72aadc59265fbd64e7f7871b3 commit 54df1d9c6a5e42d72aadc59265fbd64e7f7871b3 Author: Mike Blumenkrantz Date: Tue Dec 15 17:14:43 2015 -0500 ecore-evas wayland: move frame sending to pre-flush callback it was possible to deadlock rendering if a pre-render occurred but the resulting render had no updated regions @fix --- .../ecore_evas/engines/wayland/ecore_evas_wayland_common.c| 11 +-- .../ecore_evas/engines/wayland/ecore_evas_wayland_egl.c | 3 --- .../ecore_evas/engines/wayland/ecore_evas_wayland_shm.c | 3 --- 3 files changed, 1 insertion(+), 16 deletions(-) diff --git a/src/modules/ecore_evas/engines/wayland/ecore_evas_wayland_common.c b/src/modules/ecore_evas/engines/wayland/ecore_evas_wayland_common.c index 75ac428..f10f4d0 100644 --- a/src/modules/ecore_evas/engines/wayland/ecore_evas_wayland_common.c +++ b/src/modules/ecore_evas/engines/wayland/ecore_evas_wayland_common.c @@ -1289,7 +1289,7 @@ static const struct wl_callback_listener _anim_listener = }; void -_ecore_evas_wl_common_render_pre(void *data, Evas *evas EINA_UNUSED, void *event EINA_UNUSED) +_ecore_evas_wl_common_render_flush_pre(void *data, Evas *evas EINA_UNUSED, void *event EINA_UNUSED) { Ecore_Evas *ee = data; Ecore_Evas_Engine_Wl_Data *wdata; @@ -1299,15 +1299,6 @@ _ecore_evas_wl_common_render_pre(void *data, Evas *evas EINA_UNUSED, void *event wl_surface_frame(ecore_wl2_window_surface_get(wdata->win)); wl_callback_add_listener(wdata->anim_callback, &_anim_listener, ee); ecore_evas_manual_render_set(ee, 1); -} - -void -_ecore_evas_wl_common_render_flush_pre(void *data, Evas *evas EINA_UNUSED, void *event EINA_UNUSED) -{ - Ecore_Evas *ee = data; - Ecore_Evas_Engine_Wl_Data *wdata; - - wdata = ee->engine.data; if (wdata->win->configure_ack && wdata->win->configure_serial) wdata->win->configure_ack(wdata->win->xdg_surface, wdata->win->configure_serial); diff --git a/src/modules/ecore_evas/engines/wayland/ecore_evas_wayland_egl.c b/src/modules/ecore_evas/engines/wayland/ecore_evas_wayland_egl.c index 8836630..c6def65 100644 --- a/src/modules/ecore_evas/engines/wayland/ecore_evas_wayland_egl.c +++ b/src/modules/ecore_evas/engines/wayland/ecore_evas_wayland_egl.c @@ -314,9 +314,6 @@ ecore_evas_wayland_egl_new_internal(const char *disp_name, unsigned int parent, evas_event_callback_add(ee->evas, EVAS_CALLBACK_RENDER_POST, _ecore_evas_wl_common_render_updates, ee); - evas_event_callback_add(ee->evas, EVAS_CALLBACK_RENDER_PRE, -_ecore_evas_wl_common_render_pre, ee); - evas_event_callback_add(ee->evas, EVAS_CALLBACK_RENDER_FLUSH_PRE, _ecore_evas_wl_common_render_flush_pre, ee); diff --git a/src/modules/ecore_evas/engines/wayland/ecore_evas_wayland_shm.c b/src/modules/ecore_evas/engines/wayland/ecore_evas_wayland_shm.c index c815f79..be092fb 100644 --- a/src/modules/ecore_evas/engines/wayland/ecore_evas_wayland_shm.c +++ b/src/modules/ecore_evas/engines/wayland/ecore_evas_wayland_shm.c @@ -312,9 +312,6 @@ ecore_evas_wayland_shm_new_internal(const char *disp_name, unsigned int parent, evas_event_callback_add(ee->evas, EVAS_CALLBACK_RENDER_POST, _ecore_evas_wl_common_render_updates, ee); - evas_event_callback_add(ee->evas, EVAS_CALLBACK_RENDER_PRE, -_ecore_evas_wl_common_render_pre, ee); - evas_event_callback_add(ee->evas, EVAS_CALLBACK_RENDER_FLUSH_PRE, _ecore_evas_wl_common_render_flush_pre, ee); --
[EGIT] [core/efl] master 02/05: evas: do not add unclipped smart members to the master clip
discomfitor pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=990c23c840e1da53a4d3accd96d7645927129f2b commit 990c23c840e1da53a4d3accd96d7645927129f2b Author: Mike Blumenkrantz Date: Tue Dec 15 17:16:26 2015 -0500 evas: do not add unclipped smart members to the master clip this is probably a pretty unlikely scenario, but messing with smart members in this way is probably not a great idea @fix --- src/lib/evas/canvas/evas_render.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/lib/evas/canvas/evas_render.c b/src/lib/evas/canvas/evas_render.c index 1645ebc..830516e 100644 --- a/src/lib/evas/canvas/evas_render.c +++ b/src/lib/evas/canvas/evas_render.c @@ -2527,7 +2527,7 @@ evas_render_updates_internal(Evas *eo_e, if (!eina_rectangles_intersect(&clip_rect, &obj_rect)) continue; - if (!evas_object_clip_get(obj->object)) + if ((!evas_object_clip_get(obj->object)) && (!obj->smart.parent)) { /* clip this object to the master clip */ evas_object_clip_set(obj->object, e->framespace.clip); --
[EGIT] [core/efl] master 03/05: evas: resize master clip if framespace|viewport.changed is set
discomfitor pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=092d7a6f3d3015b258bdada1a33c676d99eec0c7 commit 092d7a6f3d3015b258bdada1a33c676d99eec0c7 Author: Mike Blumenkrantz Date: Tue Dec 15 17:17:36 2015 -0500 evas: resize master clip if framespace|viewport.changed is set --- src/lib/evas/canvas/evas_render.c | 4 1 file changed, 4 insertions(+) diff --git a/src/lib/evas/canvas/evas_render.c b/src/lib/evas/canvas/evas_render.c index 830516e..90bb687 100644 --- a/src/lib/evas/canvas/evas_render.c +++ b/src/lib/evas/canvas/evas_render.c @@ -2600,6 +2600,10 @@ evas_render_updates_internal(Evas *eo_e, ERR("viewport size != output size!"); } + if (e->framespace.clip && (e->framespace.changed || e->viewport.changed)) + evas_object_resize(e->framespace.clip, + e->viewport.w - e->framespace.w, + e->viewport.h - e->framespace.h); if (e->framespace.changed) { /* NB: If the framespace changes, we need to add a redraw rectangle --
[EGIT] [apps/ephoto] master 01/01: Ephoto: No reason to block window with popup on directory load.
okra pushed a commit to branch master. http://git.enlightenment.org/apps/ephoto.git/commit/?id=598e33f646a93387dcd5d64fe4a2ee12aa616f0c commit 598e33f646a93387dcd5d64fe4a2ee12aa616f0c Author: Stephen okra Houston Date: Tue Dec 15 12:39:46 2015 -0600 Ephoto: No reason to block window with popup on directory load. --- src/bin/ephoto_thumb_browser.c | 25 + 1 file changed, 1 insertion(+), 24 deletions(-) diff --git a/src/bin/ephoto_thumb_browser.c b/src/bin/ephoto_thumb_browser.c index be8b11c..0e7c671 100644 --- a/src/bin/ephoto_thumb_browser.c +++ b/src/bin/ephoto_thumb_browser.c @@ -31,7 +31,6 @@ struct _Ephoto_Thumb_Browser Evas_Object *max; Evas_Object *leftbox; Evas_Object *direntry; - Evas_Object *dir_loading; Evas_Object *ficon; Elm_Object_Item *dir_current; Elm_Object_Item *last_sel; @@ -417,13 +416,7 @@ _todo_items_process(void *data) { if (tb->animator.count == 0) return EINA_TRUE; - if (tb->dir_loading) - { -evas_object_del(tb->dir_loading); - evas_object_freeze_events_set(tb->main, EINA_FALSE); - elm_object_focus_set(tb->main, EINA_TRUE); - } - tb->animator.todo_items = NULL; +tb->animator.todo_items = NULL; return EINA_FALSE; } if ((tb->ls) && (eina_list_count(tb->todo_items) < TODO_ITEM_MIN_BATCH)) @@ -3105,10 +3098,6 @@ _ephoto_thumb_populate_start(void *data, int type EINA_UNUSED, evas_object_smart_callback_call(tb->main, "changed,directory", NULL); - tb->dir_loading = - _processing(tb, _("Loading Directory"), - _("Please wait while the directory is loaded.")); - evas_object_show(tb->dir_loading); tb->animator.processed = 0; tb->animator.count = 0; @@ -3189,12 +3178,6 @@ _ephoto_thumb_populate_end(void *data, int type EINA_UNUSED, tb->totimages), _("Size"), isize); elm_object_text_set(tb->infolabel, image_info); } - if (tb->dir_loading && (tb->animator.processed == tb->animator.count)) - { - evas_object_del(tb->dir_loading); -evas_object_freeze_events_set(tb->main, EINA_FALSE); -elm_object_focus_set(tb->main, EINA_TRUE); - } tb->dirs_only = 0; tb->thumbs_only = 0; @@ -3207,12 +3190,6 @@ _ephoto_thumb_populate_error(void *data, int type EINA_UNUSED, { Ephoto_Thumb_Browser *tb = data; - if (tb->dir_loading) - { -evas_object_del(tb->dir_loading); -evas_object_freeze_events_set(tb->main, EINA_FALSE); -elm_object_focus_set(tb->main, EINA_TRUE); - } tb->dirs_only = 0; tb->thumbs_only = 0; --
[EGIT] [apps/ephoto] master 01/01: Ephoto: Clear the grid selection when clicking in the empty space.
okra pushed a commit to branch master. http://git.enlightenment.org/apps/ephoto.git/commit/?id=d5cb51942249c22dd6e9edabc3820e47f3d96912 commit d5cb51942249c22dd6e9edabc3820e47f3d96912 Author: Stephen okra Houston Date: Tue Dec 15 12:44:54 2015 -0600 Ephoto: Clear the grid selection when clicking in the empty space. --- src/bin/ephoto_thumb_browser.c | 14 ++ 1 file changed, 14 insertions(+) diff --git a/src/bin/ephoto_thumb_browser.c b/src/bin/ephoto_thumb_browser.c index 0e7c671..054b4ba 100644 --- a/src/bin/ephoto_thumb_browser.c +++ b/src/bin/ephoto_thumb_browser.c @@ -2854,6 +2854,20 @@ _grid_mouse_up_cb(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, tb->last_sel = item; } } + if (info->button == 1 && !item) + { +Eina_List *sel = eina_list_clone(selected); +Eina_List *node; +Elm_Object_Item *it; +if (eina_list_count(sel) > 0) + { + EINA_LIST_FOREACH(sel, node, it) + { + elm_gengrid_item_selected_set(it, EINA_FALSE); + } + eina_list_free(sel); + } + } if (info->button != 3) return; --
[EGIT] [apps/empc] master 01/01: set HAVE_AZY_PARSER more accurately when not found during configure
discomfitor pushed a commit to branch master. http://git.enlightenment.org/apps/empc.git/commit/?id=ad6decde3f9b98dd31d82d9e8a48f2f5a0b9716c commit ad6decde3f9b98dd31d82d9e8a48f2f5a0b9716c Author: Mike Blumenkrantz Date: Tue Dec 15 12:09:39 2015 -0500 set HAVE_AZY_PARSER more accurately when not found during configure --- configure.ac | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/configure.ac b/configure.ac index 1cb7e62..a7ed634 100644 --- a/configure.ac +++ b/configure.ac @@ -109,7 +109,7 @@ PKG_CHECK_MODULES([ELM], [evas >= 1.12 elementary >= 1.12]) PKG_CHECK_MODULES([ESQL], [esskyuehl], [have_esql=yes], [have_esql=no]) PKG_CHECK_MODULES([EIO], [eio]) AC_PATH_PROG([AZY_PARSER], [azy_parser], [no]) -AM_CONDITIONAL([HAVE_AZY_PARSER], [test "x$AZY_PARSER" != "x"]) +AM_CONDITIONAL([HAVE_AZY_PARSER], [test "x$AZY_PARSER" != "xno"]) # MODULES ### want_glyr_gmpc=maybe AC_ARG_ENABLE([module-glyr-gmpc], --
[EGIT] [core/enlightenment] master 01/01: Fix type of size fields for E_Shell_Data
devilhorns pushed a commit to branch master. http://git.enlightenment.org/core/enlightenment.git/commit/?id=e40033be0a9d7cab056d0f7bd52db7a1e2bb2d9b commit e40033be0a9d7cab056d0f7bd52db7a1e2bb2d9b Author: Chris Michael Date: Tue Dec 15 10:20:33 2015 -0500 Fix type of size fields for E_Shell_Data In the xdg_surface_configure_send function, the size params (width/height) come in as int32_t. This patch makes the E_Shell_Data fields for width & height match those (else we end up with compiler warnings when comparing int32_t to uint32_t). Signed-off-by: Chris Michael --- src/modules/wl_desktop_shell/e_mod_main.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/modules/wl_desktop_shell/e_mod_main.c b/src/modules/wl_desktop_shell/e_mod_main.c index 9935c35..bb4020d 100644 --- a/src/modules/wl_desktop_shell/e_mod_main.c +++ b/src/modules/wl_desktop_shell/e_mod_main.c @@ -8,8 +8,8 @@ struct E_Shell_Data { uint32_t edges; - uint32_t width; - uint32_t height; + int32_t width; + int32_t height; Eina_Bool fullscreen : 1; Eina_Bool maximized : 1; Eina_Bool activated : 1; --
[EGIT] [core/efl] master 01/01: ecore-drm: Fix failure of setting/closing evdev->fd which causes fd leak
devilhorns pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=cb23fd2af2d07c17ae2d6c08a7c87cf8abf45814 commit cb23fd2af2d07c17ae2d6c08a7c87cf8abf45814 Author: Duna Oh Date: Tue Dec 15 10:02:49 2015 -0500 ecore-drm: Fix failure of setting/closing evdev->fd which causes fd leak Summary: When a input device is plugged in, _cb_open_restricted() is called before creating evdev. So setting fd value on evdev was failed in _cb_open_restricted() and also closing evdev->fd was invalid. Using a eina_hash which has 'path-fd' pairs, we can find fd value after evdev is created. @fix Test Plan: (1) Multiple input devices are connected. Their evdev->fd remains zero or initial value. (2) When one of those devices are plugged out, fd leak would happen. Reviewers: raster, zmike, gwanglim, stefan_schmidt, devilhorns, ManMower Subscribers: cedric, jpeg, Jeon, input.hacker Differential Revision: https://phab.enlightenment.org/D3428 --- src/lib/ecore_drm/ecore_drm.c | 4 src/lib/ecore_drm/ecore_drm_inputs.c | 39 +- src/lib/ecore_drm/ecore_drm_launcher.c | 1 + src/lib/ecore_drm/ecore_drm_private.h | 2 ++ 4 files changed, 31 insertions(+), 15 deletions(-) diff --git a/src/lib/ecore_drm/ecore_drm.c b/src/lib/ecore_drm/ecore_drm.c index 6bbbde0..02dd76e 100644 --- a/src/lib/ecore_drm/ecore_drm.c +++ b/src/lib/ecore_drm/ecore_drm.c @@ -87,6 +87,8 @@ ecore_drm_init(void) /* try to init eeze */ if (!eeze_init()) goto eeze_err; + _ecore_drm_inputs_init(); + ECORE_DRM_EVENT_ACTIVATE = ecore_event_type_new(); ECORE_DRM_EVENT_OUTPUT = ecore_event_type_new(); ECORE_DRM_EVENT_SEAT_ADD = ecore_event_type_new(); @@ -141,6 +143,8 @@ ecore_drm_shutdown(void) /* shutdown eina */ eina_shutdown(); + _ecore_drm_inputs_shutdown(); + /* return init count */ return _ecore_drm_init_count; } diff --git a/src/lib/ecore_drm/ecore_drm_inputs.c b/src/lib/ecore_drm/ecore_drm_inputs.c index 75655ec..df46b19 100644 --- a/src/lib/ecore_drm/ecore_drm_inputs.c +++ b/src/lib/ecore_drm/ecore_drm_inputs.c @@ -5,15 +5,13 @@ #include "ecore_drm_private.h" EAPI int ECORE_DRM_EVENT_SEAT_ADD = -1; +static Eina_Hash *_fd_hash = NULL; /* local functions */ static int _cb_open_restricted(const char *path, int flags, void *data) { Ecore_Drm_Input *input; - Ecore_Drm_Seat *seat; - Ecore_Drm_Evdev *edev; - Eina_List *l, *ll; int fd = -1; if (!(input = data)) return -1; @@ -21,18 +19,8 @@ _cb_open_restricted(const char *path, int flags, void *data) /* try to open the device */ fd = _ecore_drm_launcher_device_open_no_pending(path, flags); if (fd < 0) ERR("Could not open device"); - - EINA_LIST_FOREACH(input->dev->seats, l, seat) - { -EINA_LIST_FOREACH(seat->devices, ll, edev) - { - if (strstr(path, edev->path)) - { - edev->fd = fd; - return fd; - } - } - } + if (_fd_hash) + eina_hash_add(_fd_hash, path, (void *)(intptr_t)fd); return fd; } @@ -54,6 +42,9 @@ _cb_close_restricted(int fd, void *data) if (edev->fd == fd) { _ecore_drm_launcher_device_close(edev->path, fd); + + /* re-initialize fd after closing */ + edev->fd = -1; return; } } @@ -118,6 +109,8 @@ _device_added(Ecore_Drm_Input *input, struct libinput_device *device) return; } + edev->fd = (int)(intptr_t)eina_hash_find(_fd_hash, edev->path); + /* append this device to the seat */ seat->devices = eina_list_append(seat->devices, edev); } @@ -134,6 +127,9 @@ _device_removed(Ecore_Drm_Input *input EINA_UNUSED, struct libinput_device *devi /* remove this evdev from the seat's list of devices */ edev->seat->devices = eina_list_remove(edev->seat->devices, edev); + if (_fd_hash) + eina_hash_del_by_key(_fd_hash, edev->path); + /* tell launcher to release device */ _ecore_drm_launcher_device_close(edev->path, edev->fd); @@ -345,3 +341,16 @@ ecore_drm_inputs_disable(Ecore_Drm_Input *input) input->suspended = EINA_TRUE; } + +void +_ecore_drm_inputs_init(void) +{ + _fd_hash = eina_hash_string_superfast_new(NULL); +} + +void +_ecore_drm_inputs_shutdown(void) +{ + eina_hash_free(_fd_hash); + _fd_hash = NULL; +} diff --git a/src/lib/ecore_drm/ecore_drm_launcher.c b/src/lib/ecore_drm/ecore_drm_launcher.c index 2baa550..6ba92ec 100644 --- a/src/lib/ecore_drm/ecore_drm_launcher.c +++ b/src/lib/ecore_drm/ecore_drm_launcher.c @@ -167,5 +167,6 @@ _ecore_drm_launcher_device_close(const char *device, int fd) { if ((logind) && (device)) _ecore_drm_logind_device_close(device); + if (fd < 0) return; close(fd); } diff --git a/src/lib/ecore_drm/ecore_drm_pr
[EGIT] [core/elementary] master 02/02: hoversel: accessibility enhancements
stanluk pushed a commit to branch master. http://git.enlightenment.org/core/elementary.git/commit/?id=b67ab124df4ac55bad9b4235622fc81758f47bc5 commit b67ab124df4ac55bad9b4235622fc81758f47bc5 Author: Lukasz Stanislawski Date: Tue Dec 15 13:30:52 2015 +0100 hoversel: accessibility enhancements Allow to dismiss hover using accessibility API. Change accessibiility role to popup. --- src/lib/elm_hover.c | 20 +++- src/lib/elm_hover.eo | 3 ++- 2 files changed, 21 insertions(+), 2 deletions(-) diff --git a/src/lib/elm_hover.c b/src/lib/elm_hover.c index e7659a9..1216cc5 100644 --- a/src/lib/elm_hover.c +++ b/src/lib/elm_hover.c @@ -3,6 +3,7 @@ #endif #define ELM_INTERFACE_ATSPI_ACCESSIBLE_PROTECTED +#define ELM_INTERFACE_ATSPI_WIDGET_ACTION_PROTECTED #include @@ -685,7 +686,7 @@ _elm_hover_eo_base_constructor(Eo *obj, Elm_Hover_Data *_pd EINA_UNUSED) eo_do(obj, evas_obj_type_set(MY_CLASS_NAME_LEGACY), evas_obj_smart_callbacks_descriptions_set(_smart_callbacks), - elm_interface_atspi_accessible_role_set(ELM_ATSPI_ROLE_GLASS_PANE)); + elm_interface_atspi_accessible_role_set(ELM_ATSPI_ROLE_POPUP_MENU)); return obj; } @@ -836,4 +837,21 @@ _elm_hover_class_constructor(Eo_Class *klass) evas_smart_legacy_type_register(MY_CLASS_NAME_LEGACY, klass); } +static Eina_Bool +_action_dismiss(Evas_Object *obj, const char *params EINA_UNUSED) +{ + eo_do(obj, elm_obj_hover_dismiss()); + return EINA_TRUE; +} + +EOLIAN const Elm_Atspi_Action * +_elm_hover_elm_interface_atspi_widget_action_elm_actions_get(Eo *obj EINA_UNUSED, Elm_Hover_Data *pd EINA_UNUSED) +{ + static Elm_Atspi_Action atspi_actions[] = { + { "dismiss", NULL, NULL, _action_dismiss}, + { NULL, NULL, NULL, NULL} + }; + return &atspi_actions[0]; +} + #include "elm_hover.eo.c" diff --git a/src/lib/elm_hover.eo b/src/lib/elm_hover.eo index 03a84b5..65a3238 100644 --- a/src/lib/elm_hover.eo +++ b/src/lib/elm_hover.eo @@ -7,7 +7,7 @@ enum Elm.Hover.Axis both [[ELM_HOVER_AXIS_BOTH -- both.]] } -class Elm.Hover (Elm.Layout, Evas.Clickable_Interface) +class Elm.Hover (Elm.Layout, Evas.Clickable_Interface, Elm_Interface_Atspi_Widget_Action) { eo_prefix: elm_obj_hover; methods { @@ -75,6 +75,7 @@ class Elm.Hover (Elm.Layout, Evas.Clickable_Interface) Elm.Container.content_unset; Elm.Layout.sizing_eval; Elm.Layout.content_aliases.get; + Elm_Interface_Atspi_Widget_Action.elm_actions.get; } events { smart,changed; --
[EGIT] [core/elementary] master 01/02: hoversel: change accessibility role to popup
stanluk pushed a commit to branch master. http://git.enlightenment.org/core/elementary.git/commit/?id=709cf816c112859c253b5423a22a6896ec072b8f commit 709cf816c112859c253b5423a22a6896ec072b8f Author: Lukasz Stanislawski Date: Tue Dec 15 13:30:20 2015 +0100 hoversel: change accessibility role to popup --- src/lib/elc_hoversel.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/lib/elc_hoversel.c b/src/lib/elc_hoversel.c index d45b687..0d91ae0 100644 --- a/src/lib/elc_hoversel.c +++ b/src/lib/elc_hoversel.c @@ -627,7 +627,7 @@ _elm_hoversel_eo_base_constructor(Eo *obj, Elm_Hoversel_Data *_pd EINA_UNUSED) eo_do(obj, evas_obj_type_set(MY_CLASS_NAME_LEGACY), evas_obj_smart_callbacks_descriptions_set(_smart_callbacks), - elm_interface_atspi_accessible_role_set(ELM_ATSPI_ROLE_GLASS_PANE)); + elm_interface_atspi_accessible_role_set(ELM_ATSPI_ROLE_PUSH_BUTTON)); return obj; } --
[EGIT] [core/efl] master 02/02: Eina safety: Set error flag in case of safety check error
jpeg pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=7fd907a1322ae251ca171f610dcaf06c700565e7 commit 7fd907a1322ae251ca171f610dcaf06c700565e7 Author: Jean-Philippe Andre Date: Tue Dec 15 17:39:37 2015 +0900 Eina safety: Set error flag in case of safety check error Eina_Error is almost not used at all. Meh. --- src/lib/eina/eina_safety_checks.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/lib/eina/eina_safety_checks.c b/src/lib/eina/eina_safety_checks.c index 57b863d..4ead9d6 100644 --- a/src/lib/eina/eina_safety_checks.c +++ b/src/lib/eina/eina_safety_checks.c @@ -69,6 +69,7 @@ eina_safety_checks_init(void) if (!(initcnt++)) { EINA_SAFETY_LOG_DOMAIN = eina_log_domain_register("eina_safety", EINA_COLOR_RED); +EINA_ERROR_SAFETY_FAILED = eina_error_msg_static_register("Safety check failed"); } return EINA_TRUE; } @@ -76,6 +77,7 @@ eina_safety_checks_init(void) EAPI void _eina_safety_error(const char *file, const char *func, int line, const char *str) { + eina_error_set(EINA_ERROR_SAFETY_FAILED); if (EINA_SAFETY_LOG_DOMAIN) { eina_log_print(EINA_SAFETY_LOG_DOMAIN, EINA_LOG_LEVEL_ERR, --
[EGIT] [core/efl] master 01/02: Eina safety: Add internal function to log errors
jpeg pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=5ad9654fbc789c0d11aea265f9875b43d0ec5652 commit 5ad9654fbc789c0d11aea265f9875b43d0ec5652 Author: Jean-Philippe Andre Date: Tue Dec 15 16:56:13 2015 +0900 Eina safety: Add internal function to log errors The main reason is convenience for debugging when using GDB, this will give a simple breakpoint for all safety check failures. Also, this creates a more visible log domain (red). --- src/lib/eina/eina_safety_checks.c | 63 --- src/lib/eina/eina_safety_checks.h | 35 -- 2 files changed, 59 insertions(+), 39 deletions(-) diff --git a/src/lib/eina/eina_safety_checks.c b/src/lib/eina/eina_safety_checks.c index 1ee6991..57b863d 100644 --- a/src/lib/eina/eina_safety_checks.c +++ b/src/lib/eina/eina_safety_checks.c @@ -25,45 +25,33 @@ #include "eina_log.h" #include "eina_safety_checks.h" -/** -* Local * -**/ +EAPI Eina_Error EINA_ERROR_SAFETY_FAILED = 0; -/** -* Global * -**/ +static int EINA_SAFETY_LOG_DOMAIN = 0; +static int initcnt = 0; /** - * @internal - * @brief Shut down the safety checks module. + * Log entry-point called every time an eina safety check fails. * - * @return #EINA_TRUE on success, #EINA_FALSE on failure. + * One purpose of this dedicated function is to provide a convenient breakpoint + * for GDB debugging. Also, this gives it a dedicated log domain, rather than + * using the default one. * - * This function shuts down the error module set up by - * eina_safety_checks_init(). It is called by eina_shutdown(). - * - * @see eina_shutdown() + * @since 1.17 + * @internal */ Eina_Bool eina_safety_checks_shutdown(void) { + if (!initcnt) return EINA_FALSE; + if (!(--initcnt)) + { +eina_log_domain_unregister(EINA_SAFETY_LOG_DOMAIN); +EINA_SAFETY_LOG_DOMAIN = 0; + } return EINA_TRUE; } -/** -* API * -**/ - -/** - * @cond LOCAL - */ - -EAPI Eina_Error EINA_ERROR_SAFETY_FAILED = 0; - -/** - * @endcond - */ - /** * @internal * @brief Initialize the safety checks module. @@ -78,9 +66,24 @@ EAPI Eina_Error EINA_ERROR_SAFETY_FAILED = 0; Eina_Bool eina_safety_checks_init(void) { + if (!(initcnt++)) + { +EINA_SAFETY_LOG_DOMAIN = eina_log_domain_register("eina_safety", EINA_COLOR_RED); + } return EINA_TRUE; } -/** - * @} - */ +EAPI void +_eina_safety_error(const char *file, const char *func, int line, const char *str) +{ + if (EINA_SAFETY_LOG_DOMAIN) + { +eina_log_print(EINA_SAFETY_LOG_DOMAIN, EINA_LOG_LEVEL_ERR, + file, func, line, "%s", str); + } + else + { +eina_log_print(EINA_LOG_DOMAIN_DEFAULT, EINA_LOG_LEVEL_ERR, + file, func, line, "%s", str); + } +} diff --git a/src/lib/eina/eina_safety_checks.h b/src/lib/eina/eina_safety_checks.h index d40eeb9..656054b 100644 --- a/src/lib/eina/eina_safety_checks.h +++ b/src/lib/eina/eina_safety_checks.h @@ -93,12 +93,29 @@ EAPI extern Eina_Error EINA_ERROR_SAFETY_FAILED; #include "eina_log.h" +# ifdef EFL_BETA_API_SUPPORT +/** + * Log entry-point called every time an eina safety check fails. + * + * One purpose of this dedicated function is to provide a convenient breakpoint + * for GDB debugging. Also, this gives it a dedicated log domain, rather than + * using the default one. + * + * @since 1.17 + * @internal + */ +EAPI void _eina_safety_error(const char *file, const char *func, int line, const char *str); +# define EINA_SAFETY_ERROR(msg) _eina_safety_error(__FILE__, __FUNCTION__, __LINE__, msg) +# else +# define EINA_SAFETY_ERROR(msg) EINA_LOG_ERR("%s", msg) +# endif + #define EINA_SAFETY_ON_NULL_RETURN(exp) \ do \ { \ if (EINA_UNLIKELY((exp) == NULL)) \ {\ -EINA_LOG_ERR("%s", "safety check failed: " # exp " == NULL"); \ +EINA_SAFETY_ERROR("safety check failed: " # exp " == NULL"); \ return;