they are so slowly caught by two reasons:
- .eo.c files are defining weak symbols, so no warnings when a symbol is
missing
- The APIs of the missing files are not tested, nor in examples in tree,
so not build and not discovered
This allow for simplifying the code that doesn't need to handle get/set/free
callback when not needed.
Reviewed-by: SangHyeon Jade Lee <sh10233.lee@samsung.com>
Differential Revision: https://phab.enlightenment.org/D7489
With the advancement of our MVVM interfaces, we realize that it could be made easier,
especially for bindings, to write an Efl.Model that proxy another one without having to
necessarily implement the entire logic of propagating event and checking if the property
we are getting request for is actually handle by our own Efl.Model. To simplify this,
I introduce this class that allow to set new callback for each property you want to handle
on your object.
Reviewed-by: Xavi Artigas <xavierartigas@yahoo.es>
Differential Revision: https://phab.enlightenment.org/D7487
In case the model being set has already gotten some event callback
set on it, to avoid strange behavior, like event not propagating,
it seems best to make sure the event are forwarded first.
Reviewed-by: Marcel Hollerbach <marcel-hollerbach@t-online.de>
Differential Revision: https://phab.enlightenment.org/D7483
After the loop_promise_new changes. Also fix unused var warning.
Reviewed-by: Cedric BAIL <cedric.bail@free.fr>
Differential Revision: https://phab.enlightenment.org/D7531
commit 9b5155c9f1 brought about crashes
- specifically that i saw in terminology because it actually uses
eina_promise_data_set() and the new efl_loop_promise_new basically
took over ownership of that data, but if anyone used
eina_promise_data_set() the data ptr used by this new code would bwe
overwritten, causing segfauls when terminology loses selection
ownership. for days i had mysterious crashes of terminology until i
narrowed it down to the above, so if you have too, then this will fix
it.
what this does is create a data set intercept function callback that
for now is only for use inside efl to everride data sets so they set
data inside the new struct that tracks data. i also had to add and
intercept for eina_promise_data_free_cb_set() as this in theory could
also ber a similar problem.
so perhaps the idea/design of efl_loop_promise_new() is not right and
this kind of thgn has to be internal to eina promise... this means
eina promise and loops are much more tied together.
there are the 3 files in ecore. However, they have not been tested,
there are additionally no examples at all, which did not bring up the
missing API calls, now they are here.
Note: they are compiling, however, it seems that it is not working right
now.
This reverts commit 9b5155c9f1.
For now lets revert this, this breaks copy and paste, further more it
has the potential to break a lot more things, as eio_model tends to use
efl_loop_promise new, and then eina_promise_data_set, which is
explicitly forbidden.
This fixes crashing terminology instances.
I am not sure this is the right way to do it as binding would have to likely
to bind it manually.
Reviewed-by: Lauro Neto <Lauro Moura <lauromoura@expertisesolutions.com.br>>
Differential Revision: https://phab.enlightenment.org/D7492
This build was never complete and also was not maintained probebly.
It is also dropped in favour of meson which is cool, merged, works & is fast.
Differential Revision: https://phab.enlightenment.org/D7010
This brings in the possibility to receive the app object from bindings.
With the app object you can listen to pause / args / terminate / resume
events.
fix T7509
Differential Revision: https://phab.enlightenment.org/D7480
Summary:
In the case when you have multiple future in flight related to one object, you
couldn't use the previous version of efl_future_then. Now all function calls
take a void* pointer that allow multiple future to have their private data
request data accessible in all the callback.
This should not break released API as Eo.h is not released yet and so
was efl_future_Eina_FutureXXX_then.
Depends on D7332
Reviewers: felipealmeida, segfaultxavi, vitor.sousa, SanghyeonLee, bu5hm4n
Reviewed By: segfaultxavi
Subscribers: #reviewers, #committers
Tags: #efl
Maniphest Tasks: T7472
Differential Revision: https://phab.enlightenment.org/D7379
The new helper help replace call to eina_future_resolved and eina_future_rejected with
a scheduler lookup to just one function call.
Reviewed-by: Xavi Artigas <xavierartigas@yahoo.es>
Reviewed-by: Vitor Sousa da Silva <vitorsousa@expertisesolutions.com.br>
Differential Revision: https://phab.enlightenment.org/D7341
This make all object that inherit from Efl.Loop_Consumer have an easy ability to create a future
from their link to a loop provider. This way there is no need to further lookup for a scheduler.
This can by applied after the patch series from T7471.
Reviewed-by: Xavi Artigas <xavierartigas@yahoo.es>
Differential Revision: https://phab.enlightenment.org/D7337
Fix bugs on Views and Model related with null items and proper ownership and
life-cycle of components.
Configure default theme for default factory on finalize.
Fix type error while getting boolean property from Efl.Model_Composite_Boolean.
Fix properties_get methods for all composite models.
Now properly call property.changed events when it is needed.
Use EINA_VALUE_TYPE_BOOL instead of EINA_VALUE_TYPE_UCHAR.
Remove some memory leaks.
Summary:
- Replace '\@ref name' with '@name'
- Remove unused \@internal tag
This tag affects text AFTER it, and there is no text after it.
- Remove \@note tag
Replaced with a simple NOTE: text, since eolian does not have an equivalent tag.
- Remove spurious \@Efl... tags
They should really be @Efl...
- Remove \@p tags
There is no eolian equivalent, and a simpler $ suffices in this case.
Fixes T7482
Reviewers: q66
Reviewed By: q66
Subscribers: cedric, #reviewers, #committers
Tags: #efl
Maniphest Tasks: T7482
Differential Revision: https://phab.enlightenment.org/D7372
This new syntax separates the parent class from extensions, in
a familiar way to similar to e.g. Java. Since changing everything
at once is a lot of effort, implement it alongside for the time
being.
Since Efl.Interpolator's subclasses are used as interpolator class,
Efl.Interpolator class is changed to be an interface.
This change allows Efl.Canvas.Animation to have Efl.Interpolator as its
property in efl_canvas_animation.eo.
Summary:
This commit removes some clashes (i.e. names as classes and namespaces
at the same time). It'll avoid nested items that are either forbidden
(C#) or problematic (Python) in some languages.
Reviewers: segfaultxavi, bu5hm4n, felipealmeida
Reviewed By: segfaultxavi
Subscribers: cedric, #reviewers, #committers
Tags: #efl
Differential Revision: https://phab.enlightenment.org/D7260
This uses the meson/ninja depfile functionality + eolian to make
sure proper dependencies between generated files and .eo files
are managed, to ensure consistent re-generation of all generated
files that are affected upon .eo file modification.
For custom rules with multiple outputs, Ninja currently does not
support depfiles. Therefore, split those into two custom rules
so that the depfiles functionality can be enabled. While this
is ugly and slows down the process a little by having to invoke
Eolian twice instead of once, it has to be done and it's still
better than what we had in Autotools anyway.
Differential revision: D7187
Fixes T6700.
this unifies the system types into 4 boolean flags
This fixes the fact that meson changed the system string accross
versions.
Differential Revision: https://phab.enlightenment.org/D7144
a new shiny buildtool that currently completes in the total of ~ 4 min..
1 min. conf time
2:30 min. build time
Where autotools takes:
1:50 min. conf time
3:40 min. build time.
meson was taken because it went quite good for enlightenment, and is a traction gaining system that is also used by other mayor projects. Additionally, the DSL that is defined my meson makes the configuration of the builds a lot easier to read.
Further informations can be gathered from the README.meson
Right now, bindings & windows support are missing.
It is highly recommented to use meson 0.48 due to optimizations in meson
that reduced the time the meson call would need.
Co-authored-by: Mike Blumenkrantz <zmike@samsung.com>
Differential Revision: https://phab.enlightenment.org/D7012
Depends on D7011
Summary:
We have back-ends that can generate their own tick sources, but
ecore_animator_add()/ecore_animator_timeline_add() gives no indication
which backend the animator is running on. This means that all animators
have to cause all currently in use backends to tick.
For example, if under wayland 4 application windows are open, all 4
windows will create ticks when any animator is present.
These new animator APIs that take an evas object allow us to figure out
out the backend and only cause the appropriate one to tick.
Depends on D7040
Reviewers: devilhorns
Reviewed By: devilhorns
Subscribers: devilhorns, cedric, #reviewers, #committers
Tags: #efl
Differential Revision: https://phab.enlightenment.org/D7041
event handler start at 1 (see _ecore_event_message_handler_type_new and
_ecore_event_message_handler_efl_object_constructor) so that handlers[0] is not
allocated. this patch avoid invalid memory access.
this fixes T7349
Differential Revision: https://phab.enlightenment.org/D6966
Summary: I had fixed some typos and some wrong expressions in API reference doc
Test Plan: N/A
Reviewers: raster, zmike, Hermet, segfaultxavi
Reviewed By: Hermet
Subscribers: cedric, #reviewers, #committers
Tags: #efl
Differential Revision: https://phab.enlightenment.org/D6943
Summary:
it is not correct to throw an error when methods are called during
construction
Reviewers: Hermet
Reviewed By: Hermet
Subscribers: Hermet, cedric, #reviewers, #committers
Tags: #efl_main_loop
Differential Revision: https://phab.enlightenment.org/D6787
Summary:
Ecore internally uses 10 events, from ECORE_EVENT_SIGNAL_USER=1 to
ECORE_EVENT_SYSTEM_TIMEDATE_CHANGED=10. The Ecore.Event.Message_Handler
singleton that holds the counter of events is initialized with -1.
This is followed in _ecore_event_init() by ten calls to
ecore_event_message_handler_type_new(), which increase the counter of
event by one each.
This results in an event counter to be 9 (-1 + 10) at the end of the
initialization of ecore_events. This means that the next event to be
created will have a value of 10, which will overlap with
ECORE_EVENT_SYSTEM_TIMEDATE_CHANGED. As such, these two distinct events
will be aliased and their associated handlers will be called at
unexpected times, with unexpected data.
By changing the constructor value from -1 to 0, we prevent this event
aliasing.
Fixes T6605
Reviewers: zmike, Hermet
Reviewed By: Hermet
Subscribers: cedric, #reviewers, #committers, zmike
Tags: #efl
Maniphest Tasks: T6605
Differential Revision: https://phab.enlightenment.org/D6894
Summary:
This reverts commit 4917910b49.
4917910b break backward compatibility.
Reproduction:
void pipe_handler(...);
pipe = ecore_pipe_add(pipe_handler, NULL);
ecore_pipe_write(pipe, NULL, 0);
Because of the null check condition, pipe_handler isn't called after 4917910b.
Some apps behavior which is written to expected to call pipe_handler was broken.
also, this patch fixed segfault during build on Windows
Test Plan: make on Windows
Reviewers: raster, zmike, vtorri
Reviewed By: zmike, vtorri
Subscribers: woohyun, cedric, #reviewers, #committers, zmike, vtorri
Tags: #efl
Differential Revision: https://phab.enlightenment.org/D6824
Summary:
in the case where the user has called loop_time_set with a value in the future,
avoid setting the loop time to something that would potentially cause a callback
to occur with a loop_time value before a previous occurrence of that callback
@fix
Reviewers: ManMower
Reviewed By: ManMower
Subscribers: ManMower, #reviewers, cedric, #committers
Tags: #efl_main_loop
Differential Revision: https://phab.enlightenment.org/D6764
Summary:
Timers are not called in the order they were registered.
Because when current timer is deleted, getting next timer is called twice.
Test Plan:
<error>
Timer1 expired after 0.001 seconds.
Timer3 expired after 0.001 seconds.
Timer5 expired after 0.001 seconds.
Timer7 expired after 0.001 seconds.
Timer2 expired after 0.001 seconds.
Timer6 expired after 0.001 seconds.
Timer4 expired after 0.001 seconds.
Timer8 expired after 0.001 seconds.
<correct>
Timer1 expired after 0.001 seconds.
Timer2 expired after 0.001 seconds.
Timer3 expired after 0.001 seconds.
Timer4 expired after 0.001 seconds.
Timer5 expired after 0.001 seconds.
Timer6 expired after 0.001 seconds.
Timer7 expired after 0.001 seconds.
Timer8 expired after 0.001 seconds.|
{F3268233}
Reviewers: Hermet, Jaehyun_Cho, zmike, SanghyeonLee
Reviewed By: zmike
Subscribers: cedric, #committers, zmike
Tags: #efl_tests
Differential Revision: https://phab.enlightenment.org/D6700
Summary:
attempt to prevent any access of the signal pipe once signal handlers are
removed in order to avoid triggering a SIGPIPE which would kill the app
Depends on D6670
Reviewers: ManMower
Reviewed By: ManMower
Subscribers: cedric, #committers
Tags: #efl_main_loop
Differential Revision: https://phab.enlightenment.org/D6672
Summary:
if a signal is already in the signal pipe when close() is called,
this will trigger a SIGPIPE. if the signal handler exists, this will
cause the signal handler to infinitely recurse when trying to print
the error messages from write()ing the signal data to the close()d
pipe
fix T7158
Reviewers: ManMower
Reviewed By: ManMower
Subscribers: cedric, #committers
Tags: #efl_main_loop
Maniphest Tasks: T7158
Differential Revision: https://phab.enlightenment.org/D6670
Summary:
windows does not include ecore_signal.c, so this is not a defined symbol
lib/ecore/.libs/lib_ecore_libecore_la-ecore_anim.o: In function `timer_tick_notify':D:\Documents\MSYS2\home\vtorri\gitroot\efl3\src/lib/ecore/ecore_anim.c:372: undefined reference to `exit_signal_received'lib/ecore/.libs/lib_ecore_libecore_la-ecore_anim.o: In function `ecore_animator_custom_tick':D:\Documents\MSYS2\home\vtorri\gitroot\efl3\src/lib/
ecore/ecore_anim.c:940: undefined reference to `exit_signal_received'
ref 6405a5a68c
Reviewers: vtorri, devilhorns
Reviewed By: vtorri
Subscribers: cedric, #committers
Tags: #efl_build
Differential Revision: https://phab.enlightenment.org/D6648
Summary:
Silence compilation warning.
There is an ifdef'd block of code which accesses obj but
I don't think it's in use in production?
Test Plan: Build EFL and watch for warning.
Reviewers: #committers, zmike, Hermet
Reviewed By: #committers, Hermet
Subscribers: cedric
Tags: #efl
Differential Revision: https://phab.enlightenment.org/D6628
Summary:
when an exit (SIGINT, SIGQUIT, SIGTERM) signal is received, the ui should
immediately stop updating in order to present the user with an instant
response
this uses a simple volatile int to block any ticks which begin after the
signal is received; if a signal is received during a tick then it will complete
normally
fix T7000
Depends on D6589
Reviewers: ManMower
Reviewed By: ManMower
Subscribers: cedric, #committers
Tags: #efl_main_loop
Maniphest Tasks: T7000
Differential Revision: https://phab.enlightenment.org/D6590
Summary:
When closing the fd handler, it checks if the fd is already closed and prints
an annoying warning: "fd %d closed, can't remove from epoll - reinit!"
We need to close the handler first and then the actual fd.
I am not familiar with this part of the code, but this fix removes the warnings
and does not seems to have adverse effects.
Test Plan: It had warnings before and now it doesn't, haven't observed any other adverse effect.
Reviewers: raster, zmike, devilhorns
Reviewed By: zmike
Subscribers: cedric, #committers
Tags: #efl
Differential Revision: https://phab.enlightenment.org/D6561
Summary:
We should only ever have a pos of 1.0 once, the current terminal
condition gives the impression that it might be possible to have
more than one 1.0 firing.
This would break a lot of code.
No functional change intended.
Depends on D6464
Reviewers: devilhorns, zmike
Reviewed By: zmike
Subscribers: cedric, #committers, zmike
Tags: #efl
Differential Revision: https://phab.enlightenment.org/D6465
this avoids the case where the main loop is waiting on a thread
and that same thread is waiting on the main loop
@fix
Differential Revision: https://phab.enlightenment.org/D6438
if a thread is actively waiting on the main loop in order to proceed
with its exit, a flush here avoids the case where the thread waits
until the main loop has exited
Differential Revision: https://phab.enlightenment.org/D6437
since this is now a smaller wait interval, looping more times helps
ensure success for threads which have longer blocking operations
between lifetime checks
Differential Revision: https://phab.enlightenment.org/D6436
Summary:
now that ecore accurately waits on all threads while exiting, this
loop needs to run much more frequently in order to avoid waiting for
an unreasonably long time when exiting
Reviewers: ManMower, devilhorns
Reviewed By: ManMower
Subscribers: cedric, #committers
Tags: #efl
Differential Revision: https://phab.enlightenment.org/D6427
these threads are still managed by the main loop, meaning they must be
accounted for so that they can be waited on if necessary during shutdown
this resolves some issues where ecore-con threads would persist after the
main thread had exited or called ecore_shutdown
@fix
fix T7041
this is the final version of the patch and not the mangled version which
was previously committed
Differential Revision: https://phab.enlightenment.org/D6354
these threads are still managed by the main loop, meaning they must be
accounted for so that they can be waited on if necessary during shutdown
this resolves some issues where ecore-con threads would persist after the
main thread had exited or called ecore_shutdown
@fix
fix T7041
Differential Revision: https://phab.enlightenment.org/D6354
these headers are not available on all platforms (e.g., windows) and so
the corresponding #ifdef checks must be used in order to correctly include
them
ref 1adb73cef8
ref T5725
fix T7063
Differential Revision: https://phab.enlightenment.org/D6369
Summary:
ensure that this occurs as expected when forks happen
note that this is already being actively tested in the elm unit tests
Depends on D6307
Reviewers: ManMower, devilhorns
Reviewed By: ManMower
Subscribers: cedric, #committers
Tags: #efl
Differential Revision: https://phab.enlightenment.org/D6308
Glib integration with using of select() syscall doesn't properly
propagates G_IO_ERR condition for network sockets. Problem relies in
_ecore_glib_context_poll_to() where rewriting filedescriptor events to
GPollFD structures reside.
This fixes T5725
@fix
Summary:
Animators shouldn't be used as a general purpose timer mechanism,
we could use a timer, but a poller seems to make more sense as
it limits the impact of the instrumentation on the code it's
instrumenting.
Reviewers: stephenmhouston, zmike
Reviewed By: stephenmhouston, zmike
Subscribers: stephenmhouston, cedric, #committers, zmike
Tags: #efl
Differential Revision: https://phab.enlightenment.org/D6251
Summary:
All events must have a type now, otherwise bindings don't know how to handle
the event_info field.
Most of the missing event types were actually "void" (no event_info present).
Some struct definitions had to be moved to eo instead of h files, so they
are available to bindings. Some have not, and are marked with FIXME.
Some namespaces have been fixed (like Efl_Event_Cb -> Efl.Event_Cb).
In general, there are hundreds of changed files, but mostly to add a type which
was not present before, so there's no harm done.
Also, A lot of FIXMEs have been added which should be, like, fixed.
For example, some events can send different types of event_info, which is
very inconvenient (and error prone).
Test Plan: make with c# bindings works, make check and make examples work too.
Reviewers: cedric, q66, lauromoura
Subscribers: zmike
Tags: #efl
Differential Revision: https://phab.enlightenment.org/D6169
Initial results of our static analysis showed a bunch of unused
imports or imports used only for documentation references. In the
first case, remove entirely, in the second case, change to 'parse'
in order to keep references working.
The static analysis is not perfect and yields false negatives for
certain cases, so there will be a second batch later.
The value must be given to eina_value_set and not a pointer to a
Eina_Value.
This bug results in always getting wrong exit code when the application
terminates.
This changes a lot of things all across the EFL. Previously,
methods tagged @const had both their external prototype and
internal impl generated with const on object, while property
getters only had const on the external API. This is now changed
and it all has const everywhere.
Ref T6859.
Summary:
it turns out that 0.01s is actually a lot, accounting for something like
20s across a run of 'make check' while providing no additional value
ref e0c8ab4c79
ref T6825
ref T6864
Reviewers: cedric
Maniphest Tasks: T6864, T6825
Differential Revision: https://phab.enlightenment.org/D5941
Reviewed-by: Cedric BAIL <cedric@osg.samsung.com>
Summary:
this is only meant to listen to data which is currently available,
not wait for new data
@fix
Depends on D5866
Reviewers: cedric
Reviewed By: cedric
Subscribers: cedric
Differential Revision: https://phab.enlightenment.org/D5867
Reviewed-by: Cedric Bail <cedric@osg.samsung.com>
Summary:
this resolves a race condition when a thread join was pending during
shutdown but a pipe write was needed in order for the join to be
successfully executed before shutdown had occurred
@fix
Reviewers: cedric
Reviewed By: cedric
Subscribers: cedric
Differential Revision: https://phab.enlightenment.org/D5866
Reviewed-by: Cedric Bail <cedric@osg.samsung.com>
[Dereference after null check]
(1) src/lib/ecore/ecore_main.c
- _efl_loop_handler_efl_object_finalize checks if pd->loop_data is NULL.
After that, _handler_reset > _handler_clear > _ecore_main_fd_handler_del >
_ecore_main_fdh_pool_del is directly dereferencing pd->pool_data.
- _efl_loop_handler_efl_object_parent_set checks if pd->loop_data as well.
Then it calls _handler_reset as well.
(2) src/lib/ecore_wayland/ecore_wl_dnd.c
- ecore_wl_dnd_selection_set checks if t - result of wl_array_add - is NULL.
And it is dereferecing t directly for wl_data_source_offer.
(3) src/lib/elementary/efl_ui_dnd.c
- Third parameter const char *data could be NULL.
In this case strlen dereferences NULL. The data should be non NULL value.
I have checked this with Mr. Thiep Ha.
(4) src/lib/evas/canvas/evas_object_inform.c
- _efl_canvas_object_efl_gfx_stack_stack_below checks if obj->layer is NULL.
So it could call evas_object_inform_call_call_restack which is dereferencing
obj->layer directly.
well call sync returns a void * too.... instead of just void return
(nothing) but this makes it easier to write and maintain code due to
consistency of function callback signatures.
leave the exact numbers less defined because core count can change on
the fly and could be virtually limited by policy in future etc. so
keep things less exactly defined so people dont go depending on exact
results which was never really intended.
127 is the "command not found" shell exeit code, 126 is "the command
file is found but is not executable" which i think i'd interpret not
just for execute permissions but that something is preventing it from
executing in general.
both exe and thread objects must (currently) stay around until the
child thread or exe (task) is done. if you don't do this "bad things
can happen". so produce an error to let the programmer know.
For numeric types, eina_value_set() accepts values instead of references
on the value to be set. Hence, we were affecting as the exit code of the
loop a garbage value, yielding to invalid results.
so this is then inconsistent with efl.exe and efl.thread, so go back
to being normal with 0'th arg being the binary itself jsut to make
sure we have conistent usage.