Taehyub Kim [Fri, 17 Jul 2020 01:08:41 +0000 (10:08 +0900)]
efl_ui_image: remove the unnecessary code in efl_file_unload
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
Change-Id: I29415b8e95ed7be0bb5e3bc8a3f185ed0e69077a
Carsten Haitzler (Rasterman) [Thu, 16 Jul 2020 20:00:36 +0000 (21:00 +0100)]
edje example - dont leak text
Woochanlee [Thu, 16 Jul 2020 10:37:10 +0000 (11:37 +0100)]
edje: Avoid string duplication when possible.
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
Ali Alzyod [Thu, 16 Jul 2020 08:58:45 +0000 (09:58 +0100)]
edje_cc : resolve build warning
Reviewers: raster
Reviewed By: raster
Subscribers: cedric, #reviewers, #committers
Tags: #efl
Differential Revision: https://phab.enlightenment.org/D12054
Stefan Schmidt [Thu, 16 Jul 2020 08:59:22 +0000 (10:59 +0200)]
elm: tests: fix typo in test name
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.
Stefan Schmidt [Thu, 16 Jul 2020 08:04:49 +0000 (10:04 +0200)]
ci: travis: force meson version 0.54.3 as install for codecov
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.
Changyeon Lee [Tue, 7 Jul 2020 09:36:18 +0000 (18:36 +0900)]
ecore_wl2: support tizen_renderer protocol
Some target can display only specific buffer at hardware layer.
enlightenment sends buffer to render engine (egl or software engine)
of client when enlightenment wants to display at hardware layer and
enlightenment wait that client attach buffer by render engine.
but if client doesn't have change of rendering after buffer is sent,
render engine doesn't render at buffer.
tizen_renderer protocol and redraw_request event were added.
enlightenment sends redraw_request event after buffer is sent and
wants client redraws at wl_surface.
1. add event ECORE_WL2_EVENT_WINDOW_REDRAW_REQUEST and
Ecore_Wl2_Event_Window_Redraw_Request
2. add damage to ecore_evas in callback of redraw request
Change-Id: I951b458c10d8163cc37583ededcabd4cd807531e
Jongmin Lee [Wed, 15 Jul 2020 22:29:45 +0000 (07:29 +0900)]
spec: disable avif evas image loader
Change-Id: I8d0450b3cd3a9c3a4dd1539ec03202c9f8ede4c2
Daniel Kolesa [Wed, 15 Jul 2020 18:07:46 +0000 (20:07 +0200)]
meson: allow empty values in disabler/bindings array
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.
Carsten Haitzler (Rasterman) [Wed, 15 Jul 2020 18:16:57 +0000 (19:16 +0100)]
Revert "Revert "ci: travis: make sure we disable avif loader by default in our jobs""
This reverts commit
42e3411ed7dacc652bd1c64d94941d7ac6aa67c4.
Vincent Torri [Wed, 15 Jul 2020 17:51:27 +0000 (18:51 +0100)]
Evas: add avif evas loader and saver
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
Carsten Haitzler (Rasterman) [Wed, 15 Jul 2020 11:22:22 +0000 (12:22 +0100)]
edje - fix edje_cc mis-re-iding images in image sets
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
Shinwoo Kim [Fri, 19 Jun 2020 07:30:41 +0000 (16:30 +0900)]
filter: make grayscale, inverse_color faster (GL)
This commit for grayscale, inverse_color filter used by enlightenment.
The fps is decreased with those filters because filter is using off-
screen buffer and copying data between buffers. This commit makes
filter do not use off-screen buffer. Finally the fps is almost same
between ON and OFF filter.
*tizen_only
Change-Id: Ia7ba742d4d8a893fe4908e17895c388cfa3fc286
Stefan Schmidt [Tue, 14 Jul 2020 13:56:54 +0000 (15:56 +0200)]
Revert "ci: travis: make sure we disable avif loader by default in our jobs"
This reverts commit
44a018d37ffdf03627fc5d45aa249c2237bf5dac.
With the libavif module patch reverted this also needs to go, until its
back.
Alastair Poole [Tue, 14 Jul 2020 11:11:48 +0000 (12:11 +0100)]
elm_code: cursor visbility fix.
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
Alastair Poole [Tue, 14 Jul 2020 10:11:16 +0000 (11:11 +0100)]
elm_code: on newline ensure line number visible.
@fix T2798
Carsten Haitzler (Rasterman) [Tue, 14 Jul 2020 09:54:57 +0000 (10:54 +0100)]
Revert "Evas: add avif evas loader"
This reverts commit
dd23a6c84aee249aa5316b48af6956072233bb97.
i didn't mean to push this yet...
Stefan Schmidt [Tue, 14 Jul 2020 09:38:55 +0000 (11:38 +0200)]
ci: travis: make sure we disable avif loader by default in our jobs
This has been newly added (disabled by default) but we need to take care
of it in our manually disabled loaders in specific builds.
Myoungwoon Roy, Kim [Tue, 14 Jul 2020 08:48:04 +0000 (09:48 +0100)]
docs: Correct the wrong API group name and typo in Evas, Eet, Eina, Eio and 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
Vincent Torri [Sat, 11 Jul 2020 10:34:01 +0000 (11:34 +0100)]
Evas: add avif evas loader
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
Alastair Poole [Mon, 13 Jul 2020 12:21:35 +0000 (13:21 +0100)]
tests: remove popup test.
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.
Myoungwoon Roy, Kim [Fri, 10 Jul 2020 00:27:35 +0000 (09:27 +0900)]
docs: Correct the wrong group name in access, mapbuf, object, popup and win
Change-Id: I70e6baa59453f97c439a1f80f5743c441cfb5f61
Jaehyun Cho [Mon, 6 Jul 2020 04:42:11 +0000 (13:42 +0900)]
efl_ui_image: fix hit_rect geometry only if scale type is expand
In the past version, "clicked" event happens although image file is not
set and resizable is false and scale type is expand.
To keep the backward compatibility of supporting "clicked" event,
hit_rect geometry is set to be the same with object geometry if image
file is not set and scale type is expand.
The above logic is not applied to upstream.
Because size calculation logic between upstream and tizen is different
so _image_sizing_eval() is not called in upstream if image file is not
set.
@tizen_fix
Change-Id: I39e094702d631e2c3150ae7a9b4d8e314468fa5d
Myoungwoon Roy, Kim [Thu, 9 Jul 2020 09:24:09 +0000 (10:24 +0100)]
docs: Correct the wrong API group name in Elementary and Change an invalid 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
Alastair Poole [Tue, 7 Jul 2020 14:53:50 +0000 (15:53 +0100)]
ibox: Preview Theme Code
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
Carsten Haitzler (Rasterman) [Tue, 7 Jul 2020 11:43:39 +0000 (12:43 +0100)]
Revert "edje: Avoid string duplication when possible."
This reverts commit
704d58d658ed4424a886c127f3bbe83afde1f2a1.
gee. it looked innocent enough... it broke tests and everything in e
Woochanlee [Tue, 7 Jul 2020 10:20:53 +0000 (11:20 +0100)]
edje: Avoid string duplication when possible.
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
Ali Alzyod [Mon, 6 Jul 2020 11:43:40 +0000 (12:43 +0100)]
evas_text: lazy loading color glyph images in RAM
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:
```
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
Change-Id: I602e18fc2918af94dd92636fdc718e473fe72ec6
Stefan Schmidt [Wed, 17 Jun 2020 11:21:24 +0000 (13:21 +0200)]
benchmark: eina: remove outdated ecore_hash
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
Wander Lairson Costa [Tue, 23 Jun 2020 15:21:10 +0000 (15:21 +0000)]
windows: Fix path for file sanitization
```
> 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
Elyes HAOUAS [Mon, 22 Jun 2020 18:21:01 +0000 (18:21 +0000)]
Fix typos - (Part #3)
Fix some typos
Reviewed-by: Stefan Schmidt <stefan@datenfreihafen.org>
Differential Revision: https://phab.enlightenment.org/D12017
Elyes HAOUAS [Fri, 26 Jun 2020 09:01:32 +0000 (09:01 +0000)]
Fix typos - (Part #2)
Fix some typos
Reviewed-by: Stefan Schmidt <stefan@datenfreihafen.org>
Differential Revision: https://phab.enlightenment.org/D12016
Jaehyun Cho [Mon, 6 Jul 2020 04:42:11 +0000 (13:42 +0900)]
efl_ui_image: fix hit_rect geometry
In the past version, "clicked" event happens although image file is not
set and resizable is false and scale type is expand.
To keep the backward compatibility of supporting "clicked" event,
hit_rect geometry is set to be the same with object geometry if image
file is not set.
In the past version, hit_rect geometry is not the same with object if
image file is not set and resizable is false and scale type is not
expand.
e.g. In the past version, if object size is (360, 80), then hit_rect
size is set to be (360, 360).
To fix the bug in the past version related to hit_rect, hit_rect
geometry is set to be the same with object geometry if image file is not
set regardless of resizable and scale type.
The above logic is not applied to upstream.
Because size calculation logic between upstream and tizen is different
so _image_sizing_eval() is not called in upstream if image file is not
set.
@tizen_fix
Change-Id: I5bfb1c973b9710b01594d2c1cfaa538dab02a2c2
Jaehyun Cho [Mon, 6 Jul 2020 04:42:11 +0000 (13:42 +0900)]
efl_ui_image: fix hit_rect geometry only if scale type is expand
In the past version, "clicked" event happens although image file is not
set and resizable is false and scale type is expand.
To keep the backward compatibility of supporting "clicked" event,
hit_rect geometry is set to be the same with object geometry if image
file is not set and scale type is expand.
The above logic is not applied to upstream.
Because size calculation logic between upstream and tizen is different
so _image_sizing_eval() is not called in upstream if image file is not
set.
@tizen_fix
Change-Id: I39e094702d631e2c3150ae7a9b4d8e314468fa5d
Wander Lairson Costa [Fri, 3 Jul 2020 14:06:03 +0000 (14:06 +0000)]
Protect EINA_(UN)LIKELY with parenthesis around the expr
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
Myoungwoon Roy, Kim [Wed, 1 Jul 2020 00:07:41 +0000 (09:07 +0900)]
efl_ui_widget: Add exception handling for calloc
Change-Id: I5c897e3a98fe73289e6eb4adc08462c8c6eeab66
Jeonghyun Yun [Tue, 23 Jun 2020 05:59:12 +0000 (14:59 +0900)]
efl_ui_widget: add color class update when the style is updated
Change-Id: Iad6fe717a927f78238538b6c554edc4cf356c253
Signed-off-by: Jeonghyun Yun <jh0506.yun@samsung.com>
Shinwoo Kim [Wed, 1 Jul 2020 11:38:10 +0000 (20:38 +0900)]
gl_tbm: unregister log domain correctly
This patch will solve a SIGABRT issue caused by following step.
1. module_open
2. module_close /* does not set log domain to -1 */
3. module_open /* does not register log domain
because it is not negative value */
4. module_close /* try to free not allocated memory */
Change-Id: Ifcb6b77481d433912b2527080bbb668f7ba7b1c8
Marcel Hollerbach [Wed, 10 Jun 2020 18:48:45 +0000 (20:48 +0200)]
evas_common_privat: improve tiler merge flag
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
João Paulo Taylor Ienczak Zanette [Wed, 1 Jul 2020 07:23:53 +0000 (09:23 +0200)]
Meson.build cleanup.
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
Myoungwoon Roy, Kim [Wed, 1 Jul 2020 01:31:20 +0000 (10:31 +0900)]
docs: Correct the wrong API group name in Elementary
Change-Id: If71e4f3318a725c22f5a48ce2c8d5a928117ff48
Jaehyun Cho [Wed, 1 Jul 2020 06:49:40 +0000 (15:49 +0900)]
elc_naviframe: fix to show pushed item if top item is deleted
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.
Change-Id: I8d7d31e681f52c66accb7ce2029232a35ee86025
Myoungwoon Roy, Kim [Mon, 29 Jun 2020 09:52:33 +0000 (18:52 +0900)]
docs: Correct the wrong API group name in Edje and Elm_Box
Change-Id: Iaa5c77f33425a172bf03d3553d81d29b2609892a
Christopher Michael [Mon, 29 Jun 2020 13:01:54 +0000 (09:01 -0400)]
ecore-evas-wayland: Fix minor typo in error message
Hosang Kim [Mon, 29 Jun 2020 06:01:15 +0000 (15:01 +0900)]
ecore_wl2_input: initializes code variable.
Change-Id: I99440ba38835c42829e8d50b736d0904c7d30adb
Carsten Haitzler (Rasterman) [Sun, 28 Jun 2020 21:52:17 +0000 (22:52 +0100)]
ecore evas wl - cnp - dont segv is data is null
this is probably wrong but crashing is not nice... bettr to NOP than
crash right now.
Lucas Cavalcante de Sousa [Fri, 26 Jun 2020 12:51:01 +0000 (12:51 +0000)]
Native Windows: Eina: Resolve bad comparison while using windows strerror_s
`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
Vincent Torri [Thu, 25 Jun 2020 14:44:15 +0000 (14:44 +0000)]
Windows: fix eina_file_map_new()
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
Wander Lairson Costa [Wed, 24 Jun 2020 13:32:12 +0000 (13:32 +0000)]
Fix eina file thread test on Windows
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
Marcel Hollerbach [Wed, 10 Jun 2020 18:48:37 +0000 (20:48 +0200)]
eina_array: micro optimize eina_array_push
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
Elyes HAOUAS [Sat, 20 Jun 2020 13:00:10 +0000 (13:00 +0000)]
Fix typos - (Part #5)
Fix some typos
Reviewed-by: Stefan Schmidt <stefan@datenfreihafen.org>
Differential Revision: https://phab.enlightenment.org/D12019
Elyes HAOUAS [Mon, 22 Jun 2020 18:24:38 +0000 (18:24 +0000)]
Fix typos
Fix some typos
Reviewed-by: Stefan Schmidt <stefan@datenfreihafen.org>
Differential Revision: https://phab.enlightenment.org/D12015
Myoungwoon Roy, Kim [Wed, 24 Jun 2020 05:40:20 +0000 (14:40 +0900)]
docs: Changes non public Tizen elementary APIs in API reference to internal
Change-Id: Ie6134546631a49acda3e52ee6ca7e2ceafaba17f
JunsuChoi [Thu, 25 Jun 2020 04:13:31 +0000 (13:13 +0900)]
Revert "Efl.Gfx.Path: Change draw of a rounded rect from arc to quadratic"
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
Change-Id: Ia0f38eedeba95646e52d360eadc690997fe33e7d
Hosang Kim [Tue, 23 Jun 2020 06:26:15 +0000 (15:26 +0900)]
doxygen: remove broken example images
Change-Id: I8d9c2ecf11c2e46c3cc21259164fddacc52e6610
(cherry picked from commit
8ca44052f8c2957a1a1ffef7c933972df33f82f7)
Joao Antonio Cardoso [Mon, 15 Jun 2020 12:27:46 +0000 (12:27 +0000)]
efl_check.h: Replace stack allocated array by heap allocated
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
Carsten Haitzler (Rasterman) [Tue, 23 Jun 2020 13:00:48 +0000 (14:00 +0100)]
ecore-x vysnc - env var - fix typo
Carsten Haitzler (Rasterman) [Mon, 22 Jun 2020 12:12:23 +0000 (13:12 +0100)]
ecore wl - make comment note about allocating buffers
Wander Lairson Costa [Fri, 12 Jun 2020 20:27:51 +0000 (20:27 +0000)]
eina_test_file.c: Do not test errno if the function doesn't fail
errno only holds a valid value if the function returns an error.
ref: windows-native-port
Reviewed-by: Stefan Schmidt <stefan@datenfreihafen.org>
Differential Revision: https://phab.enlightenment.org/D11971
Elyes HAOUAS [Sat, 20 Jun 2020 09:47:56 +0000 (09:47 +0000)]
Get rid of trailing whitespaces (14 / 14)
Remove trailing whitespaces
Differential Revision: https://phab.enlightenment.org/D12006
Elyes HAOUAS [Sat, 20 Jun 2020 09:54:26 +0000 (09:54 +0000)]
Get rid of trailing whitespaces (13 / 14)
Remove trailing whitespaces
Differential Revision: https://phab.enlightenment.org/D12012
Elyes HAOUAS [Sat, 20 Jun 2020 09:52:54 +0000 (09:52 +0000)]
Get rid of trailing whitespaces (12 / 14)
Remove trailing whitespaces
Differential Revision: https://phab.enlightenment.org/D12011
Elyes HAOUAS [Sat, 20 Jun 2020 09:51:50 +0000 (09:51 +0000)]
Get rid of trailing whitespaces (11 / 14)
Remove trailing whitespaces
Differential Revision: https://phab.enlightenment.org/D12010
Elyes HAOUAS [Sat, 20 Jun 2020 09:50:53 +0000 (09:50 +0000)]
Get rid of trailing whitespaces (10 / 14)
Remove trailing whitespaces
Differential Revision: https://phab.enlightenment.org/D12009
Elyes HAOUAS [Sat, 20 Jun 2020 09:50:00 +0000 (09:50 +0000)]
Get rid of trailing whitespaces (9 / 14)
Remove trailing whitespaces
Differential Revision: https://phab.enlightenment.org/D12008
Elyes HAOUAS [Sat, 20 Jun 2020 09:48:52 +0000 (09:48 +0000)]
Get rid of trailing whitespaces (8 / 14)
Remove trailing whitespaces
Differential Revision: https://phab.enlightenment.org/D12007
Elyes HAOUAS [Sat, 20 Jun 2020 09:47:04 +0000 (09:47 +0000)]
Get rid of trailing whitespaces (7 / 14)
Remove trailing whitespaces
Differential Revision: https://phab.enlightenment.org/D12005
Elyes HAOUAS [Sat, 20 Jun 2020 09:45:50 +0000 (09:45 +0000)]
Get rid of trailing whitespaces (6 / 14)
Remove whitespaces
Differential Revision: https://phab.enlightenment.org/D12004
Elyes HAOUAS [Sat, 20 Jun 2020 09:44:55 +0000 (09:44 +0000)]
Get rid of trailing whitespaces (5 / 14)
Remove trailing whitespaces
Differential Revision: https://phab.enlightenment.org/D12003
Elyes HAOUAS [Sat, 20 Jun 2020 09:43:56 +0000 (09:43 +0000)]
Get rid of trailing whitespaces (4 / 14)
Remove trailing whitespaces
Differential Revision: https://phab.enlightenment.org/D12002
Elyes HAOUAS [Sat, 20 Jun 2020 09:42:50 +0000 (09:42 +0000)]
Get rid of trailing whitespaces (3 / 14)
Remove trailing whitespaces
Differential Revision: https://phab.enlightenment.org/D12001
Elyes HAOUAS [Sat, 20 Jun 2020 09:41:45 +0000 (09:41 +0000)]
Get rid of trailing whitespaces (2 / 14)
Remove trailing whitespaces
Differential Revision: https://phab.enlightenment.org/D12000
Elyes HAOUAS [Sat, 20 Jun 2020 09:40:20 +0000 (09:40 +0000)]
Get rid of trailing whitespace (1 / 14)
Remove trailing whitespace
Differential Revision: https://phab.enlightenment.org/D11999
JunsuChoi [Tue, 23 Jun 2020 04:46:43 +0000 (13:46 +0900)]
Efl.Gfx.Path: Change draw of a rounded rect from arc to quadratic
Summary:
The rounded rect is a very slightly different shape compared
to chrome's svg output. To solve this, modify to use a quadratic bezier
instead of arc when drawing a round.
Test Plan:
{
F3904500}
(Drawing rect with arc or quadratic)
Compare Image
{
F3904501}
{
F3904502}
Reviewers: Hermet, kimcinoo, herb
Reviewed By: Hermet
Subscribers: cedric, #reviewers, #committers
Tags: #efl
Differential Revision: https://phab.enlightenment.org/D12020
Ali Alzyod [Mon, 22 Jun 2020 08:31:54 +0000 (17:31 +0900)]
eina_strbuf: introduce change last occurrence function
Reviewers: cedric, woohyun, bowonryu
Reviewed By: cedric
Subscribers: cedric, #reviewers, #committers
Tags: #efl
Maniphest Tasks: T8757
Differential Revision: https://phab.enlightenment.org/D11990
Ali Alzyod [Mon, 22 Jun 2020 08:27:42 +0000 (17:27 +0900)]
elementary_test: remove leaked style
Summary: remove created style after being set in textblock
Reviewers: woohyun, smohanty
Subscribers: cedric, #reviewers, #committers
Tags: #efl
Maniphest Tasks: T8742
Differential Revision: https://phab.enlightenment.org/D11944
Ali Alzyod [Mon, 22 Jun 2020 08:16:34 +0000 (17:16 +0900)]
eina_strbuf: if readonly strbuf is malloc, then it will stop being readonly
Reviewers: cedric
Reviewed By: cedric
Subscribers: cedric, #reviewers, #committers
Tags: #efl
Maniphest Tasks: T8757
Differential Revision: https://phab.enlightenment.org/D11992
Ali Alzyod [Mon, 22 Jun 2020 08:16:02 +0000 (17:16 +0900)]
eina_strbuf_manage_new: update documentation
Reviewers: cedric
Reviewed By: cedric
Subscribers: cedric, #reviewers, #committers
Tags: #efl
Maniphest Tasks: T8757
Differential Revision: https://phab.enlightenment.org/D11991
AbdullehGhujeh [Mon, 22 Jun 2020 08:02:05 +0000 (17:02 +0900)]
evas textblock : update font source when it set using font_source_set
Summary:
when we set font source, for example with efl_text_font_source_set, the font source will not be updated in the textblock.
this is have same results that has been done in D9548
Test Plan:
#define EFL_EO_API_SUPPORT 1
#define EFL_BETA_API_SUPPORT 1
#include <Efl_Ui.h>
static void
_gui_quit_cb(void *data EINA_UNUSED, const Efl_Event *event EINA_UNUSED)
{
efl_exit(0);
}
static Eo *
_create_label(Eo *win, Eo *bx)
{
Eo *en;
en = efl_add(EFL_UI_TEXTBOX_CLASS, win);
printf("Added Efl.Ui.Text object\n");
efl_text_interactive_editable_set(en, EINA_FALSE);
efl_pack(bx, en);
return en;
}
static void
_gui_setup()
{
char buf[512], f_buf[512];
Eo *win, *bx;
win = efl_add(EFL_UI_WIN_CLASS, efl_main_loop_get(),
efl_ui_win_type_set(efl_added, EFL_UI_WIN_TYPE_BASIC),
efl_text_set(efl_added, "Hello World"),
efl_ui_win_autodel_set(efl_added, EINA_TRUE));
// when the user clicks "close" on a window there is a request to delete
efl_event_callback_add(win, EFL_UI_WIN_EVENT_DELETE_REQUEST, _gui_quit_cb, NULL);
bx = efl_add(EFL_UI_BOX_CLASS, win,
efl_content_set(win, efl_added),
efl_gfx_hint_size_min_set(efl_added, EINA_SIZE2D(360, 240)));
snprintf(buf, sizeof(buf), "./TestFontSource.eet");
Eo *en = _create_label(win, bx);
efl_text_set(en, "Hello, This Text Use The Font : Does_Not_Exists_Font_1 : Source + Font Name");
efl_text_font_source_set(en, buf);
efl_text_font_family_set(en, "Does_Not_Exists_Font_1");
efl_text_font_size_set(en, 35);
en = _create_label(win, bx);
efl_text_set(en, "Hello, This Text Use The Font : Does_Not_Exists_Font_1 : Font Name");
efl_text_font_family_set(en, "Does_Not_Exists_Font_1");
efl_text_font_size_set(en, 35);
en = _create_label(win, bx);
efl_text_set(en, "Hello, This Text Use The Font : Does_Not_Exists_Font_2 : Source + Font Name");
efl_text_font_source_set(en, buf);
efl_text_font_family_set(en, "Does_Not_Exists_Font_2");
efl_text_font_size_set(en, 35);
en = _create_label(win, bx);
efl_text_set(en, "Hello, This Text Use The Font : Does_Not_Exists_Font_2 : Font Name");
efl_text_font_family_set(en, "Does_Not_Exists_Font_2");
efl_text_font_size_set(en, 35);
}
EAPI_MAIN void
efl_main(void *data EINA_UNUSED, const Efl_Event *ev EINA_UNUSED)
{
_gui_setup();
}
EFL_MAIN()
Reviewers: ali.alzyod, woohyun, bowonryu, cedric
Reviewed By: ali.alzyod
Subscribers: cedric, #reviewers, #committers
Tags: #efl
Differential Revision: https://phab.enlightenment.org/D11757
Ali Alzyod [Mon, 22 Jun 2020 07:54:51 +0000 (16:54 +0900)]
eina_strbuf: resolve segfault when replace used with read_only buffer
Summary: when eina_strbuf_replace is used by read_only buffer, this will cause segfault (access invalid memory)
Reviewers: cedric
Reviewed By: cedric
Subscribers: cedric, #reviewers, #committers
Tags: #efl
Maniphest Tasks: T8757
Differential Revision: https://phab.enlightenment.org/D11989
AbdullehGhujeh [Mon, 22 Jun 2020 07:31:53 +0000 (16:31 +0900)]
Textblock : Fix cursor cluster movement when emoji at the line start
Summary:
if we have emoji only or emoji at line start we can move cursor using mouse click to be inside the emoji.
{
F3868502}
this should fix T8664
Test Plan:
#include <Elementary.h>
EAPI_MAIN int
elm_main(int argc EINA_UNUSED, char **argv EINA_UNUSED)
{
Evas_Object *win;
elm_policy_set(ELM_POLICY_QUIT, ELM_POLICY_QUIT_LAST_WINDOW_CLOSED);
win = elm_win_util_standard_add("emoji-test", "emoji-test");
elm_win_autodel_set(win, EINA_TRUE);
/* and now just resize the window to a size you want. normally widgets
* will determine the initial size though */
evas_object_resize(win, 320, 320);
Evas_Object *box;
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);
elm_win_resize_object_add(win, box);
Evas_Object *entry;
entry = elm_entry_add(box);
elm_entry_entry_set(entry, "☪️");
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_box_pack_end(box, entry);
evas_object_show(entry);
evas_object_show(box);
/* and show the window */
evas_object_show(win);
elm_run(); /* and run the program now, starting to handle all
* events, etc. */
/* exit code */
return 0;
}
ELM_MAIN()
Reviewers: ali.alzyod, woohyun, bowonryu, zmike, bu5hm4n
Reviewed By: ali.alzyod
Subscribers: cedric, #reviewers, #committers
Tags: #efl
Maniphest Tasks: T8664
Differential Revision: https://phab.enlightenment.org/D11732
Myoungwoon Roy, Kim [Tue, 23 Jun 2020 08:29:35 +0000 (17:29 +0900)]
docs: Changes non public Tizen APIs in API reference to internal
Change-Id: I579e1af8a8006391bdb51fc63873ddb794cd7792
Shinwoo Kim [Tue, 23 Jun 2020 07:31:09 +0000 (16:31 +0900)]
ecore_wl2: update documentation
This patch is following doxygen rule.
*tizen_fix
Change-Id: I4d638465af923cad13de4d8110f286380c0efc51
Shinwoo Kim [Fri, 5 Jun 2020 02:48:59 +0000 (11:48 +0900)]
ecore_wl2: sync between UI and video
There is a requirement to sync of geometry changes such as move
and resize between UI and video. EFL could not take care of the
video geometry becasue it is handled by separated process.
This patch makes it possible by using a subsurface.
The video process will use the subsurface and surface commits
on this subsurface will be cached and only applied when the
parent surface's state is applied. In this case the parent
surface is working for UI.
*tizen_only
Change-Id: I287cb7bf7858ea5e3efc7f2bd32ce6279896586f
Shinwoo Kim [Fri, 19 Jun 2020 07:07:06 +0000 (16:07 +0900)]
elm_scroller: use region of proxy soruce for loop
Summary:
If size of elm_sclloer content is too big, then the proxy of
elm_scroller to show loop effect does not work. Because
evas_gl_common_image_surface_new does not allow
bigger size surface than max_texture_size.
Reviewers: Hermet, jsuya, herb
Reviewed By: Hermet
Subscribers: cedric, #reviewers, #committers
Tags: #efl
Differential Revision: https://phab.enlightenment.org/D11996
Change-Id: I7c0e83e70f0ac11a413cc4ae0dd05fc35678ef80
Shinwoo Kim [Fri, 19 Jun 2020 05:08:23 +0000 (14:08 +0900)]
Revert "ui scroller: fix broken scroller loop"
This reverts commit
036423307c7eafec904d650a71ef64dac646151a.
The commit 76b89b8 "evas proxy: use part of source" was reverted.
So we need to revert "ui scroller: fix broken scroller loop" to
avoid build break.
New commit using evas_object_image_load_region_set will handle.
Change-Id: Ibed05025c028555dc490f7b0bdd707c104b17943
Shinwoo Kim [Fri, 19 Jun 2020 03:14:16 +0000 (12:14 +0900)]
Revert "evas proxy: use part of source"
This reverts commit
76b89b8e49f4b16ad490c04134a9bdddea27950f.
The commit was for fix an issue quickly.
Now we are able to rever the commit because
evas_object_image_load_region_set is available.
New commit using evas_object_image_load_region_set is comming.
Change-Id: I5f8cf04f92065db22342521b9102e6d26d5121d6
Boris Faure [Sat, 20 Jun 2020 10:37:56 +0000 (11:37 +0100)]
eina_unicode: have explicit type conversions
Summary:
Found by running terminology's tests with UBSAN:
include/eina-1/eina/eina_inline_unicode.x:
runtime error: implicit conversion from type 'char' of value
-62 (8-bit, signed) to type 'unsigned char' changed the value to 194
(8-bit, unsigned)
Reviewers: #reviewers, vtorri
Subscribers: cedric, #reviewers, #committers
Tags: #efl
Differential Revision: https://phab.enlightenment.org/D11972
Carsten Haitzler (Rasterman) [Thu, 18 Jun 2020 23:56:08 +0000 (00:56 +0100)]
efreet caceh - fix coverity report
fix CID 1429935
Vincent Torri [Thu, 18 Jun 2020 13:35:46 +0000 (14:35 +0100)]
meson: add Solaris support
Summary: Add Solaris support for meson
Test Plan: test on OpenIndiana
Reviewers: raster, bu5hm4n, stefan_schmidt
Reviewed By: raster, stefan_schmidt
Subscribers: alarcher, stefan_schmidt, bu5hm4n, cedric, #reviewers, #committers
Tags: #efl
Differential Revision: https://phab.enlightenment.org/D11973
Vincent Torri [Tue, 16 Jun 2020 21:47:43 +0000 (21:47 +0000)]
tests: eina: fix ENOMEM message on Windows and solaris
On Windows and solaris the string associated to ENOMEM is "Not enough space"
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/D11983
Carsten Haitzler (Rasterman) [Thu, 18 Jun 2020 10:35:44 +0000 (11:35 +0100)]
efreet - mtime 0 fix build on windows
Carsten Haitzler (Rasterman) [Thu, 18 Jun 2020 10:03:02 +0000 (11:03 +0100)]
efreetd - cache - add more statinfo work around 0 mtime distros
some distros 9notably in this case nixos) want to do reproducible
builds. to them this means going around setting mtime for all files to
0. this means efreetd not only thinks mtime is invalid/stupid (0 is
generally just that as midnight on jan 1 1970 is not exactly a
sensible dare for a modified timestamp of a file as no filesystem with
any sanity will have not been modified since that time), but it keeps
mtime at 0 even when things update. this totally breaks efreetd that
expects to find mtime increases over time as things change. it's
necessary because it has to perform a "are mu caches up to date" scan
of all file data it caches and it needs to know if it should rebuild
something based on this.
so this does a few things:
1. it makes mtime have to be an exact match to the cache, not cache
mtime >= file mtime. so any change forward or back is an inavlidation.
2. it now also uses ctime, mode, size, uid, gid, block count and if a
symlink, the sha1 of the symlink path in addition and any change to
these == invalid.
this adds a lot of code and changes how dirs get scanned a bit but it
means it can pick up changes on these 0 mtime distros.
interestingly the policy of mtime being 0 is to have a reprodcible fs
... but ctime still changes and is > 0, as does inode info, so it's
not actually possible to have it totally work... but they try still,
so this is a fix for that problem.
whilst i was doing thisi also noticed efreetd re-red dirs many times
due to icon theme inhritance. i also fixed that to do a LOT less
syscalls by only scanning a dir once as i was rejigging the scanning
code at the time anyway. this should optimize thr scan costs at
efreetd startup too.
@fix
@opt
Artur Świgoń [Mon, 23 Mar 2020 11:33:52 +0000 (12:33 +0100)]
Revert "Revert "eldbus: change to idle_enterer from idler""
This reverts commit
2bcc7b48bf2f34a19b0712b030ab143d09dc30fb.
Handling DBus messages during idle carries the risk of starving the DBus
communication (and making the UI unresponsive if screen reader is used). This
is well-explained in the original (reverted) upstream commit: "If an
application does not give idle time, then the eldbus cannot have chance to
work."
Change-Id: Iffde1be749f5dba1ac1e8642c4ce4e3436770b5a
Stefan Schmidt [Tue, 9 Jun 2020 12:22:19 +0000 (14:22 +0200)]
benchmarks: eina: make sure we do not divide by zero
Make sure we do not divide by i if it is zero here.
CID: 1400768
Reviewed-by: Marcel Hollerbach <mail@marcel-hollerbach.de>
Differential Revision: https://phab.enlightenment.org/D11956
Stefan Schmidt [Wed, 10 Jun 2020 10:30:48 +0000 (12:30 +0200)]
tests: eio: make sure we check return value
Make sure we fail the test if the call does not succeed.
CID: 1412364
Reviewed-by: Marcel Hollerbach <mail@marcel-hollerbach.de>
Differential Revision: https://phab.enlightenment.org/D11963
Carsten Haitzler (Rasterman) [Wed, 17 Jun 2020 11:30:23 +0000 (12:30 +0100)]
evas gl common - remove comment - not valid anymore
Carsten Haitzler (Rasterman) [Wed, 17 Jun 2020 11:17:13 +0000 (12:17 +0100)]
gl common - actually allow vertex limits
fix non-commented out return that should have been commented out
Marcel Hollerbach [Wed, 17 Jun 2020 07:13:05 +0000 (09:13 +0200)]
efl_ui_widget: addition to the previous commit
in the previous commit we started to only receive the parent_obj from
the evas object when its not a widget. However, we still need to ensure
that the parent is equal to the current one in order to remove it when a
widget.
While this is one more call, the call to get the parent is not as
heavy as the data_get call, as this directly addresses a struct, and
does not read from a hash table.
This also fixes a test case failure.
Subhransu Mohanty [Wed, 17 Jun 2020 06:28:44 +0000 (06:28 +0000)]
elementary/perf: reduce number of efl_isa() call. in elementary test application efl_isa() shows up as hotsport during profiling so refactored the code to reduce redundant efl_isa() calls.
in genlist testcase the number of calls reduced by 30000.
Reviewed-by: Marcel Hollerbach <mail@marcel-hollerbach.de>
Reviewed-by: Hermet Park <<hermetpark@gmail.com>>
Reviewed-by: Youngbok Shin <youngb.shin@samsung.com>
Differential Revision: https://phab.enlightenment.org/D11984