summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
* Revert "run withough ninja test for clear stats on exactness coverage"devs/stefan/ci-exactness-codecovStefan Schmidt2020-07-171-7/+7
| | | | This reverts commit 200fb2d058de0a3037258e5d7e595090c418c82a.
* run withough ninja test for clear stats on exactness coverageStefan Schmidt2020-07-171-7/+7
|
* ci: run exactness for codecov buildStefan Schmidt2020-07-171-0/+4
|
* TO BE REVERTED. JUST FOR FASTER TESTING.Stefan Schmidt2020-07-171-14/+0
|
* efl_ui_image: remove the unnecessary code in efl_file_unloadTaehyub Kim2020-07-171-8/+0
| | | | | | | | | | | | | | | | | | Summary: we don't need the image preload api call in efl_file_unload, this make the unexpected SIG_LOAD_ERROR emit, when elm_image_memfile_set() is called. @fix Reviewers: Hermet, jsuya, kimcinoo Reviewed By: Hermet Subscribers: cedric, #reviewers, #committers Tags: #efl Differential Revision: https://phab.enlightenment.org/D12056
* edje example - dont leak textCarsten Haitzler (Rasterman)2020-07-161-1/+3
|
* edje: Avoid string duplication when possible.Woochanlee2020-07-161-8/+14
| | | | | | | | | | | | | | | | | | | Summary: Most use case the part name dosen't contain the recursive name so we don't have to go through expensive eina_string_split operation. Test Plan: edje-suite (34/37 edje-suite OK 0.67 s) elementary-test app launching on enlightenment Reviewers: raster, smohanty, Hermet Subscribers: cedric, #reviewers, #committers Tags: #efl Differential Revision: https://phab.enlightenment.org/D12055
* edje_cc : resolve build warningAli Alzyod2020-07-161-1/+1
| | | | | | | | | | | | Reviewers: raster Reviewed By: raster Subscribers: cedric, #reviewers, #committers Tags: #efl Differential Revision: https://phab.enlightenment.org/D12054
* elm: tests: fix typo in test nameStefan Schmidt2020-07-161-1/+1
| | | | | Found while working on exactness scenarios. Better get this fixed here before we use it in tools like exactness and make it harder to change.
* ci: travis: force meson version 0.54.3 as install for codecovStefan Schmidt2020-07-161-1/+1
| | | | | | | The newest meson 0.55 release is broken for a coverage build. (Version 0.55.1 should get the needed fix from this pull rewuest: https://github.com/mesonbuild/meson/pull/7411) For now we force 0.54.3 as known working version.
* meson: allow empty values in disabler/bindings arrayDaniel Kolesa2020-07-151-3/+3
| | | | | | | | | | | | | | | | | | | | | | | This is supposed to simplify things for distro packagers and is inspired by other projects doing this, e.g. Mesa. The idea here is that the provided lists can now begin with a comma, unlike before. This allows for things such as: evas_disablers="" if [ -z "$build_option_lottie" ]; then evas_disablers+=",json" fi if [ -z "$build_option_avif" ]; then evas_disablers+=",avif" fi ... configure_args+=" -Devas-loaders-disabler=$evas_disablers" Previously this would fail because meson would interpret the comma at the beginning as having an empty-string value in the array, and checking whether the string is already empty is too clunky.
* Revert "Revert "ci: travis: make sure we disable avif loader by default in โ†ตCarsten Haitzler (Rasterman)2020-07-151-3/+3
| | | | | | our jobs"" This reverts commit 42e3411ed7dacc652bd1c64d94941d7ac6aa67c4.
* Evas: add avif evas loader and saverVincent Torri2020-07-158-3/+585
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Summary: Add AV1 image file loader and saver to Evas The loader can be tested with this code : ``` #include <stdlib.h> #include <stdio.h> #include <Eina.h> #include <Ecore.h> #include <Evas.h> #include <Ecore_Evas.h> static int i = 0; static unsigned char _timer(void *data) { Evas_Object *o = (Evas_Object *)data; if (i < evas_object_image_animated_frame_count_get(o)) { evas_object_image_animated_frame_set(o, i); i++; return ECORE_CALLBACK_RENEW; } return ECORE_CALLBACK_DONE; } static void _quit(Ecore_Evas *ee) { ecore_main_loop_quit(); (void)ee; } int main(int argc, char *argv[]) { Ecore_Evas *ee; Evas *evas; Evas_Object *o; int w,h; Evas_Load_Error err; if (argc < 2) { printf("usage : %s file\n", argv[0]); return 1; } ecore_evas_init(); ee = ecore_evas_new(NULL, 0, 0, 1, 1, NULL); if (!ee) { printf("no ee\n"); return 0; } evas = ecore_evas_get(ee); ecore_evas_title_set(ee, "avif test"); ecore_evas_callback_delete_request_set(ee, _quit); o = evas_object_image_add(evas); evas_object_image_file_set(o, argv[1], NULL); err = evas_object_image_load_error_get(o); if (err != EVAS_LOAD_ERROR_NONE) { fprintf(stderr, "could not load image '%s'. error string is \"%s\"\n", argv[1], evas_load_error_str(err)); return 1; } evas_object_image_size_get(o, &w, &h); evas_object_image_fill_set(o, 0, 0, w, h); evas_object_move(o, 0, 0); evas_object_resize(o, w, h); evas_object_show(o); printf("animated : %s\n", evas_object_image_animated_get(o) ? "yes" : "no"); fflush(stdout); if (evas_object_image_animated_get(o)) { Ecore_Timer *timer; printf("frame count : %d\n", evas_object_image_animated_frame_count_get(o)); printf("duration : %f\n", evas_object_image_animated_frame_duration_get(o,1,0)); printf("loop count : %d\n", evas_object_image_animated_loop_count_get(o)); fflush(stdout); timer = ecore_timer_add(evas_object_image_animated_frame_duration_get(o,1,0), _timer, o); } ecore_evas_resize(ee, w, h); ecore_evas_show(ee); ecore_main_loop_begin(); ecore_evas_shutdown(); return 0; } ``` non animated files : https://github.com/AOMediaCodec/libavif/tree/master/tests/data/originals animated files : https://github.com/AOMediaCodec/av1-avif/tree/master/testFiles/Netflix/avifs to test the saver : ``` #include <stdlib.h> #include <stdio.h> #include <math.h> #include <Eina.h> #include <Ecore.h> #include <Evas.h> #include <Ecore_Evas.h> void _quit(Ecore_Evas *ee) { ecore_main_loop_quit(); (void)ee; } static Evas_Object * display_data(int w, int h, const char *title, unsigned int *data) { Ecore_Evas *ee; Evas *evas; Evas_Object *o; unsigned int *d; ee = ecore_evas_new(NULL, 0, 0, w, h, NULL); if (!ee) return NULL; evas = ecore_evas_get(ee); ecore_evas_title_set(ee, title); ecore_evas_callback_delete_request_set(ee, _quit); o = evas_object_image_add(evas); evas_object_image_fill_set(o, 0, 0, w, h); evas_object_image_size_set(o, w, h); d = evas_object_image_data_get(o, 1); for (int i = 0; i < w*h; i++) d[i] = data[i]; evas_object_image_data_set(o, d); evas_object_image_data_update_add(o, 0, 0, w, h); evas_object_move(o, 0, 0); evas_object_resize(o, w, h); evas_object_show(o); ecore_evas_show(ee); return o; } static unsigned int * display_file(const char *title, const char *filename, int *w, int *h) { Ecore_Evas *ee; Evas *evas; Evas_Object *o; Evas_Load_Error err; unsigned int *data; ee = ecore_evas_new(NULL, 0, 0, 1, 1, NULL); if (!ee) return NULL; evas = ecore_evas_get(ee); ecore_evas_title_set(ee, title); ecore_evas_callback_delete_request_set(ee, _quit); o = evas_object_image_add(evas); evas_object_image_file_set(o, filename, NULL); err = evas_object_image_load_error_get(o); if (err != EVAS_LOAD_ERROR_NONE) { fprintf(stderr, "could not load image '%s'. error string is \"%s\"\n", filename, evas_load_error_str(err)); fflush(stderr); return NULL; } evas_object_image_size_get(o, w, h); evas_object_image_fill_set(o, 0, 0, *w, *h); evas_object_image_size_set(o, *w, *h); evas_object_move(o, 0, 0); evas_object_resize(o, *w, *h); evas_object_show(o); ecore_evas_resize(ee, *w, *h); ecore_evas_show(ee); data = evas_object_image_data_get(o, 1); return data; } double psnr(int w, int h, unsigned int *data_orig, unsigned int *data) { unsigned char *iter_orig; unsigned char *iter; double psnr; psnr = 0.0; iter_orig = (unsigned char *)data_orig; iter = (unsigned char *)data; for (int i = 0; i < 4 * w * h; i++, iter_orig++, iter++) psnr += (*iter_orig - *iter) * (*iter_orig - *iter); psnr /= 4 * w * h; psnr = 10 * log10(255.0 * 255.0 / psnr); return psnr; } void compare(int quality, int w, int h, unsigned int *data_orig) { char title[1024]; char filename[1024]; unsigned char *data; unsigned int *data_jpeg; unsigned int *data_avif; unsigned char *iter_orig; unsigned char *iter_jpeg; unsigned char *iter_avif; double psnr_jpeg; double psnr_avif; Eina_File *f_jpeg; Eina_File *f_avif; size_t size_jpeg; size_t size_avif; /* jpeg */ snprintf(title, sizeof(title), "jpeg test quality %d", quality); snprintf(filename, sizeof(filename), "test_%d.jpg", quality); data_jpeg = display_file(title, filename, &w, &h); if (!data_jpeg) return; f_jpeg = eina_file_open(filename, EINA_FALSE); size_jpeg = eina_file_size_get(f_jpeg); eina_file_close(f_jpeg); fprintf(stderr, "size : %u\n", (unsigned int)size_jpeg); fflush(stderr); /* avif */ snprintf(title, sizeof(title), "avif test quality %d", quality); snprintf(filename, sizeof(filename), "test_%d.avif", quality); data_avif = display_file(title, filename, &w, &h); if (!data_avif) return; f_avif = eina_file_open(filename, EINA_FALSE); size_avif = eina_file_size_get(f_avif); eina_file_close(f_avif); fprintf(stderr, "size : %u\n", (unsigned int)size_avif); fflush(stderr); psnr_jpeg = psnr(w, h, data_orig, data_jpeg); fprintf(stderr, "psnr jpeg : %f\n", psnr_jpeg); fflush(stderr); snprintf(title, sizeof(title), "jpeg vs orig (psnr: %.2f, size: %u b)", psnr_jpeg, (unsigned int)size_jpeg); iter_orig = (unsigned char *)data_orig; iter_jpeg = (unsigned char *)data_jpeg; data = malloc(4*w*h); for (int i = 0; i < 4*w*h; i++, iter_orig++, iter_jpeg++) data[i] = abs(*iter_jpeg - *iter_orig); display_data(w, h, title, (unsigned int *)data); psnr_avif = psnr(w, h, data_orig, data_avif); fprintf(stderr, "psnr avif : %f\n", psnr_avif); fflush(stderr); snprintf(title, sizeof(title), "avif vs orig (psnr: %.2f, size: %u b)", psnr_avif, (unsigned int)size_avif); iter_orig = (unsigned char *)data_orig; iter_avif = (unsigned char *)data_avif; data = malloc(4*w*h); for (int i = 0; i < 4*w*h; i++, iter_orig++, iter_avif++) data[i] = abs(*iter_avif - *iter_orig); display_data(w, h, title, (unsigned int *)data); } int main() { Ecore_Evas *ee; Evas *evas; Evas_Object *o; Evas_Load_Error err; unsigned int *data; int w,h; ecore_evas_init(); ee = ecore_evas_new(NULL, 0, 0, 1, 1, NULL); if (!ee) return 1; evas = ecore_evas_get(ee); ecore_evas_title_set(ee, "original"); ecore_evas_callback_delete_request_set(ee, _quit); o = evas_object_image_add(evas); evas_object_image_file_set(o, "x1d-II-sample-02.fff", NULL); err = evas_object_image_load_error_get(o); if (err != EVAS_LOAD_ERROR_NONE) { fprintf(stderr, "could not load image '%s'. error string is \"%s\"\n", "x1d-II-sample-02.fff", evas_load_error_str(err)); fflush(stderr); return 1; } evas_object_image_size_get(o, &w, &h); evas_object_image_fill_set(o, 0, 0, w, h); evas_object_image_size_set(o, w, h); evas_object_move(o, 0, 0); evas_object_resize(o, w, h); evas_object_show(o); data = evas_object_image_data_get(o, 1); ecore_evas_resize(ee, w, h); ecore_evas_show(ee); /* evas_object_image_save(o, "test_100.jpg", NULL, "quality=100"); */ evas_object_image_save(o, "test_90.jpg", NULL, "quality=90"); /* evas_object_image_save(o, "test_70.jpg", NULL, "quality=70"); */ /* evas_object_image_save(o, "test_50.jpg", NULL, "quality=50"); */ /* evas_object_image_save(o, "test_100.avif", NULL, "quality=100"); */ evas_object_image_save(o, "test_90.avif", NULL, "quality=90"); /* evas_object_image_save(o, "test_70.avif", NULL, "quality=70"); */ /* evas_object_image_save(o, "test_50.avif", NULL, "quality=50"); */ compare(90, w, h, data); ecore_main_loop_begin(); ecore_evas_shutdown(); return 0; } ``` the raw file canbe found here : https://www.hasselblad.com/learn/sample-images/ Test Plan: test executable with avif files found in libavif project Reviewers: raster, q66 Reviewed By: q66 Subscribers: q66, cedric, #reviewers, #committers Tags: #efl Differential Revision: https://phab.enlightenment.org/D12051
* edje - fix edje_cc mis-re-iding images in image setsCarsten Haitzler (Rasterman)2020-07-151-5/+18
| | | | | | | | wanr of unused images so it's properly fixed too... always warn to stdout so devs know to cleanup their theme. by not removing image sets this fixes the mis-id'ing too. @fix
* Revert "ci: travis: make sure we disable avif loader by default in our jobs"Stefan Schmidt2020-07-141-3/+3
| | | | | | | This reverts commit 44a018d37ffdf03627fc5d45aa249c2237bf5dac. With the libavif module patch reverted this also needs to go, until its back.
* elm_code: cursor visbility fix.Alastair Poole2020-07-141-4/+3
| | | | | | | | | | If the widget is scrollable on the x axis, the cursor was being displayed in some rare cases when scrolling and the code widget did not cover the whole window region. e.g. a filepanel to the left of the widget could potentially have the cursor erroneously shown. This fixes as per the y axis hide. @fix
* elm_code: on newline ensure line number visible.Alastair Poole2020-07-141-0/+14
| | | | @fix T2798
* Revert "Evas: add avif evas loader"Carsten Haitzler (Rasterman)2020-07-146-302/+3
| | | | | | This reverts commit dd23a6c84aee249aa5316b48af6956072233bb97. i didn't mean to push this yet...
* ci: travis: make sure we disable avif loader by default in our jobsStefan Schmidt2020-07-141-3/+3
| | | | | This has been newly added (disabled by default) but we need to take care of it in our manually disabled loaders in specific builds.
* docs: Correct the wrong API group name and typo in Evas, Eet, Eina, Eio and โ†ตMyoungwoon Roy, Kim2020-07-1412-31/+89
| | | | | | | | | | | | | | | | Elementary Summary: I found wrong API reference group name in mapbuf, Evas, Eet, Eina, Eio and fixed them. Test Plan: API reference documentation modification only Reviewers: segfaultxavi, stefan_schmidt Subscribers: cedric, #reviewers, #committers Tags: #efl Differential Revision: https://phab.enlightenment.org/D12052
* Evas: add avif evas loaderVincent Torri2020-07-146-3/+302
| | | | | | | | | | | | | | Summary: Add AV1 image file loader to Evas Test Plan: test executable with avif files found in libavif project Reviewers: raster Subscribers: cedric, #reviewers, #committers Tags: #efl Differential Revision: https://phab.enlightenment.org/D12051
* tests: remove popup test.Alastair Poole2020-07-131-76/+0
| | | | | | | This was put here due to a miscommunication. It was for resolving an issue with one of our applications. It wasn't meant to be in this part of testing anyway. Remove as the popup in the application itself was broken.
* docs: Correct the wrong API group name in Elementary and Change an invalid โ†ตMyoungwoon Roy, Kim2020-07-0955-247/+258
| | | | | | | | | | | | | | | | | | | | URL in Evas Summary: I had found broken URL address for SGI free software license B v2.0 and changed valid URL address In addition, I found wrong group name in glview, grid, index, label, list, map, mapbuf, naviframe, notify, panel, photocam, plug, popup, radio, scroller, spinner, table, win, atspi, frame, access, textpath, elm_object, color_class and fixed them. Test Plan: API reference documentation modification only Reviewers: segfaultxavi, stefan_schmidt, raster Reviewed By: raster Subscribers: cedric, #reviewers, #committers Tags: #efl Differential Revision: https://phab.enlightenment.org/D12049
* ibox: Preview Theme CodeAlastair Poole2020-07-071-0/+34
| | | | | | | | | | | | | | Summary: Dependency for https://phab.enlightenment.org/D12046 Reviewers: raster Reviewed By: raster Subscribers: cedric, #reviewers, #committers Tags: #efl Differential Revision: https://phab.enlightenment.org/D12047
* Revert "edje: Avoid string duplication when possible."Carsten Haitzler (Rasterman)2020-07-071-14/+8
| | | | | | This reverts commit 704d58d658ed4424a886c127f3bbe83afde1f2a1. gee. it looked innocent enough... it broke tests and everything in e
* edje: Avoid string duplication when possible.Woochanlee2020-07-071-8/+14
| | | | | | | | | | | | | | Summary: Most use case the part name dosen't contain the recursive name so we don't have to go through expensive eina_string_split operation. Reviewers: smohanty, cedric, Hermet, raster Subscribers: cedric, #reviewers, #committers Tags: #efl Differential Revision: https://phab.enlightenment.org/D12045
* benchmark: eina: remove outdated ecore_hashStefan Schmidt2020-07-0610-1881/+4
| | | | | | | | | | | | Ecore_hash is an ancestor of eina_hash and not used anywhere anymore. We simply forgot to remove it from our benchmark utility. Together with ecore_hash we are removing ecore_strings, which uses it, and the corresponding benchmark files. Signed-off-by: Stefan Schmidt <s.schmidt@samsung.com> Reviewed-by: Marcel Hollerbach <mail@marcel-hollerbach.de> Differential Revision: https://phab.enlightenment.org/D12042
* evas_text: lazy loading color glyph images in RAMAli Alzyod2020-07-064-28/+81
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Summary: Lazy loading for glyph images into RAM, instead of caching at layout level we will cache only when rendering. This may affect speed a bit since color glyphs will be loaded twice before caching (with FT_Load_Glyph) Try to run test application, and hit `scale font` ** RAM consumption (Accelerated Rendering) ** | Before | After | |-------:|-------| | 111.9 | 21.8 | | 204.8 | 24.4 | | 298.0 | 26.3 | | 391.5 | 28.4 | | 484.8 | 29.9 | | 578.1 | 31.4 | | 671.4 | 32.5 | ** RAM consumption (SW Rendering) ** | Before | After | |-------:|-------| | 104 | 14.6 | | 197 | 17 | | 290 | 19.1 | | 384 | 21.2 | | 477 | 22.8 | | 571 | 24.3 | | 664 | 25.6 | Test Plan: ``` #include <Elementary.h> typedef struct _APP { Evas_Object *tb1; Evas_Object *btnLoad; } APP; char *text = "<align=center><color=#4DE0FFFF underline=on underline_color=#4DE0FFFF><a href='tel:1234567890'>1234567890</a></color>๐Ÿ˜€๐Ÿ˜๐Ÿ˜‚๐Ÿคฃ๐Ÿ˜ƒ๐Ÿ˜„๐Ÿ˜…๐Ÿ˜†๐Ÿ˜‰๐Ÿ˜Š๐Ÿ˜‹๐Ÿ˜Ž๐Ÿ˜๐Ÿ˜˜๐Ÿ˜—๐Ÿ˜™๐Ÿ˜šโ˜บ๐Ÿ™‚๐Ÿค—๐Ÿค”๐Ÿ˜๐Ÿ˜‘๐Ÿ˜ถ๐Ÿ™„๐Ÿ˜๐Ÿ˜ฃ๐Ÿ˜ฅ๐Ÿ˜ฎ๐Ÿค๐Ÿ˜ฏ๐Ÿ˜ช๐Ÿ˜ซ๐Ÿ˜ด๐Ÿ˜Œ๐Ÿค“๐Ÿ˜›๐Ÿ˜œ๐Ÿ˜๐Ÿคค๐Ÿ˜’๐Ÿ˜“๐Ÿ˜”๐Ÿ˜•๐Ÿ™ƒ๐Ÿค‘๐Ÿ˜ฒโ˜น๐Ÿ™๐Ÿ˜–๐Ÿ˜ž๐Ÿ˜Ÿ๐Ÿ˜ค๐Ÿ˜ข๐Ÿ˜ญ๐Ÿ˜ฆ๐Ÿ˜ง๐Ÿ˜จ๐Ÿ˜ฉ๐Ÿ˜ฌ๐Ÿ˜ฐ๐Ÿ˜ฑ๐Ÿ˜ณ๐Ÿ˜ต๐Ÿ˜ก๐Ÿ˜ ๐Ÿ˜‡๐Ÿค ๐Ÿคก๐Ÿคฅ๐Ÿ˜ท๐Ÿค’๐Ÿค•๐Ÿคข๐Ÿคงโ˜ป๐Ÿ˜ˆ๐Ÿ‘ฟ๐Ÿ‘น๐Ÿ‘บ๐Ÿ’€โ˜ ๐Ÿ‘ป๐Ÿ‘ฝ๐Ÿ‘พ๐Ÿค–๐Ÿ’ฉ๐Ÿ˜บ๐Ÿ˜ธ๐Ÿ˜น๐Ÿ˜ป๐Ÿ˜ผ๐Ÿ˜ฝ๐Ÿ™€๐Ÿ˜ฟ๐Ÿ˜พ๐Ÿ™ˆ๐Ÿ™‰๐Ÿ™Š๐Ÿ‘ฆ๐Ÿ‘ง๐Ÿ‘จ๐Ÿ‘ฉ๐Ÿ‘ต๐Ÿ‘ถ๐Ÿ‘ผ๐Ÿ‘จโ€โš•๏ธ๐Ÿ‘ฉโ€โš•๏ธ๐Ÿ‘จโ€๐ŸŽ“๐Ÿ‘ฉโ€๐ŸŽ“๐Ÿ‘จโ€๐Ÿซ๐Ÿ‘ฉโ€๐Ÿซ๐Ÿ‘จโ€โš–๐Ÿ‘ฉโ€โš–๐Ÿ‘จโ€๐ŸŒพ๐Ÿ‘ฉโ€๐ŸŒพ๐Ÿ‘จโ€๐Ÿณ๐Ÿ‘ฉโ€๐Ÿณ๐Ÿ‘จโ€๐Ÿ”ง๐Ÿ‘ฉโ€๐Ÿ”ง๐Ÿ‘จโ€๐Ÿญ๐Ÿ‘ฉโ€๐Ÿญ๐Ÿ‘จโ€๐Ÿ’ผ๐Ÿ‘ฉโ€๐Ÿ’ผ๐Ÿ‘จโ€๐Ÿ”ฌ๐Ÿ‘ฉโ€๐Ÿ”ฌ๐Ÿ‘จโ€๐Ÿ’ป๐Ÿ‘ฉโ€๐Ÿ’ป๐Ÿ‘จโ€๐ŸŽค๐Ÿ‘ฉโ€๐ŸŽค๐Ÿ‘จโ€๐ŸŽจ๐Ÿ‘ฉโ€๐ŸŽจ๐Ÿ‘จโ€โœˆ๏ธ๐Ÿ‘ฉโ€โœˆ๏ธ๐Ÿ‘จโ€๐Ÿš€๐Ÿ‘ฉโ€๐Ÿš€๐Ÿ‘จโ€๐Ÿš’๐Ÿ‘ฉโ€๐Ÿš’๐Ÿ‘ฎโ€โ™‚๏ธ๐Ÿ‘ฎโ€โ™€๏ธ๐Ÿ•ต๏ธโ€โ™‚๏ธ๐Ÿ•ต๏ธโ€โ™€๏ธ๐Ÿ’‚โ€โ™‚๏ธ๐Ÿ’‚โ€โ™€๏ธ๐Ÿ‘ทโ€โ™‚๏ธ๐Ÿ‘ทโ€โ™€๏ธ๐Ÿ‘ณโ€โ™‚๏ธ๐Ÿ‘ณโ€โ™€๏ธ๐Ÿ‘ฑโ€โ™‚๏ธ๐Ÿ‘ฑโ€โ™€๏ธ๐ŸŽ…๐Ÿคถ๐Ÿ‘ธ๐Ÿคด๐Ÿ‘ฐ๐Ÿคต๐Ÿคฐ๐Ÿ‘ฒ๐Ÿ™โ€โ™‚๏ธ๐Ÿ™โ€โ™€๏ธ๐Ÿ™Žโ€โ™‚๏ธ๐Ÿ™Žโ€โ™€๏ธ๐Ÿ™…โ€โ™‚๏ธ๐Ÿ™…โ€โ™€๏ธ๐Ÿ™†โ€โ™‚๏ธ๐Ÿ™†โ€โ™€๏ธ๐Ÿ’โ€โ™‚๏ธ๐Ÿ’โ€โ™€๏ธ๐Ÿ™‹โ€โ™‚๏ธ๐Ÿ™‹โ€โ™€๏ธ๐Ÿ™‡โ€โ™‚๏ธ๐Ÿ™‡โ€โ™€๏ธ๐Ÿคฆโ€โ™‚๏ธ๐Ÿคฆโ€โ™€๏ธ๐Ÿคทโ€โ™‚๏ธ๐Ÿคทโ€โ™€๏ธ๐Ÿ’†โ€โ™‚๏ธ๐Ÿ’†โ€โ™€๏ธ๐Ÿ’‡โ€โ™‚๏ธ๐Ÿ’‡โ€โ™€๏ธ๐Ÿšถโ€โ™‚๏ธ๐Ÿšถโ€โ™€๏ธ๐Ÿƒโ€โ™‚๏ธ๐Ÿƒโ€โ™€๏ธ๐Ÿ’ƒ๐Ÿ•บ๐Ÿ‘ฏโ€โ™‚๏ธ๐Ÿ‘ฏโ€โ™€๏ธ๐Ÿ•ด๐Ÿ—ฃ๐Ÿ‘ค๐Ÿ‘ฅ๐Ÿ‘ซ๐Ÿ‘ฌ๐Ÿ‘ญ๐Ÿ’๐Ÿ’‘๐Ÿ‘ช๐Ÿ‘จโ€๐Ÿ‘ฉโ€๐Ÿ‘ง๐Ÿ‘จโ€๐Ÿ‘ฉโ€๐Ÿ‘งโ€๐Ÿ‘ฆ๐Ÿ‘จโ€๐Ÿ‘ฉโ€๐Ÿ‘ฆโ€๐Ÿ‘ฆ๐Ÿ‘จโ€๐Ÿ‘ฉโ€๐Ÿ‘งโ€๐Ÿ‘ง๐Ÿ‘จโ€๐Ÿ‘ฆ๐Ÿ‘จโ€๐Ÿ‘ฆโ€๐Ÿ‘ฆ๐Ÿ‘จโ€๐Ÿ‘ง๐Ÿ‘จโ€๐Ÿ‘งโ€๐Ÿ‘ฆ๐Ÿ‘จโ€๐Ÿ‘งโ€๐Ÿ‘ง๐Ÿ‘ฉโ€๐Ÿ‘ฆ๐Ÿ‘ฉโ€๐Ÿ‘ฆโ€๐Ÿ‘ฆ๐Ÿ‘ฉโ€๐Ÿ‘ง๐Ÿ‘ฉโ€๐Ÿ‘งโ€๐Ÿ‘ฆ๐Ÿ‘ฉโ€๐Ÿ‘งโ€๐Ÿ‘ง๐Ÿ’ช๐Ÿคณ๐Ÿ‘ˆ๐Ÿ‘‰โ˜๏ธ๐Ÿ‘†๐Ÿ–•๐Ÿ‘‡โœŒ๐Ÿคž๐Ÿ––๐Ÿค˜๐Ÿ‘Š๐Ÿ–โœ‹๐Ÿ‘Œ๐Ÿ‘๐Ÿ‘ŽโœŠ๐Ÿ‘Š๐Ÿค›๐Ÿคœ๐Ÿคš๐Ÿ‘‹๐Ÿ‘โœ๐Ÿ‘๐Ÿ™Œ๐Ÿ™๐Ÿค๐Ÿ’…๐Ÿ‘‚๐Ÿ‘ƒ๐Ÿ‘ฃ๐Ÿ‘€๐Ÿ‘๐Ÿ‘…๐Ÿ‘„๐Ÿ’‹๐Ÿ’˜โค๐Ÿ’“๐Ÿ’”๐Ÿ’•๐Ÿ’–๐Ÿ’—๐Ÿ’™๐Ÿ’š๐Ÿ’›๐Ÿ’œ๐Ÿ–ค๐Ÿ’๐Ÿ’ž๐Ÿ’Ÿโฃ๐Ÿ’Œ๐Ÿ’ค๐Ÿ’ข๐Ÿ’ฃ๐Ÿ’ฅ๐Ÿ’ฆ๐Ÿ’จ๐Ÿ’ซ๐Ÿ’ฌ๐Ÿ—จ๐Ÿ—ฏ๐Ÿ’ญ๐Ÿ•ณ๐Ÿ‘“๐Ÿ•ถ๐Ÿ‘”๐Ÿ‘•๐Ÿ‘–๐Ÿ‘—๐Ÿ‘˜๐Ÿ‘™๐Ÿ‘š๐Ÿ‘›๐Ÿ‘œ๐Ÿ‘๐Ÿ›๐ŸŽ’๐Ÿ‘ž๐Ÿ‘Ÿ๐Ÿ‘ ๐Ÿ‘ก๐Ÿ‘ข๐Ÿ‘‘๐Ÿ‘’๐ŸŽฉ๐ŸŽ“โ›‘๐Ÿ“ฟ๐Ÿ’„๐Ÿ’๐Ÿ’Ž๐Ÿต๐Ÿ’๐Ÿฆ๐Ÿถ๐Ÿ•๐Ÿฉ๐Ÿบ๐ŸฆŠ๐Ÿฑ๐Ÿˆ๐Ÿฆ๐Ÿฏ๐Ÿ…๐Ÿ†๐Ÿด๐ŸŽ๐ŸฆŒ๐Ÿฆ„๐Ÿฎ๐Ÿ‚๐Ÿƒ๐Ÿ„๐Ÿท๐Ÿ–๐Ÿ—๐Ÿฝ๐Ÿ๐Ÿ‘๐Ÿ๐Ÿช๐Ÿซ๐Ÿ˜๐Ÿฆ๐Ÿญ๐Ÿ๐Ÿ€๐Ÿน๐Ÿฐ๐Ÿ‡๐Ÿฟ๐Ÿฆ‡๐Ÿป๐Ÿจ๐Ÿผ๐Ÿพ๐Ÿฆƒ๐Ÿ”๐Ÿ“๐Ÿฃ๐Ÿค๐Ÿฅ๐Ÿฆ๐Ÿง๐Ÿ•Š๐Ÿฆ…๐Ÿฆ†๐Ÿฆ‰๐Ÿธ๐ŸŠ๐Ÿข๐ŸฆŽ๐Ÿ๐Ÿฒ๐Ÿ‰๐Ÿณ๐Ÿ‹๐Ÿฌ๐ŸŸ๐Ÿ ๐Ÿก๐Ÿฆˆ๐Ÿ™๐Ÿš๐Ÿฆ€๐Ÿฆ๐Ÿฆ‘๐Ÿฆ‹๐ŸŒ๐Ÿ›๐Ÿœ๐Ÿ๐Ÿž๐Ÿ•ท๐Ÿ•ธ๐Ÿฆ‚๐Ÿ’๐ŸŒธ๐Ÿ’ฎ๐Ÿต๐ŸŒน๐Ÿฅ€๐ŸŒบ๐ŸŒป๐ŸŒผ๐ŸŒทโš˜๐ŸŒฑ๐ŸŒฒ๐ŸŒณ๐ŸŒด๐ŸŒต๐ŸŒพ๐ŸŒฟโ˜˜๐Ÿ€๐Ÿ๐Ÿ‚๐Ÿƒ๐Ÿ‡๐Ÿˆ๐Ÿ‰๐ŸŠ๐Ÿ‹๐ŸŒ๐Ÿ๐ŸŽ๐Ÿ๐Ÿ๐Ÿ‘๐Ÿ’๐Ÿ“๐Ÿ…๐Ÿฅ๐Ÿฅ‘๐Ÿ†๐Ÿฅ”๐Ÿฅ•๐ŸŒฝ๐ŸŒถ๐Ÿฅ’๐Ÿ„๐Ÿฅœ๐ŸŒฐ๐Ÿž๐Ÿฅ๐Ÿฅ–๐Ÿฅž๐Ÿง€๐Ÿ–๐Ÿ—๐Ÿฅ“๐Ÿ”๐ŸŸ๐Ÿ•๐ŸŒญ๐ŸŒฎ๐ŸŒฏ๐Ÿฅ™๐Ÿฅš๐Ÿณ๐Ÿฅ˜๐Ÿฒ๐Ÿฅ—๐Ÿฟ๐Ÿฑ๐Ÿ˜๐Ÿ™๐Ÿš๐Ÿ›๐Ÿœ๐Ÿ๐Ÿ ๐Ÿข๐Ÿฃ๐Ÿค๐Ÿฅ๐Ÿก๐Ÿฆ๐Ÿง๐Ÿจ๐Ÿฉ๐Ÿช๐ŸŽ‚๐Ÿฐ๐Ÿซ๐Ÿฌ๐Ÿญ๐Ÿฎ๐Ÿฏ๐Ÿผ๐Ÿฅ›โ˜•๐Ÿต๐Ÿถ๐Ÿพ๐Ÿท๐Ÿธ๐Ÿน๐Ÿบ๐Ÿป๐Ÿฅ‚๐Ÿฝ๐Ÿด๐Ÿฅ„๐Ÿ”ช๐Ÿบ๐ŸŽƒ๐ŸŽ„๐ŸŽ†๐ŸŽ‡โœจ๐ŸŽˆ๐ŸŽ‰๐ŸŽŠ๐ŸŽ‹๐ŸŽ๐ŸŽŽ๐ŸŽ๐ŸŽ๐ŸŽ‘๐ŸŽ€๐ŸŽ๐ŸŽ—๐ŸŽŸ๐ŸŽซ๐ŸŽ–๐Ÿ†๐Ÿ…๐Ÿฅ‡๐Ÿฅˆ๐Ÿฅ‰โšฝ๏ธโšพ๏ธ๐Ÿ€๐Ÿ๐Ÿˆ๐Ÿ‰๐ŸŽพ๐ŸŽฑ๐ŸŽณ๐Ÿ๐Ÿ‘๐Ÿ’๐Ÿ“๐Ÿธ๐ŸฅŠ๐Ÿฅ‹๐Ÿฅ…๐ŸŽฏโ›ณ๐ŸŒ๏ธโ€โ™‚๏ธ๐ŸŒ๏ธโ€โ™€๏ธโ›ธ๐ŸŽฃ๐ŸŽฝ๐ŸŽฟโ›ท๐Ÿ‚๐Ÿ„โ€โ™‚๏ธ๐Ÿ„โ€โ™€๏ธ๐Ÿ‡๐ŸŠโ€โ™‚๏ธ๐ŸŠโ€โ™€๏ธโ›น๏ธโ€โ™‚๏ธโ›น๏ธโ€โ™€๏ธ๐Ÿ‹๏ธโ€โ™‚๏ธ๐Ÿ‹๏ธโ€โ™€๏ธ๐Ÿšดโ€โ™‚๏ธ๐Ÿšดโ€โ™€๏ธ๐Ÿšตโ€โ™‚๏ธ๐Ÿšตโ€โ™€๏ธ๐ŸŽ๐Ÿ๐Ÿคธโ€โ™‚๏ธ๐Ÿคธโ€โ™€๏ธ๐Ÿคผโ€โ™‚๏ธ๐Ÿคผโ€โ™€๏ธ๐Ÿคฝโ€โ™‚๏ธ๐Ÿคฝโ€โ™€๏ธ๐Ÿคพโ€โ™‚๏ธ๐Ÿคพโ€โ™€๏ธ๐Ÿคบ๐Ÿคนโ€โ™‚๏ธ๐Ÿคนโ€โ™€๏ธ๐ŸŽฎ๐Ÿ•น๐ŸŽฒโ™ ๏ธโ™ฅ๏ธโ™ฆ๏ธโ™ฃ๏ธ๐Ÿƒ๐Ÿ€„๐ŸŽด๐ŸŒ๐ŸŒŽ๐ŸŒ๐ŸŒ๐Ÿ—บ๐Ÿ”โ›ฐ๐ŸŒ‹๐Ÿ—ป๐Ÿ•๐Ÿ–๐Ÿœ๐Ÿ๐Ÿž๐ŸŸ๐Ÿ›๐Ÿ—๐Ÿ˜๐Ÿ™๐Ÿš๐Ÿ ๐Ÿก๐Ÿข๐Ÿฃ๐Ÿค๐Ÿฅ๐Ÿฆ๐Ÿจ๐Ÿฉ๐Ÿช๐Ÿซ๐Ÿฌ๐Ÿญ๐Ÿฏ๐Ÿฐ๐Ÿ’’๐Ÿ—ผ๐Ÿ—ฝโ›ช๐Ÿ•Œ๐Ÿ•โ›ฉ๐Ÿ•‹โ›ฒโ›บ๐ŸŒ๐ŸŒƒ๐ŸŒ„๐ŸŒ…๐ŸŒ†๐ŸŒ‡๐ŸŒ‰โ›ผโ™จ๏ธ๐ŸŒŒ๐ŸŽ ๐ŸŽก๐ŸŽข๐Ÿ’ˆ๐ŸŽช๐ŸŽญ๐Ÿ–ผ๐ŸŽจ๐ŸŽฐ๐Ÿš‚๐Ÿšƒ๐Ÿš„๐Ÿš…๐Ÿš†๐Ÿš‡๐Ÿšˆ๐Ÿš‰๐ŸšŠ๐Ÿš๐Ÿšž๐Ÿš‹๐ŸšŒ๐Ÿš๐ŸšŽ๐Ÿš๐Ÿš‘๐Ÿš’๐Ÿš“๐Ÿš”๐Ÿš•๐Ÿš–๐Ÿš—๐Ÿš˜๐Ÿš™๐Ÿšš๐Ÿš›โ›Ÿ๐Ÿšœ๐Ÿšฒ๐Ÿ›ด๐Ÿ›ต๐Ÿš๐Ÿ›ฃ๐Ÿ›คโ›ฝ๐Ÿšจ๐Ÿšฅ๐Ÿšฆ๐Ÿšง๐Ÿ›‘โš“โ›ต๐Ÿšฃโ€โ™‚๏ธ๐Ÿšฃโ€โ™€๏ธ๐Ÿ›ถ๐Ÿšค๐Ÿ›ณโ›ด๐Ÿ›ฅ๐Ÿšขโœˆ๐Ÿ›ฉ๐Ÿ›ซ๐Ÿ›ฌ๐Ÿ’บ๐Ÿš๐ŸšŸ๐Ÿš ๐Ÿšก๐Ÿš€๐Ÿ›ฐ๐Ÿ›Ž๐Ÿšช๐Ÿ›Œ๐Ÿ›๐Ÿ›‹๐Ÿšฝ๐Ÿšฟ๐Ÿ›€๐Ÿ›โŒ›โณโŒšโฐโฑโฒ๐Ÿ•ฐ๐Ÿ•›๐Ÿ•ง๐Ÿ•๐Ÿ•œ๐Ÿ•‘๐Ÿ•๐Ÿ•’๐Ÿ•ž๐Ÿ•“๐Ÿ•Ÿ๐Ÿ•”๐Ÿ• ๐Ÿ••๐Ÿ•ก๐Ÿ•–๐Ÿ•ข๐Ÿ•—๐Ÿ•ฃ๐Ÿ•˜๐Ÿ•ค๐Ÿ•™๐Ÿ•ฅ๐Ÿ•š๐Ÿ•ฆ๐ŸŒ‘๐ŸŒ’๐ŸŒ“๐ŸŒ”๐ŸŒ•๐ŸŒ–๐ŸŒ—๐ŸŒ˜๐ŸŒ™๐ŸŒš๐ŸŒ›๐ŸŒœ๐ŸŒกโ˜€๏ธ๐ŸŒ๐ŸŒžโญ๐ŸŒŸ๐ŸŒ โ˜๏ธโ›…โ›ˆ๐ŸŒค๐ŸŒฅ๐ŸŒฆ๐ŸŒง๐ŸŒจ๐ŸŒฉ๐ŸŒช๐ŸŒซ๐ŸŒฌ๐ŸŒ€๐ŸŒˆ๐ŸŒ‚โ˜‚๏ธโ˜”โ›ฑโšกโ„โ˜ƒ๏ธโ›„โ˜„๐Ÿ”ฅ๐Ÿ’ง๐ŸŒŠ๐Ÿ”‡๐Ÿ”ˆ๐Ÿ”‰๐Ÿ”Š๐Ÿ“ข๐Ÿ“ฃ๐Ÿ“ฏ๐Ÿ””๐Ÿ”•๐ŸŽผ๐ŸŽต๐ŸŽถ๐ŸŽ™๐ŸŽš๐ŸŽ›๐ŸŽค๐ŸŽง๐Ÿ“ป๐ŸŽท๐ŸŽธ๐ŸŽน๐ŸŽบ๐ŸŽป๐Ÿฅ๐Ÿ“ฑ๐Ÿ“ฒโ˜Ž๏ธ๐Ÿ“ž๐Ÿ“Ÿ๐Ÿ“ ๐Ÿ”‹๐Ÿ”Œ๐Ÿ’ป๐Ÿ–ฅ๐Ÿ–จโŒจ๐Ÿ–ฑ๐Ÿ–ฒ๐Ÿ’ฝ๐Ÿ’พ๐Ÿ’ฟ๐Ÿ“€๐ŸŽฅ๐ŸŽž๐Ÿ“ฝ๐ŸŽฌ๐Ÿ“บ๐Ÿ“ท๐Ÿ“ธ๐Ÿ“น๐Ÿ“ผ๐Ÿ”๐Ÿ”Ž๐Ÿ”ฌ๐Ÿ”ญ๐Ÿ“ก๐Ÿ•ฏ๐Ÿ’ก๐Ÿ”ฆ๐Ÿฎ๐Ÿ“”๐Ÿ“•๐Ÿ“–๐Ÿ“—๐Ÿ“˜๐Ÿ“™๐Ÿ“š๐Ÿ““๐Ÿ“’๐Ÿ“ƒ๐Ÿ“œ๐Ÿ“„๐Ÿ“ฐ๐Ÿ—ž๐Ÿ“‘๐Ÿ”–๐Ÿท๐Ÿ’ฐ๐Ÿ’ด๐Ÿ’ต๐Ÿ’ถ๐Ÿ’ท๐Ÿ’ธ๐Ÿ’ณ๐Ÿ’ฑ๐Ÿ’ฒโœ‰๐Ÿ“ง๐Ÿ“จ๐Ÿ“ฉ๐Ÿ“ค๐Ÿ“ฅ๐Ÿ“ฆ๐Ÿ“ซ๐Ÿ“ช๐Ÿ“ฌ๐Ÿ“ญ๐Ÿ“ฎ๐Ÿ—ณโœโœ’๐Ÿ–‹๐Ÿ–Š๐Ÿ–Œ๐Ÿ–๐Ÿ“๐Ÿ’ผ๐Ÿ“๐Ÿ“‚๐Ÿ—‚๐Ÿ“…๐Ÿ“†๐Ÿ—’๐Ÿ—“๐Ÿ“‡๐Ÿ“ˆ๐Ÿ“‰๐Ÿ“Š๐Ÿ“‹๐Ÿ“Œ๐Ÿ“๐Ÿ“Ž๐Ÿ–‡๐Ÿ“๐Ÿ“โœ‚๏ธ๐Ÿ—ƒ๐Ÿ—„๐Ÿ—‘๐Ÿ”’๐Ÿ”“๐Ÿ”๐Ÿ”๐Ÿ”‘๐Ÿ—๐Ÿ”จโ›โš’๐Ÿ› ๐Ÿ—กโš”๐Ÿ”ซ๐Ÿน๐Ÿ›ก๐Ÿ”ง๐Ÿ”ฉโš™๐Ÿ—œโš—โš–๐Ÿ”—โ›“๐Ÿ’‰๐Ÿ’Š๐Ÿšฌโšฐโšฑ๐Ÿ—ฟ๐Ÿ›ข๐Ÿ”ฎ๐Ÿ”ฎ๐Ÿง๐Ÿšฎ๐Ÿšฐโ™ฟ๐Ÿšน๐Ÿšบ๐Ÿšป๐Ÿšผ๐Ÿšพ๐Ÿ›‚๐Ÿ›ƒ๐Ÿ›„๐Ÿ›…โš ๏ธ๐Ÿšธโ›”๐Ÿšซ๐Ÿšณ๐Ÿšญ๐Ÿšฏ๐Ÿšฑ๐Ÿšท๐Ÿ“ต๐Ÿ”žโ˜ขโ˜ฃโฌ†๏ธโ†—๏ธโžก๏ธโ†˜๏ธโฌ‡๏ธโ†™๏ธโฌ…๏ธโ†–๏ธโ†•๏ธโ†”๏ธโ†ฉโ†ชโคด๏ธโคต๏ธ๐Ÿ”ƒ๐Ÿ”„๐Ÿ”™๐Ÿ”š๐Ÿ”›๐Ÿ”œ๐Ÿ”๐Ÿ›โš›๐Ÿ•‰โœกโ˜ธโ˜ฏ๏ธโ˜ฆโ˜ฎ๐Ÿ•Ž๐Ÿ”ฏโ™ˆโ™‰โ™Šโ™‹โ™Œโ™โ™Žโ™โ™โ™‘โ™’โ™“โ›Ž๐Ÿ”€๐Ÿ”๐Ÿ”‚โ–ถ๏ธโฉโญโฏโ—€๏ธโชโฎ๐Ÿ”ผโซ๐Ÿ”ฝโฌโธโนโบโ๐ŸŽฆ๐Ÿ”…๐Ÿ”†๐Ÿ“ถ๐Ÿ“ณ๐Ÿ“ดโ™ป๏ธ๐Ÿ“›โšœ๐Ÿ”ฐ๐Ÿ”ฑโญ•โœ…โ˜‘โœ”โœ–โŒโŽโž•โ™€๏ธโ™‚๏ธโš•โž–โž—โžฐโžฟใ€ฝโœณโœดโ‡โ‰๏ธโ“โ”โ•โ—ใ€ฐ๐Ÿ”Ÿ๐Ÿ’ฏ๐Ÿ” ๐Ÿ”ก๐Ÿ”ข๐Ÿ”ฃ๐Ÿ”ค๐Ÿ…ฐ๏ธ๐Ÿ†Ž๏ธ๐Ÿ…ฑ๏ธ๐Ÿ†‘๏ธ๐Ÿ†’๏ธ๐Ÿ†“๏ธโ„น๐Ÿ†”๏ธโ“‚๏ธ๐Ÿ†•๏ธ๐Ÿ†–๏ธ๐Ÿ…พ๏ธ๐Ÿ†—๏ธ๐Ÿ…ฟ๏ธ๐Ÿ†˜๏ธ๐Ÿ†™๏ธ๐Ÿ†š๏ธ๐Ÿˆ๐Ÿˆ‚๐Ÿˆท๐Ÿˆถ๐Ÿˆฏ๐Ÿ‰๐Ÿˆน๐Ÿˆš๐Ÿˆฒ๐Ÿ‰‘๐Ÿˆธ๐Ÿˆด๐ŸˆณใŠ—ใŠ™๐Ÿˆบ๐Ÿˆตโ–ซ๏ธโ—ปโ—ผโ—ฝโ—พโฌ›โฌœ๐Ÿ”ถ๏ธ๐Ÿ”ท๏ธ๐Ÿ”ธ๏ธ๐Ÿ”น๏ธ๐Ÿ”บ๏ธ๐Ÿ”ป๐Ÿ’ ๐Ÿ”˜๐Ÿ”ฒ๐Ÿ”ณโšชโšซ๐Ÿ”ด๐Ÿ”ต๐Ÿ๐Ÿšฉ๐Ÿด๐Ÿณ๐Ÿณ๏ธโ€๐ŸŒˆโš€โšโš‚โšƒโš„โš…โ›พโ™พ๐Ÿ‡ฆ๐Ÿ‡จ๐Ÿ‡ฆ๐Ÿ‡ฉ๐Ÿ‡ฆ๐Ÿ‡ช๐Ÿ‡ฆ๐Ÿ‡ซ๐Ÿ‡ฆ๐Ÿ‡ฌ๐Ÿ‡ฆ๐Ÿ‡ฎ๐Ÿ‡ฆ๐Ÿ‡ฑ๐Ÿ‡ฆ๐Ÿ‡ฒ๐Ÿ‡ฆ๐Ÿ‡ด๐Ÿ‡ฆ๐Ÿ‡ถ๐Ÿ‡ฆ๐Ÿ‡ท๐Ÿ‡ฆ๐Ÿ‡ธ๐Ÿ‡ฆ๐Ÿ‡น๐Ÿ‡ฆ๐Ÿ‡บ๐Ÿ‡ฆ๐Ÿ‡ผ๐Ÿ‡ฆ๐Ÿ‡ฝ๐Ÿ‡ฆ๐Ÿ‡ฟ๐Ÿ‡ง๐Ÿ‡ฆ๐Ÿ‡ง๐Ÿ‡ง๐Ÿ‡ง๐Ÿ‡ฉ๐Ÿ‡ง๐Ÿ‡ช๐Ÿ‡ง๐Ÿ‡ซ๐Ÿ‡ง๐Ÿ‡ฌ๐Ÿ‡ง๐Ÿ‡ญ๐Ÿ‡ง๐Ÿ‡ฎ๐Ÿ‡ง๐Ÿ‡ฏ๐Ÿ‡ง๐Ÿ‡ฑ๐Ÿ‡ง๐Ÿ‡ฒ๐Ÿ‡ง๐Ÿ‡ณ๐Ÿ‡ง๐Ÿ‡ด๐Ÿ‡ง๐Ÿ‡ถ๐Ÿ‡ง๐Ÿ‡ท๐Ÿ‡ง๐Ÿ‡ธ๐Ÿ‡ง๐Ÿ‡น๐Ÿ‡ง๐Ÿ‡ผ๐Ÿ‡ง๐Ÿ‡พ๐Ÿ‡ง๐Ÿ‡ฟ๐Ÿ‡จ๐Ÿ‡ฆ๐Ÿ‡จ๐Ÿ‡จ๐Ÿ‡จ๐Ÿ‡ฉ๐Ÿ‡จ๐Ÿ‡ซ๐Ÿ‡จ๐Ÿ‡ฌ๐Ÿ‡จ๐Ÿ‡ญ๐Ÿ‡จ๐Ÿ‡ฎ๐Ÿ‡จ๐Ÿ‡ฐ๐Ÿ‡จ๐Ÿ‡ฑ๐Ÿ‡จ๐Ÿ‡ฒ๐Ÿ‡จ๐Ÿ‡ณ๐Ÿ‡จ๐Ÿ‡ด๐Ÿ‡จ๐Ÿ‡ท๐Ÿ‡จ๐Ÿ‡บ๐Ÿ‡จ๐Ÿ‡ป๐Ÿ‡จ๐Ÿ‡ผ๐Ÿ‡จ๐Ÿ‡ฝ๐Ÿ‡จ๐Ÿ‡พ๐Ÿ‡จ๐Ÿ‡ฟ๐Ÿ‡ฉ๐Ÿ‡ช๐Ÿ‡ฉ๐Ÿ‡ฏ๐Ÿ‡ฉ๐Ÿ‡ฐ๐Ÿ‡ฉ๐Ÿ‡ฒ๐Ÿ‡ฉ๐Ÿ‡ด๐Ÿ‡ฉ๐Ÿ‡ฟ๐Ÿ‡ช๐Ÿ‡จ๐Ÿ‡ช๐Ÿ‡ช๐Ÿ‡ช๐Ÿ‡ฌ๐Ÿ‡ช๐Ÿ‡ญ๐Ÿ‡ช๐Ÿ‡ท๐Ÿ‡ช๐Ÿ‡ธ๐Ÿ‡ช๐Ÿ‡น๐Ÿ‡ช๐Ÿ‡บ๐Ÿ‡ซ๐Ÿ‡ฎ๐Ÿ‡ซ๐Ÿ‡ฏ๐Ÿ‡ซ๐Ÿ‡ฐ๐Ÿ‡ซ๐Ÿ‡ฒ๐Ÿ‡ซ๐Ÿ‡ด๐Ÿ‡ซ๐Ÿ‡ท๐Ÿ‡ฌ๐Ÿ‡ฆ๐Ÿ‡ฌ๐Ÿ‡ง๐Ÿ‡ฌ๐Ÿ‡ฉ๐Ÿ‡ฌ๐Ÿ‡ช๐Ÿ‡ฌ๐Ÿ‡ซ๐Ÿ‡ฌ๐Ÿ‡ฌ๐Ÿ‡ฌ๐Ÿ‡ญ๐Ÿ‡ฌ๐Ÿ‡ฎ๐Ÿ‡ฌ๐Ÿ‡ฑ๐Ÿ‡ฌ๐Ÿ‡ฒ๐Ÿ‡ฌ๐Ÿ‡ณ๐Ÿ‡ฌ๐Ÿ‡ต๐Ÿ‡ฌ๐Ÿ‡ถ๐Ÿ‡ฌ๐Ÿ‡ท๐Ÿ‡ฌ๐Ÿ‡ธ๐Ÿ‡ฌ๐Ÿ‡น๐Ÿ‡ฌ๐Ÿ‡บ๐Ÿ‡ฌ๐Ÿ‡ผ๐Ÿ‡ฌ๐Ÿ‡พ๐Ÿ‡ญ๐Ÿ‡ฐ๐Ÿ‡ญ๐Ÿ‡ฒ๐Ÿ‡ญ๐Ÿ‡ณ๐Ÿ‡ญ๐Ÿ‡ท๐Ÿ‡ญ๐Ÿ‡น๐Ÿ‡ญ๐Ÿ‡บ๐Ÿ‡ฎ๐Ÿ‡จ๐Ÿ‡ฎ๐Ÿ‡ฉ๐Ÿ‡ฎ๐Ÿ‡ช๐Ÿ‡ฎ๐Ÿ‡ฑ๐Ÿ‡ฎ๐Ÿ‡ฒ๐Ÿ‡ฎ๐Ÿ‡ณ๐Ÿ‡ฎ๐Ÿ‡ด๐Ÿ‡ฎ๐Ÿ‡ถ๐Ÿ‡ฎ๐Ÿ‡ท๐Ÿ‡ฎ๐Ÿ‡ธ๐Ÿ‡ฎ๐Ÿ‡น๐Ÿ‡ฏ๐Ÿ‡ช๐Ÿ‡ฏ๐Ÿ‡ฒ๐Ÿ‡ฏ๐Ÿ‡ด๐Ÿ‡ฏ๐Ÿ‡ต๐Ÿ‡ฐ๐Ÿ‡ช๐Ÿ‡ฐ๐Ÿ‡ฌ๐Ÿ‡ฐ๐Ÿ‡ญ๐Ÿ‡ฐ๐Ÿ‡ฎ๐Ÿ‡ฐ๐Ÿ‡ฒ๐Ÿ‡ฐ๐Ÿ‡ณ๐Ÿ‡ฐ๐Ÿ‡ต๐Ÿ‡ฐ๐Ÿ‡ท๐Ÿ‡ฐ๐Ÿ‡ผ๐Ÿ‡ฐ๐Ÿ‡พ๐Ÿ‡ฐ๐Ÿ‡ฟ๐Ÿ‡ฑ๐Ÿ‡ฆ๐Ÿ‡ฑ๐Ÿ‡ง๐Ÿ‡ฑ๐Ÿ‡จ๐Ÿ‡ฑ๐Ÿ‡ฎ๐Ÿ‡ฑ๐Ÿ‡ฐ๐Ÿ‡ฑ๐Ÿ‡ท๐Ÿ‡ฑ๐Ÿ‡ธ๐Ÿ‡ฑ๐Ÿ‡น๐Ÿ‡ฑ๐Ÿ‡บ๐Ÿ‡ฑ๐Ÿ‡ป๐Ÿ‡ฑ๐Ÿ‡พ๐Ÿ‡ฒ๐Ÿ‡ฆ๐Ÿ‡ฒ๐Ÿ‡จ๐Ÿ‡ฒ๐Ÿ‡ฉ๐Ÿ‡ฒ๐Ÿ‡ช๐Ÿ‡ฒ๐Ÿ‡ฌ๐Ÿ‡ฒ๐Ÿ‡ญ๐Ÿ‡ฒ๐Ÿ‡ฐ๐Ÿ‡ฒ๐Ÿ‡ฑ๐Ÿ‡ฒ๐Ÿ‡ฒ๐Ÿ‡ฒ๐Ÿ‡ณ๐Ÿ‡ฒ๐Ÿ‡ด๐Ÿ‡ฒ๐Ÿ‡ต๐Ÿ‡ฒ๐Ÿ‡ถ๐Ÿ‡ฒ๐Ÿ‡ท๐Ÿ‡ฒ๐Ÿ‡ธ๐Ÿ‡ฒ๐Ÿ‡น๐Ÿ‡ฒ๐Ÿ‡บ๐Ÿ‡ฒ๐Ÿ‡ป๐Ÿ‡ฒ๐Ÿ‡ผ๐Ÿ‡ฒ๐Ÿ‡ฝ๐Ÿ‡ฒ๐Ÿ‡พ๐Ÿ‡ฒ๐Ÿ‡ฟ๐Ÿ‡ณ๐Ÿ‡ฆ๐Ÿ‡ณ๐Ÿ‡จ๐Ÿ‡ณ๐Ÿ‡ช๐Ÿ‡ณ๐Ÿ‡ซ๐Ÿ‡ณ๐Ÿ‡ฌ๐Ÿ‡ณ๐Ÿ‡ฎ๐Ÿ‡ณ๐Ÿ‡ฑ๐Ÿ‡ณ๐Ÿ‡ด๐Ÿ‡ณ๐Ÿ‡ต๐Ÿ‡ณ๐Ÿ‡ท๐Ÿ‡ณ๐Ÿ‡บ๐Ÿ‡ณ๐Ÿ‡ฟ๐Ÿ‡ด๐Ÿ‡ฒ๐Ÿ‡ต๐Ÿ‡ฆ๐Ÿ‡ต๐Ÿ‡ช๐Ÿ‡ต๐Ÿ‡ซ๐Ÿ‡ต๐Ÿ‡ฌ๐Ÿ‡ต๐Ÿ‡ญ๐Ÿ‡ต๐Ÿ‡ฐ๐Ÿ‡ต๐Ÿ‡ฑ๐Ÿ‡ต๐Ÿ‡ฒ๐Ÿ‡ต๐Ÿ‡ณ๐Ÿ‡ต๐Ÿ‡ท๐Ÿ‡ต๐Ÿ‡ธ๐Ÿ‡ต๐Ÿ‡น๐Ÿ‡ต๐Ÿ‡ผ๐Ÿ‡ต๐Ÿ‡พ๐Ÿ‡ถ๐Ÿ‡ฆ๐Ÿ‡ท๐Ÿ‡ช๐Ÿ‡ท๐Ÿ‡ด๐Ÿ‡ท๐Ÿ‡ธ๐Ÿ‡ท๐Ÿ‡บ๐Ÿ‡ท๐Ÿ‡ผ๐Ÿ‡ธ๐Ÿ‡ฆ๐Ÿ‡ธ๐Ÿ‡ง๐Ÿ‡ธ๐Ÿ‡จ๐Ÿ‡ธ๐Ÿ‡ฉ๐Ÿ‡ธ๐Ÿ‡ช๐Ÿ‡ธ๐Ÿ‡ฌ๐Ÿ‡ธ๐Ÿ‡ญ๐Ÿ‡ธ๐Ÿ‡ฎ๐Ÿ‡ธ๐Ÿ‡ฐ๐Ÿ‡ธ๐Ÿ‡ฑ๐Ÿ‡ธ๐Ÿ‡ฒ๐Ÿ‡ธ๐Ÿ‡ณ๐Ÿ‡ธ๐Ÿ‡ด๐Ÿ‡ธ๐Ÿ‡ท๐Ÿ‡ธ๐Ÿ‡ธ๐Ÿ‡ธ๐Ÿ‡น๐Ÿ‡ธ๐Ÿ‡ป๐Ÿ‡ธ๐Ÿ‡ฝ๐Ÿ‡ธ๐Ÿ‡พ๐Ÿ‡ธ๐Ÿ‡ฟ๐Ÿ‡น๐Ÿ‡ฆ๐Ÿ‡น๐Ÿ‡จ๐Ÿ‡น๐Ÿ‡ฉ๐Ÿ‡น๐Ÿ‡ซ๐Ÿ‡น๐Ÿ‡ฌ๐Ÿ‡น๐Ÿ‡ญ๐Ÿ‡น๐Ÿ‡ฏ๐Ÿ‡น๐Ÿ‡ฐ๐Ÿ‡น๐Ÿ‡ฑ๐Ÿ‡น๐Ÿ‡ฒ๐Ÿ‡น๐Ÿ‡ณ๐Ÿ‡น๐Ÿ‡ด๐Ÿ‡น๐Ÿ‡ท๐Ÿ‡น๐Ÿ‡น๐Ÿ‡น๐Ÿ‡ป๐Ÿ‡น๐Ÿ‡ผ๐Ÿ‡น๐Ÿ‡ฟ๐Ÿ‡บ๐Ÿ‡ฆ๐Ÿ‡บ๐Ÿ‡ฌ๐Ÿ‡บ๐Ÿ‡ณ๐Ÿ‡บ๐Ÿ‡ธ๐Ÿ‡บ๐Ÿ‡พ๐Ÿ‡บ๐Ÿ‡ฟ๐Ÿ‡ป๐Ÿ‡ฆ๐Ÿ‡ป๐Ÿ‡จ๐Ÿ‡ป๐Ÿ‡ช๐Ÿ‡ป๐Ÿ‡ฌ๐Ÿ‡ป๐Ÿ‡ฎ๐Ÿ‡ป๐Ÿ‡ณ๐Ÿ‡ป๐Ÿ‡บ๐Ÿ‡ผ๐Ÿ‡ซ๐Ÿ‡ผ๐Ÿ‡ธ๐Ÿ‡ฝ๐Ÿ‡ฐ๐Ÿ‡พ๐Ÿ‡ช๐Ÿ‡พ๐Ÿ‡น๐Ÿ‡ฟ๐Ÿ‡ฆ๐Ÿ‡ฟ๐Ÿ‡ฒ๐Ÿ‡ฟ๐Ÿ‡ผ8<br/><br/><br/><br/>Sent from my Samsung Galaxy smartphone.</align>"; int font_size = 50; int counter = 0; void _button_clicked(void *data, Evas_Object *obj, void *event_info) { APP *app = data; font_size += 10; Evas_Textblock_Style *style = evas_textblock_style_new(); char buffer[100] = {0}; sprintf(buffer, "DEFAULT='font=NotoColorEmoji font_size=%i color=red ellipsis=-1.0 wrap=mixed'", font_size); evas_textblock_style_set(style, buffer); evas_object_textblock_style_set(app->tb1, style); evas_textblock_style_free(style); style = NULL; } EAPI_MAIN int elm_main(int argc EINA_UNUSED, char **argv EINA_UNUSED) { APP *app = calloc(1, sizeof(APP)); Evas_Object *win, *scroller1, *scroller2, *box; elm_policy_set(ELM_POLICY_QUIT, ELM_POLICY_QUIT_LAST_WINDOW_CLOSED); win = elm_win_util_standard_add("", ""); elm_win_autodel_set(win, EINA_TRUE); box = elm_box_add(win); evas_object_size_hint_weight_set(box, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); evas_object_size_hint_align_set(box, EVAS_HINT_FILL, EVAS_HINT_FILL); scroller1 = elm_scroller_add(win); evas_object_size_hint_weight_set(scroller1, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); evas_object_size_hint_align_set(scroller1, EVAS_HINT_FILL, EVAS_HINT_FILL); app->tb1 = evas_object_textblock_add(win); Evas_Textblock_Style *style = evas_textblock_style_new(); char buffer[100] = {0}; sprintf(buffer, "DEFAULT='font=NotoColorEmoji font_size=%i color=red ellipsis=-1.0 wrap=mixed'", font_size); evas_textblock_style_set(style, buffer); evas_object_textblock_style_set(app->tb1, style); evas_textblock_style_free(style); style = NULL; evas_font_cache_set(evas_object_evas_get(app->tb1), 0); int w,h; evas_object_textblock_text_markup_set(app->tb1, ""); evas_object_size_hint_min_set(app->tb1, 400, 400); elm_object_content_set(scroller1, app->tb1); elm_box_pack_end(box, scroller1); elm_object_content_set(win, box); app->btnLoad = elm_button_add(win); elm_object_text_set(app->btnLoad, "Scale Font"); evas_object_smart_callback_add(app->btnLoad, "clicked", _button_clicked, app); evas_object_show(app->btnLoad); evas_object_move(app->btnLoad, 0, 20); evas_object_resize(app->btnLoad, 150, 20); evas_object_textblock_text_markup_set(app->tb1, text); evas_object_textblock_size_formatted_get(app->tb1, &w, &h); evas_object_size_hint_min_set(app->tb1, 400, w/400 + h + 150); evas_object_resize(win, 400, 400); evas_object_show(box); evas_object_show(scroller1); evas_object_show(scroller2); evas_object_show(win); elm_run(); return 0; } ELM_MAIN() ``` Reviewers: raster, woohyun, bowonryu, bu5hm4n, zmike, segfaultxavi Subscribers: cedric, #reviewers, #committers Tags: #efl Maniphest Tasks: T8727 Differential Revision: https://phab.enlightenment.org/D11861
* docs: Correct the wrong group name in Edje and ElementaryMyoungwoon Roy, Kim2020-07-0632-583/+659
| | | | | | | I had found wrong group name in edje and box, ctxpopup, entry, gengrid, genlist, gesture and fixed them. Reviewed-by: Stefan Schmidt <stefan@datenfreihafen.org> Differential Revision: https://phab.enlightenment.org/D12036
* windows: Fix path for file sanitizationWander Lairson Costa2020-07-062-1/+8
| | | | | | | | | | | | | | | ``` > c:\ > cd /windows ``` Are valid paths. Paths starting with '\' or '/' should be considered absolute paths. Reviewed-by: Vincent Torri <vincent.torri@gmail.com> Reviewed-by: Joรฃo Paulo Taylor Ienczak Zanette <joao.tiz@expertisesolutions.com.br> Reviewed-by: Stefan Schmidt <stefan@datenfreihafen.org> Differential Revision: https://phab.enlightenment.org/D12022
* Fix typos - (Part #3)Elyes HAOUAS2020-07-0612-21/+21
| | | | | | | Fix some typos Reviewed-by: Stefan Schmidt <stefan@datenfreihafen.org> Differential Revision: https://phab.enlightenment.org/D12017
* Fix typos - (Part #2)Elyes HAOUAS2020-07-0627-42/+42
| | | | | | | Fix some typos Reviewed-by: Stefan Schmidt <stefan@datenfreihafen.org> Differential Revision: https://phab.enlightenment.org/D12016
* Protect EINA_(UN)LIKELY with parenthesis around the exprWander Lairson Costa2020-07-031-8/+8
| | | | | | | | | Without it an expression like !EINA_LIKELY(a && b) expands !a && b Reviewed-by: Cedric BAIL <cedric.bail@free.fr> Reviewed-by: Vincent Torri <vincent.torri@gmail.com> Differential Revision: https://phab.enlightenment.org/D12041
* evas_common_privat: improve tiler merge flagMarcel Hollerbach2020-07-011-1/+1
| | | | | | | | | when this is a int and you assign 0, the whole "0" for the entire int is moved. When this is a bit flag like this, it is a simple | operation, which makes the whole thing somehow faster. Reviewed-by: Christopher Michael <devilhorns@comcast.net> Differential Revision: https://phab.enlightenment.org/D11998
* Meson.build cleanup.Joรฃo Paulo Taylor Ienczak Zanette2020-07-011-151/+154
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Summary: This is a 8 commit patch, but only for a while - after agreeing with each of the changes, it shall be squashed into a single commit. I want to make further changes on meson.build (maybe I can end up simplifying the build system, or just let things more organized in the end) and thought that starting with a cleanup would be a good first step. The changes are: 1. build: set arguments scope to project instead of globally If we set arguments globally, it may conflict with other builds - specially considering [meson's subprojects feature](https://mesonbuild.com/Subprojects.html). Setting to project arguments ensures we are only considering EFL and not leaking unwanted flags. 2. build: Fix spacing and indent Mostly because it is not well standardized during the file - sometimes there's spaces between tokens, sometimes there is not, etc. The same applies to indent. 3. build: move test environment closer to test commands Just as a matter of organization. If we're doing things for tests that don't impact other stuff, then leave it when tests are handled. 4. build: Remove unnecessary parenthesis and == true comparisons Less noisy redundancy: `true` is already true, and `false` is already false, no need to re-check. Besides, reading `if sys_windows` and `if sys_windows == true` shouldn't have different effects, as the first you can read as "if the system is windows". It gets better when you have `not` instead of `== false`, so for an example you could read `if not sys_windows` as "if it is not a windows system" more naturally. 5. build: Switch pc_files to dict Just thought it could stay a little better (since it works as a dict), specially in the `foreach` right after. 6. **[removed to a future patch]** build: Use meson's warning_level instead of hardcoded -Wall This way we ensure this is compiler-independant (and use the correct feature for that, since meson even warns when configuring the build dir). 7. build: Use language args from add_project_arguments properly instead of a loop The `language:` kwarg from `add_{project,global}_arguments` receives a list of languages, so no need for that loop. 8. **[removed to a future patch]** build: Use '/' instead of join_paths As it [is recommended by meson since v0.49](https://mesonbuild.com/Release-notes-for-0-49-0.html#joining-paths-with-) (and stays clearer IMO, specially since that's how some languages are adopting path separation, e.g. C++'s filesystem stdlib). Reviewers: bu5hm4n Subscribers: vtorri, cedric, #reviewers, #committers Tags: #efl Differential Revision: https://phab.enlightenment.org/D11994
* elc_naviframe: fix to show pushed item if top item is deletedJaehyun Cho2020-07-011-0/+7
| | | | | | | | | If top item is deleted in "transition,finished" smart callback by user before _on_item_push_finished is not finished, then pushed item is hidden in _on_item_push_finished and no item is visible. To resolve the above issue, _on_item_push_finished does not hide pushed item if pushed item becomes top item.
* ecore-evas-wayland: Fix minor typo in error messageChristopher Michael2020-06-291-1/+1
|
* elementary : fix key unselect unhighlighting issueSangHyeon Jade Lee2020-06-291-1/+5
| | | | | | | | | | | | | | | | | | Summary: in multiselect mode, selected item is not unhighlighted by key unselect. Test Plan: tested in elementary_test gengrid Reviewers: eagleeye Reviewed By: eagleeye Subscribers: cedric, #reviewers, #committers Tags: #efl Differential Revision: https://phab.enlightenment.org/D12035
* ecore evas wl - cnp - dont segv is data is nullCarsten Haitzler (Rasterman)2020-06-281-0/+5
| | | | | this is probably wrong but crashing is not nice... bettr to NOP than crash right now.
* Native Windows: Eina: Resolve bad comparison while using windows strerror_sLucas Cavalcante de Sousa2020-06-261-1/+7
| | | | | | | | | | | | | | | | | | | `strerror_s` is the windows alternative of `strerror_r` used by EFL. `strerror_s` never return the error code with the message as `strerror_r` does, because of that, while comparing the first 14 characters of `Unknown error ` to the message from unknown code 4096 (`Unknown error`) they were accusing being different - in UNIX this works because the message returned is `Unknown error 4096`. This error was noticeable at `eina_error_test_failures` test case. This Diff adds the error code to the message in case of an `Unknown error`, making the windows implementation compliant with UNIX. Reviewed-by: Vincent Torri <vincent.torri@gmail.com> Reviewed-by: Wander Lairson Costa <wander.lairson@gmail.com> Reviewed-by: Stefan Schmidt <stefan@datenfreihafen.org> Differential Revision: https://phab.enlightenment.org/D12033
* Windows: fix eina_file_map_new()Vincent Torri2020-06-262-22/+47
| | | | | | | | | | the offset passed to MapViewOfFile() must be a multiple of the granularity. https://docs.microsoft.com/en-us/windows/win32/memory/creating-a-view-within-a-file is taken as basis for this patch Reviewed-by: Stefan Schmidt <stefan@datenfreihafen.org> Reviewed-by: Wander Lairson Costa <wander.lairson@gmail.com> Differential Revision: https://phab.enlightenment.org/D12031
* Fix eina file thread test on WindowsWander Lairson Costa2020-06-261-1/+23
| | | | | | | | | | | | On windows, we try to open the "cmd.exe" file, but without the full path the test fails unless it runs from the system directory. We now use the full path to test the eina_file_open function. Reviewed-by: Stefan Schmidt <stefan@datenfreihafen.org> Reviewed-by: Vincent Torri <vincent.torri@gmail.com> Reviewed-by: Joรฃo Paulo Taylor Ienczak Zanette <joao.tiz@expertisesolutions.com.br> Differential Revision: https://phab.enlightenment.org/D12021
* gengrid: Fix memory leakSubhransu Mohanty2020-06-251-1/+1
| | | | | | | | | | | | Reviewers: SanghyeonLee Reviewed By: SanghyeonLee Subscribers: cedric, #reviewers, #committers Tags: #efl Differential Revision: https://phab.enlightenment.org/D11930
* docs: Fix typo in elm_config API referenceMyoungwoon Roy, Kim2020-06-251-2/+2
| | | | | | | I had found a typo in elm_config_scroll_animation_disabled_set() and fixed it Reviewed-by: Stefan Schmidt <stefan@datenfreihafen.org> Differential Revision: https://phab.enlightenment.org/D12029
* eina_array: micro optimize eina_array_pushMarcel Hollerbach2020-06-251-7/+4
| | | | | | | | | | | | | | | | | | | | | | | | This commit does two things: - Tell the compiler that it is unlikely that we need to grow, and that it is unlikely that data is NULL. Sometimes the if check for data would get dropped out by the compiler when it can be ensured that it is != NULL. However, if we for example efl_add something and eina_push the result, the condition would not be removed, as there is no assertion efl_add would be != NULL. - Do not hide the array assignment in a branch, but make it the default branch, this way instruction cache caches the correct instruction, as branch prediction will now hopefully, due to the hinting, take the correct branch. While benchmarking this here (simply in elementary_perf), this reduced pipeline faults in eina_array_push quite a bit. (Btw. it is hard to track *which* exact calls to eina_array_push do cause that, as mostly this API gets inlined, so it was easier optimizing that, instead of the method arround) Reviewed-by: Stefan Schmidt <stefan@datenfreihafen.org> Differential Revision: https://phab.enlightenment.org/D11997
* Fix typos - (Part #5)Elyes HAOUAS2020-06-259-14/+14
| | | | | | | Fix some typos Reviewed-by: Stefan Schmidt <stefan@datenfreihafen.org> Differential Revision: https://phab.enlightenment.org/D12019
* Fix typosElyes HAOUAS2020-06-2520-26/+26
| | | | | | | Fix some typos Reviewed-by: Stefan Schmidt <stefan@datenfreihafen.org> Differential Revision: https://phab.enlightenment.org/D12015
* Revert "Efl.Gfx.Path: Change draw of a rounded rect from arc to quadratic"JunsuChoi2020-06-251-9/+7
| | | | | | | | | | | | | | | | | | | Summary: This reverts commit 4f15bde706ec8cd78fa57845c8eee7bdb5515282. It is the correct way to draw with arc_to. And breaking compatibility for current_get. Test Plan: N/A Reviewers: Hermet, kimcinoo, herb Reviewed By: Hermet Subscribers: cedric, #reviewers, #committers Tags: #efl Differential Revision: https://phab.enlightenment.org/D12030
* efl_check.h: Replace stack allocated array by heap allocatedJoao Antonio Cardoso2020-06-231-1/+1
| | | | | | | | | | | | clang-cl doesn't support the syntax of dynamic stack allocated arrays. ref: windows-native-port Co-authored-by: Lucas <Coquinho@users.noreply.github.com> Reviewed-by: Felipe Magno de Almeida <felipe@expertisesolutions.com.br> Reviewed-by: Stefan Schmidt <stefan@datenfreihafen.org> Differential Revision: https://phab.enlightenment.org/D11970
* ecore-x vysnc - env var - fix typoCarsten Haitzler (Rasterman)2020-06-231-1/+1
|