Mateusz Palkowski [Thu, 23 Jul 2020 08:59:27 +0000 (10:59 +0200)]
evas/canvas/vg: added dash example
Change-Id: Id2d2267629bf1c69ce847fa811b8e6dc9de45114
Mateusz Palkowski [Wed, 22 Jul 2020 13:17:34 +0000 (15:17 +0200)]
evas/canvas/vg: added circles example.
Change-Id: Ief878dc3d5503700274a3ee3139a2a3662937535
Jongmin Lee [Wed, 12 Aug 2020 00:03:45 +0000 (09:03 +0900)]
ector: remove include path in pc file
ector.pc defines Cflags as '-I${includedir}/ector-1'. However, there are no
files in ector-1 directory. The recent version of cmake checks whether the include path
contains files or not. If there are no files, it stops compilation with errors.
Since ector does not expose any header files, it should not define any include path.
Change-Id: I15ba71a1dbdf246e5637b51c6bcd2a0d992dcf37
Carsten Haitzler (Rasterman) [Thu, 13 Aug 2020 16:41:36 +0000 (17:41 +0100)]
edje - calce - really respect max image size for img sets
when you have an image set for an image it wouldnt actually respect
image max size and not select something bigger than it.. now it will
@fix
Hermet Park [Thu, 13 Aug 2020 08:01:32 +0000 (17:01 +0900)]
evas examples: remove unecessary beta tag.
vector legacy apis have been officially released.
it doesn't need beta tag anymore.
Change-Id: Id90eebe0e96b21de1632bef625ce3152c7b313ca
Marcel Hollerbach [Mon, 10 Aug 2020 08:43:18 +0000 (10:43 +0200)]
eo: set idx on exit to 1 not to 0
if this is set to 0 the next iteration in the upper frame event would
decrement the 0 again leading to a overflow making the iteration and
callback array overflow.
Long story short: set ifx to 1 to prevent overflow, test added.
fixes T8787
Differential Revision: https://phab.enlightenment.org/D12101
Carsten Haitzler (Rasterman) [Tue, 11 Aug 2020 12:49:30 +0000 (13:49 +0100)]
ecore input - make an unsupported joystick a warn not an err...
Alastair Poole [Mon, 10 Aug 2020 13:15:08 +0000 (14:15 +0100)]
elm_code: Selection start (with keyboard) fix.
When starting a selection we were jumping two characters. This
change resolves that.
Alastair Poole [Mon, 10 Aug 2020 10:17:32 +0000 (11:17 +0100)]
elm_code: Always render N new lines (buffer).
If we don't have a buffer here you CAN lose the race when scrolling.
As there is a check later in the flow, we can just use a padding
of 64 instead of checking the range. This ensures that scrolling is
smooth and content is always rendered throughout an aggressive
scroll.
João Paulo Taylor Ienczak Zanette [Fri, 7 Aug 2020 19:08:48 +0000 (20:08 +0100)]
evil: Remove OS version check
Summary:
Current version checking is done with GetVersion, which is now deprecated and issues the warning:
```
'GetVersion' is deprecated [-Wdeprecated-declarations]
```
The first approach of this commit was to replace GetVersion call with the newer (and more reliable) `IsWindowsVistaOrGreater()` from versionhelpers.h, but nowadays it makes more sense to actually not even make that check, since it is more than unlinkely to happen that someone tries to compile/run EFL in Windows XP.
Reviewers: vtorri, stefan_schmidt, raster
Reviewed By: vtorri, raster
Subscribers: cedric, #reviewers, #committers
Tags: #efl
Differential Revision: https://phab.enlightenment.org/D12095
Marcel Hollerbach [Wed, 29 Jul 2020 10:01:43 +0000 (12:01 +0200)]
efl_ui_focus_manager: reduce the amount of relying on events
with this commit we are not replying on event invocations anymore, but
rather on direct flag observation in the focus manager itself.
This reduces the amount of events that are emitted as a consequence to
elements beeing marked dirty segnificantly.
startup time of elementary_test goes from 0.50 to 0.46s.
Differential Revision: https://phab.enlightenment.org/D12072
Change-Id: Ie90922fcac2cdcf22bac8bd3071a215853d7057f
Marcel Hollerbach [Fri, 31 Jul 2020 08:50:04 +0000 (10:50 +0200)]
eo: evalulate special counts earlier
we have these special counts which are > 0 when there is a callback
subscribed. THey are currently evalulated in _callback_call. However,
we can also skip the entire call from inside eo_base_class as we are
having the fields there as well.
This way we are skipping the obj pointer lookup and vtable lookup.
Reviewed-by: Cedric BAIL <cedric.bail@free.fr>
Differential Revision: https://phab.enlightenment.org/D12079
Marcel Hollerbach [Wed, 5 Aug 2020 08:45:29 +0000 (10:45 +0200)]
eo: event callback call optimization
a little overfiew to how eos event emission is working:
- In eo there are 2 types of events restart events and normal events.
Normals are *always* emitted from callback_max to 0
Restarts are emitted from the previous emissions current idx to 0. The
previous emission will stop then
- To keep track of the previous event emissions for restarts there was
an eina inlist.
- To keep track of other things in eo, there was an additional eo event
stack frame (newly inserted events etc. etc.)
This commit now uses this event stack frame for implementing the details
about the restart events. This has the advatage that every
efl_object_data contains one byte less, and the up to date keeping of
the id's in the restart infrastructure is not needed anymore, making the
whole event emission code less instructions and faster.
How this now works:
- Every emission has a event emission frame, when the emission starts,
the frame is added, next points to the next older event emission. In
this event stack frame we are storing the current idx, the description
and a few other things that are not really relevant at this point.
- when a restart event is started, this event stack is searched from the
current frame up to the next one featuring the same event description.
The event frame stack is then remembered, if the event emission is
done, the current idx (normally 0 or something higher when callback
was stopped) is then copyied back to the earlier frame.
- Based on the nature of the event frame stacks, the idx is updated
every iteration. And for the restart events, we only need to know the
next, which removes the need of permanently updating the idx in the
current stack.
- The event frame stack is not allocated on the heap, hence more things
in there does not matter at all.
Reviewed-by: Cedric BAIL <cedric.bail@free.fr>
Differential Revision: https://phab.enlightenment.org/D12097
Seunghun Lee [Thu, 6 Aug 2020 16:04:06 +0000 (01:04 +0900)]
ecore_wl2: fix mismatched synchronized mode.
A sub-surface is initially in the synchronized mode.
Change-Id: Ic420cf7dd9edfc1761910afc87dac9c6c64d360d
Wonki Kim [Wed, 5 Aug 2020 06:35:10 +0000 (06:35 +0000)]
efl_canvas: fix a potentional error of null deref
this is a patch to fix a potentional error by null dereferencing.
Reviewed-by: Marcel Hollerbach <mail@marcel-hollerbach.de>
Differential Revision: https://phab.enlightenment.org/D12093
Wonki Kim [Wed, 5 Aug 2020 08:03:02 +0000 (17:03 +0900)]
elm_access: fix a potentional error of null deref
Summary: this is a patch to fix a potentional error by null dereferencing.
Reviewers: jsuya, kimcinoo, bu5hm4n
Reviewed By: jsuya
Subscribers: kimcinoo, bu5hm4n, cedric, #reviewers, #committers
Tags: #efl
Differential Revision: https://phab.enlightenment.org/D12092
Wonki Kim [Wed, 5 Aug 2020 08:02:13 +0000 (17:02 +0900)]
evas/engine: fix a potentional error of null deref
Summary: this is a patch to fix a potentional error by null dereferencing.
Reviewers: jsuya, bu5hm4n, Hermet
Reviewed By: jsuya, bu5hm4n
Subscribers: bu5hm4n, cedric, #reviewers, #committers
Tags: #efl
Differential Revision: https://phab.enlightenment.org/D12091
Wonki Kim [Wed, 5 Aug 2020 06:18:34 +0000 (15:18 +0900)]
edje: fix a potentional error of null deref
Summary: this is a patch to fix a potentional error by null dereferencing.
Reviewers: jsuya, bu5hm4n, Hermet
Reviewed By: jsuya
Subscribers: cedric, #reviewers, #committers
Tags: #efl
Differential Revision: https://phab.enlightenment.org/D12086
Wonki Kim [Wed, 5 Aug 2020 06:14:24 +0000 (15:14 +0900)]
edje_edit: fix a potentional error of null deref
Summary: this is a patch to fix a potentional error by null dereferencing.
Reviewers: jsuya, bu5hm4n, cedric, Hermet
Reviewed By: jsuya
Subscribers: cedric, #reviewers, #committers
Tags: #efl
Differential Revision: https://phab.enlightenment.org/D12090
Bowon Ryu [Wed, 5 Aug 2020 06:09:05 +0000 (15:09 +0900)]
edje_edit: add null check for return of eina_hash_find
Summary: to prevent null pointer dereference
Test Plan: N/A
Reviewers: cedric, jsuya
Reviewed By: jsuya
Subscribers: #reviewers, #committers
Tags: #efl
Differential Revision: https://phab.enlightenment.org/D12094
Shinwoo Kim [Wed, 5 Aug 2020 05:52:50 +0000 (14:52 +0900)]
embryo_cc: ++safty code
Summary:
This patch is increasing safty code by handling following case.
sc_compile > OH!! there is uninitialized loacal variable "outfname"!! >
setopt > about > longjmp > setjmp returns 3 > goto cleanup >
then uninitialized data is read from local variable "outfname".
Reviewers: raster, Hermet, jsuya, herb
Reviewed By: jsuya
Subscribers: cedric, #reviewers, #committers
Tags: #efl
Differential Revision: https://phab.enlightenment.org/D12074
JunsuChoi [Wed, 5 Aug 2020 05:45:22 +0000 (14:45 +0900)]
evas_filter: Add null check for instruction
Summary:
Add a null check for cases where the param passed
from the filter instruction can be a null pointer.
Test Plan: N/A
Reviewers: kimcinoo, Hermet
Subscribers: #reviewers, #committers, cedric
Tags: #efl
Differential Revision: https://phab.enlightenment.org/D12084
Ali Alzyod [Wed, 5 Aug 2020 04:33:03 +0000 (13:33 +0900)]
efl_ui_textbox: preserve changing user color set
Summary:
setting color inside the constructor call will be override in theme apply because it happen later.
txt = efl_add(EFL_UI_TEXTBOX_CLASS, win,
efl_text_color_set(efl_added, 0, 255, 0, 255));
Now we will preserve user choice, to not change it during theme apply.
Test Plan: ninja test
Reviewers: woohyun, bu5hm4n, zmike, segfaultxavi
Subscribers: cedric, #reviewers, #committers
Tags: #efl
Differential Revision: https://phab.enlightenment.org/D11942
Ali Alzyod [Wed, 5 Aug 2020 04:09:00 +0000 (13:09 +0900)]
evas_textblock: enhance cursor event submitting during markup_set/text_set
Summary:
Enhance text cursor events submitting:
1- Submit events only for changed cursors.
2- Reduce code complexity for cursor change.
3- Add test case for cursor event change
Reviewers: woohyun, zmike, bu5hm4n
Reviewed By: woohyun
Subscribers: cedric, #reviewers, #committers
Tags: #efl
Differential Revision: https://phab.enlightenment.org/D11775
Ali [Wed, 5 Aug 2020 02:32:11 +0000 (11:32 +0900)]
elm_entry/efl.ui.textbox: use common key shortcuts
Summary:
**key** value comes from keyboard down callbacks are common, regardless of language/layout but **keyname** is dependent on layout(in X11, in Wayland Can not be produced).
This common fix for both.
For example if keyboard layout in arabic then:
Ctrl+A will not work (in X11)
This one enhances D11606
Reviewers: woohyun, bu5hm4n, zmike
Reviewed By: woohyun
Subscribers: cedric, #reviewers, #committers
Tags: #efl
Differential Revision: https://phab.enlightenment.org/D11695
Ali Alzyod [Wed, 5 Aug 2020 02:27:03 +0000 (11:27 +0900)]
evas_textblock: enhance escape character handling
Summary:
-Lazy initialization for html escapes lists
-Lower memory consumtion for escapes lists
-Simplify code maintenance by sorting lists on runtime, new items donot need to respect sort order(run time will handle it)
Reviewers: woohyun, bowonryu, cedric, tasn
Reviewed By: woohyun
Subscribers: cedric, #reviewers, #committers
Tags: #efl
Differential Revision: https://phab.enlightenment.org/D9370
ali [Wed, 5 Aug 2020 02:22:14 +0000 (11:22 +0900)]
efl.ui.textbox: Keyboard Enter will add paragraph separator
Summary:
efl.ui.textbox: Keyboard Enter will add paragraph separator and \n
because of D9064 Textbox multiline can work with paragraph separator
Reviewers: woohyun, segfaultxavi, bu5hm4n, zmike
Reviewed By: woohyun
Subscribers: cedric, #reviewers, #committers
Tags: #efl
Differential Revision: https://phab.enlightenment.org/D11201
JunsuChoi [Tue, 4 Aug 2020 11:44:13 +0000 (11:44 +0000)]
efl_ui_timepicker: Add null check for efl_text_get
Prevent null access of the string passed from efl_text_get.
Reviewed-by: Marcel Hollerbach <mail@marcel-hollerbach.de>
Differential Revision: https://phab.enlightenment.org/D12085
Wonki Kim [Tue, 4 Aug 2020 11:45:03 +0000 (11:45 +0000)]
evas: fix a potentional error of null deref
this is a patch to fix a potentional error by null dereferencing.
Reviewed-by: Marcel Hollerbach <mail@marcel-hollerbach.de>
Differential Revision: https://phab.enlightenment.org/D12089
Carsten Haitzler (Rasterman) [Tue, 4 Aug 2020 08:40:39 +0000 (09:40 +0100)]
elput - support libelogind.so.0 as well as libelogind-shared.so.0
for gentoo...
@fix
Jaehyun Cho [Tue, 4 Aug 2020 06:11:35 +0000 (15:11 +0900)]
edje_embryo: fix memory leak in ALLOC_COPY_DESC
Summary:
If memory allocation fails in ALLOC_COPY_DESC, then the allocated memory
is not free.
To fix this memory leak, memory allocation of Edje_Real_Part_State is
done prior to ALLOC_COPY_DESC.
Reviewers: Hermet
Reviewed By: Hermet
Subscribers: cedric, #reviewers, #committers
Tags: #efl
Differential Revision: https://phab.enlightenment.org/D12082
Youngbok Shin [Tue, 4 Aug 2020 05:47:14 +0000 (14:47 +0900)]
embryo: fix a integer(cell) overflow problem
Summary:
The most of functions for embryo based on cell(int) types.
addvariable(), defsymbol(), modstk() and etc.
Because of this, if embryo script has a really big(INT_MAX / 4) stack variable,
integer overflow problem has been happened.
@fix
Test Plan:
Put a script in your EDC like the following code.
Build it and try to access the variable.
Or check the writen HEX value by embryo_cc.
script {
// It's size is 1,000,000,000.
// Remember, INT_MAX is 2,147,483,647.
new my_big_variable[
1000000000];
...
}
Reviewers: cedric, woohyun, raster, eunue, SanghyeonLee
Reviewed By: eunue, SanghyeonLee
Subscribers: cedric, #reviewers, #committers
Tags: #efl
Differential Revision: https://phab.enlightenment.org/D12081
SangHyeon Jade Lee [Tue, 4 Aug 2020 05:18:01 +0000 (14:18 +0900)]
elm : fix return of gengrid item swap anim to prevent animation memory leak.
Summary:
this is memory leak fix on gengrid item move.
when animation reached 1.0, it finish all animation and returns EINA_FALSE to delete current animation.
Test Plan: N/A
Reviewers: eagleeye
Subscribers: cedric, #reviewers, #committers
Tags: #efl
Differential Revision: https://phab.enlightenment.org/D12083
Change-Id: I564ca939b96ab5fbe0cbc8784f32aab533f644ec
Jaehyun Cho [Mon, 3 Aug 2020 11:22:08 +0000 (20:22 +0900)]
edje_embryo: fix null pointer dereference in ALLOC_COPY_DESC
To fix null pointer dereference in ALLOC_COPY_DESC, allocated variable
"new" is checked.
Jaehyun Cho [Mon, 3 Aug 2020 10:22:27 +0000 (19:22 +0900)]
edje_embryo: fix to use parameter of macro ALLOC_COPY_DESC
The parameter "To" of macro ALLOC_COPY_DESC is not used.
To use the parameter "To", "d" is replaced to "To".
Jaehyun Cho [Mon, 3 Aug 2020 06:54:35 +0000 (15:54 +0900)]
evas_gl_core: fix memory leak of EVGL_Resource
If eng_data is NULL and rsc is not NULL in _internal_resources_destroy,
then the allocated EVGL_Resource rsc is not free.
To resolve this memory leak, eng_data and rsc are checked separately.
Carsten Haitzler (Rasterman) [Sun, 2 Aug 2020 15:26:09 +0000 (16:26 +0100)]
efl ui image - fix scal to fill - broken with non-rect src images
@fix
Daniel Kolesa [Fri, 31 Jul 2020 16:54:04 +0000 (18:54 +0200)]
elua: add searchpath impl for 5.1 compat
Daniel Kolesa [Fri, 31 Jul 2020 16:37:03 +0000 (18:37 +0200)]
elua: fix elua_register with 5.1
Daniel Kolesa [Fri, 31 Jul 2020 16:21:15 +0000 (18:21 +0200)]
elua: do not link to cffi, load the module instead
Boris Faure [Fri, 31 Jul 2020 10:59:01 +0000 (12:59 +0200)]
elm_config: add slider to configure tooltip_delay
reviewers_: #reviewers, raster, cedric, netstar, bu5hm4n
Reviewed By: bu5hm4n
Subscribers: bu5hm4n, cedric, #reviewers, #committers
Tags: #efl
Reviewed-by: Marcel Hollerbach <mail@marcel-hollerbach.de>
Differential Revision: https://phab.enlightenment.org/D12060
Yeongjong Lee [Fri, 31 Jul 2020 06:44:44 +0000 (06:44 +0000)]
evas_textblock: remove logically dead code
Since `c->fmt` is allocated and dereferenced in `_layoutformat_push`, if
`c->fmt` is NULL, this causes a crash before checking for NULL.
Reviewed-by: Marcel Hollerbach <mail@marcel-hollerbach.de>
Differential Revision: https://phab.enlightenment.org/D12076
Yeongjong Lee [Fri, 31 Jul 2020 07:09:40 +0000 (07:09 +0000)]
ecore_ipc: remove duplicated condition
The same condition is used above.
Reviewed-by: Stefan Schmidt <stefan@datenfreihafen.org>
Differential Revision: https://phab.enlightenment.org/D12077
Carsten Haitzler (Rasterman) [Thu, 30 Jul 2020 10:13:37 +0000 (11:13 +0100)]
eina vpath - fix windows ~username handling to only error when used
we would always rrturn 0 on windows ... missing {} in block. fix that.
@fix
AbdullehGhujeh [Tue, 28 Jul 2020 13:38:33 +0000 (13:38 +0000)]
evas_textblock : return correct value for gfx_filter_get
return the same variable set with gfx_filter_set.
added test for it.
Reviewed-by: Ali Alzyod <ali198724@gmail.com>
Reviewed-by: Stefan Schmidt <stefan@datenfreihafen.org>
Differential Revision: https://phab.enlightenment.org/D12071
AbdullehGhujeh [Tue, 28 Jul 2020 11:24:55 +0000 (11:24 +0000)]
evas_textblock : Remove unneeded code
Duplicated code removed
Reviewed-by: Ali Alzyod <ali198724@gmail.com>
Reviewed-by: Stefan Schmidt <stefan@datenfreihafen.org>
Differential Revision: https://phab.enlightenment.org/D12070
Lucas [Tue, 28 Jul 2020 20:26:35 +0000 (20:26 +0000)]
evil: Remove unnecessary delay for evil startup
Apparently there were two loops intended for an older (and dropped
off) implementation of `gettimeofday`. This patch simplifies the code removing
these loops and significantly lowering evil startup.
Without this patch `ecore-suite`, `efl-app` and `evas-suite` gets timeout in
Windows:
```
25/29 ecore-suite TIMEOUT 30.12s
26/29 efl-app TIMEOUT 30.14s
...
29/29 evas-suite TIMEOUT 60.07s
```
Reviewed-by: Vincent Torri <vincent.torri@gmail.com>
Reviewed-by: Stefan Schmidt <stefan@datenfreihafen.org>
Differential Revision: https://phab.enlightenment.org/D12064
Marcel Hollerbach [Tue, 28 Jul 2020 07:23:11 +0000 (09:23 +0200)]
tests: fix eio tests
there are tests that init & shutdown efl_object in the same test, which
is since to switch to const _CLASS_GET dangerously wrong.
I checked for more cases but only found cases where no _CLASS_GET
macros where used.
Reviewed-by: Stefan Schmidt <stefan@datenfreihafen.org>
Differential Revision: https://phab.enlightenment.org/D12069
Carsten Haitzler (Rasterman) [Mon, 27 Jul 2020 21:45:36 +0000 (22:45 +0100)]
evas - render - dont crash is private data is null
@fix
Ali Alzyod [Mon, 27 Jul 2020 07:40:51 +0000 (07:40 +0000)]
evas: remove unused define
Reviewed-by: Stefan Schmidt <stefan@datenfreihafen.org>
Differential Revision: https://phab.enlightenment.org/D12066
Ali Alzyod [Sun, 26 Jul 2020 08:51:09 +0000 (08:51 +0000)]
elementry_test: fix allocation size
This fix Coverty Issue CID: 1430579
Reviewed-by: Vincent Torri <vincent.torri@gmail.com>
Reviewed-by: Stefan Schmidt <stefan@datenfreihafen.org>
Differential Revision: https://phab.enlightenment.org/D12065
Marcel Hollerbach [Mon, 27 Jul 2020 11:49:20 +0000 (13:49 +0200)]
ci: do not build tests on ci
we need to do the same on any platform that upgrades check from 0.15.0 to
0.15.1. For now this is only with macos
Reviewed-by: Stefan Schmidt <stefan@datenfreihafen.org>
Differential Revision: https://phab.enlightenment.org/D12068
Marcel Hollerbach [Mon, 27 Jul 2020 10:24:57 +0000 (12:24 +0200)]
build: warn of faulty check version
Reviewed-by: Stefan Schmidt <stefan@datenfreihafen.org>
Differential Revision: https://phab.enlightenment.org/D12067
Carsten Haitzler (Rasterman) [Fri, 24 Jul 2020 22:22:47 +0000 (23:22 +0100)]
efreetd - add more logging for what efreetd says to clients
Carsten Haitzler (Rasterman) [Fri, 24 Jul 2020 22:02:16 +0000 (23:02 +0100)]
efreetd - log the cache runs and when they launch, show data, exit
Carsten Haitzler (Rasterman) [Fri, 24 Jul 2020 20:22:33 +0000 (21:22 +0100)]
efreetd - dont confuse log file file handle and log math func
better not to use the same symbol...
Ali Alzyod [Fri, 24 Jul 2020 09:36:27 +0000 (10:36 +0100)]
evas: font glyphs texture garbage collector
Summary:
Introduce two public APIS
```
/**
* Set the limit in bytes for memory allocated by font glyphs in evas.
* @param[in] bytes cache size in bytes, pass negative value to ignore the limit.
* @param[in] options for caching, pass 0x1 to set the texture cache (in case of accelerated rendering).
*
* @since 1.24
*/
EAPI void evas_font_data_cache_set(signed long long int byte, int options);
/**
* @}
*/
/**
* Get the limit in bytes for memory allocated by font glyphs in evas.
* @param[in] options for caching, pass 0x1 to get the texture cache (in case of accelerated rendering).
* @return Returns font allocated memory cache limit, if value is negative this means no limit.
* @since 1.24
*/
EAPI signed long long int evas_font_data_cache_get(int options);
```
Test Plan:
elementary_test => Text Memory
You need a tool to observe Video memory allocation.
1- If you have detected Graphics card then use **radiontop** or **nvidia-smi** ).
2- If you have Integrated Graphics card, then you can detect memory allocation on RAM use.
----------------------------------------------
this example allows only 50 MByte Video memory texture allocated by font glyphs
```
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 = 200;
int counter = 0;
void _button_clicked(void *data, Evas_Object *obj, void *event_info)
{
APP *app = data;
font_size -= 5;
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);
evas_font_data_cache_set(50 * 1024* 1024, EVAS_FONT_DATA_CACHE_TEXTURE );
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, zmike, cedric, bu5hm4n, Hermet
Subscribers: cedric, #reviewers, #committers
Tags: #efl
Maniphest Tasks: T8737
Differential Revision: https://phab.enlightenment.org/D11943
Shinwoo Kim [Mon, 27 Jul 2020 09:22:33 +0000 (18:22 +0900)]
ecore_wl2: ++safety code
add return value checking, and deallocate resource if it fails.
Change-Id: Ieebab8dead4465fd1c454d7022d570ecfd8679d0
Hermet Park [Mon, 27 Jul 2020 05:27:52 +0000 (14:27 +0900)]
canvas engine: ++safety code
added null checking, no logical changes.
Change-Id: Ia5b4dde77567a8854ad852aa0dee90dbf9d8e418
Shinwoo Kim [Tue, 21 Jul 2020 11:15:10 +0000 (20:15 +0900)]
ecore_wl2: exclude video buffer from composition
The buffer used for UI and Video sync does not have to be composed.
E20 does not compose if the buffer size is 1x1.
*tizen-fix
Change-Id: Ic5dd1ea97720eabe2b51d90b952f53bf28087141
Yeongjong Lee [Thu, 23 Jul 2020 10:35:12 +0000 (19:35 +0900)]
edje_cc: fix crash on image data initialization
Summary:
Since commit
a8538bacce1457a91e28b39a6417eaadb4744b50 a crash occurs when
Images.Set.Image is unused.
To avoid a crash, this patch skips setting image data for unused image sets.
Test Plan:
$edje_cc basic.edc
basic.edc
```
collections {
set {
name: "bubble";
image {
image: "bubble.png" COMP;
}
}
}
```
Reviewers: raster
Subscribers: cedric, #reviewers, #committers, eagleeye
Tags: #efl
Differential Revision: https://phab.enlightenment.org/D12063
Change-Id: Ibcb14df831f0a6eb51d69267b379f6480256969f
Yeongjong Lee [Wed, 22 Jul 2020 10:27:28 +0000 (19:27 +0900)]
elementary: fix to calculate its min size after setting a style
after replacing style of a widget, min size calculation should be needed.
this patch fixes them to calculate its min size after setting a style.
@tizen_fix
Co-authored-by: Wonki Kim <wonki_.kim@samsung.com>
Change-Id: Id974a9bfdda6b5c4230da4e44d3d6410da1b85e8
Yeongjong Lee [Wed, 22 Jul 2020 10:20:09 +0000 (19:20 +0900)]
elementary: modify to call group_calculate after creating
user can't get min size for check/radios that have a min size definition of edc
just right after creating the objects.
user can get it after once it executes group_calculate.
to keep behavior backward compatability, this patch calls group_calculate
after creating the objects
@tizen_fix
Co-authored-by: Wonki Kim <wonki_.kim@samsung.com>
Change-Id: Icd08b60a516cc3ba4b5472bc013fddc5089d0a9a
Bowon Ryu [Wed, 22 Jul 2020 10:16:32 +0000 (19:16 +0900)]
edje_textblock: remove duplicated textblock style properties
Summary:
When there is "font" and "font_size" in textblock style (already defined),
If "font" and "font_size" are set using edje_text_class_set(),
then "font" and "font_size" are defined duplicated in texblock style through eina_strbuf_append.
Duplicate properties use memory unnecessarily,
and also it is possible to cause confusion at debbuging.
This patch replaces duplicate properties "font", "font_size" using eina_strbuf_replace.
Test Plan:
* textblock style in edc
"font=Sans font_size=20 wrap=mixed text_class=TEXT_CLASS";
* edje_text_class_set in c
edje_text_class_set("TEXT_CLASS", "font=DejavuSans", 40);
* textblock style at runtime (BEFORE)
DEFAULT='font=Sans font_size=20 wrap=mixed font_size=40.0 font=DejavuSans'
* textblock style at runtime (AFTER)
DEFAULT='font=DejavuSans font_size=40 wrap=mixed'
Reviewers: subodh6129, woohyun, ali.alzyod
Reviewed By: ali.alzyod
Subscribers: cedric, #reviewers, #committers
Tags: #efl
Differential Revision: https://phab.enlightenment.org/D11962
Change-Id: I5ca923695f49dd77b9f8de487a8a294af126a29d
Carsten Haitzler (Rasterman) [Tue, 21 Jul 2020 07:56:16 +0000 (08:56 +0100)]
elm - genlist/grid - call realized/unrealized item func cb after eo cb
JunsuChoi [Fri, 17 Jul 2020 03:54:41 +0000 (12:54 +0900)]
evas_vg_cache: Add sector_list_get
Add an API that if there is sector data in animation, returns a list of it.
@TIZEN_ONLY
Change-Id: Ib375e99ccaac924b3dff156f452597ae6a6f4128
JunsuChoi [Fri, 17 Jul 2020 03:54:50 +0000 (12:54 +0900)]
Efl.Gfx.Frame_Contoller: Add sector_list property
sector_list pass information of sectors in animation data.
@TIZEN_ONLY
Change-Id: I55325042d2ae0e5af7f3960fb853349d2fbb4fda
Yeongjong Lee [Tue, 21 Jul 2020 01:38:04 +0000 (10:38 +0900)]
elementary: remove since_tizen 6.0 tag from elm_relative_container
since_tizen tag will be generated by API Versioning script.
@tizen_fix
Change-Id: Ie6d9ac4dd99fc4dccc1a694221138e1498e8dea5
SangHyeon Jade Lee [Tue, 30 Jun 2020 00:48:38 +0000 (09:48 +0900)]
genlist : remove focusable conditions for wearable feature
disable/display mode is not a restriction of focus in wearable.
Change-Id: Ic26ff5e4f610f0fb9d73e63b9cfe11cc173d2c90
Carsten Haitzler (Rasterman) [Mon, 20 Jul 2020 21:24:31 +0000 (22:24 +0100)]
elm - genlist+gird - use item specific realize/unrealize not eo callback
this saves a lot of cpu overhead to specialize this with func ptrs in
the widget item struct instead of everyone listening on the parent
gengrid/genlist widget and eo having to walk lots of callbacks and
call them all...
major optimization
@opt
Carsten Haitzler (Rasterman) [Mon, 20 Jul 2020 13:32:12 +0000 (14:32 +0100)]
win - x io errors really just have to exit, so call the iorr cb + exit
from xlib man page:
The XSetIOErrorHandler sets the fatal I/O error handler. Xlib calls
the program's supplied error handler if any sort of system call error
occurs (for example, the connection to the server was lost). This is
assumed to be a fatal condition, and the called routine should not re‐
turn. If the I/O error handler does return, the client process exits.
@fix
Marcel Hollerbach [Thu, 16 Jul 2020 10:39:23 +0000 (12:39 +0200)]
efl: make all _class_get() functions const
please note, not the return type, but the function.
When appending __attribute__((const)) to a function, the compiler is
told that its enough to call this function once in a function.
This is quite often happening when we are efl_data_scope_get and
efl_super in a function that is different from a implemented function.
The compiler now starts to remove the calls that aggressivly that we
need to ensure that these calls are not removed, which means, the static
function calls, and the eo init are now checking the return value of
these functions, to ensure that they are called.
Please note that you now have to be carefull when your app calls
eo_shutdown, if it does so, you *must* call it at the end of a function,
or never call class_get after that anymore.
Overall this improves elm test runs 0.1s which is fair i guess, the main
thing that is faster is textrendering, where is also the point where
this is the most beneficial.
Please note, this replaces 42 occurences of double _class_get() ... THAT
is a sign!
Reviewed-by: Stefan Schmidt <stefan@datenfreihafen.org>
Reviewed-by: Daniel Kolesa <daniel@octaforge.org>
Differential Revision: https://phab.enlightenment.org/D12057
Vincent Torri [Sun, 19 Jul 2020 17:27:49 +0000 (18:27 +0100)]
Eina log: flush stderr on mintty-based terminals
Summary: on those terminal, stderr is never flushed, so errors messages are not displayed when, for example, the app crashes
Test Plan:
test program :
```#include <Eina.h>
#define ERR(...) EINA_LOG_DOM_ERR(log_dom, __VA_ARGS__)
int main()
{
int log_dom = -1;
eina_init();
log_dom = eina_log_domain_register("eet", EINA_COLOR_CYAN);
if (log_dom < 0)
{
printf("error register\n");
return 0;
}
ERR("an error.");
while (1)
{
}
return 0;
}
```
without the patch, nothing is displayed, even after a Ctrl-C to finish the program
with the patch, the error message is displayed
Reviewers: raster
Reviewed By: raster
Subscribers: cedric, #reviewers, #committers
Tags: #efl
Differential Revision: https://phab.enlightenment.org/D12058
Carsten Haitzler (Rasterman) [Fri, 17 Jul 2020 09:35:52 +0000 (10:35 +0100)]
Revert "edje: Avoid string duplication when possible."
This reverts commit
8941514b467ce3e5d02c9b936d35a9d393989260.
found that this breaks e's systray icon layout... :(
Yeongjong Lee [Thu, 16 Jul 2020 04:10:02 +0000 (13:10 +0900)]
elementary: introduce elm_relative_container
A relative container calculates the size and position of all the children based
on their relationship to each other.
For more information, please see documentation and examples.
@tizen_fix
Change-Id: I72b3af63a39e2944966392878ae0b0569cf149ec
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