Commit Graph

1194 Commits

Author SHA1 Message Date
Marcel Hollerbach 08908373f7 efl_loop: document and annotate efl_loop_time correctly
this adds over the documentation of the legacy header.
Additionally set is defined as protected.

ref T7597
2019-02-21 08:56:13 +01:00
Marcel Hollerbach 5ee81f7720 efl_loop: declare this class function to the object
we pass the object as first argument, so everything is just like object
function, thus we can declare it like this.

ref T7597
2019-02-21 08:56:13 +01:00
Carsten Haitzler a81a85f9dd efl cmdline use simpler stringshare type to not be redundant 2019-02-15 19:52:50 +00:00
Carsten Haitzler 8eb06f71e4 efl commandline - make strings also owned as well as array
this seems like it should be the right one. i don't have sample tests
etc.  to run - the mono suite succeeds... so...
2019-02-15 12:27:21 +00:00
Carsten Haitzler 0bf8b1ab1a fix efl exe/thread/appthread to work again after seemingly bitrotting 2019-02-15 10:21:19 +00:00
Carsten Haitzler eb2ead11b5 fix args handling in cmdline class to not be broken
first use consistent ownership (stringshare the strings) and then also
properly dup and pass them and not free null arrays and so on where
they are used
2019-02-15 10:21:14 +00:00
Carsten Haitzler 8e98c7eef9 cmdline iface - fix to consume input array AND strings totally
strings often enough are generated e.g. via "%s/%s" or "%i" or similar
etc. ... i have poitned to examples, so move to make all strings
consistently stringshared, fix a bug added to the efl thread code
where it accessed and freed array even tho array was consumed (but not
strings) in the set, and the code used free to consume not
stringshare_del. fix other code and tests to match

EXCTLY the kind of bugs and mistakes with this kind of design that i
said would happen more often just happened...
2019-02-15 10:21:04 +00:00
Carsten Haitzler 9d65e64c00 env obj - fixx implementation to use a shared object
so this chnage totally threww away all the thread safety and locking
without doing the simple thing of using a shared obcj for the global
env obj to ensure brute force safety at least. fix.
2019-02-15 01:31:52 +00:00
Marcel Hollerbach a2ea993f50 efl_core_command_line: a +1 was forgotten in order to account \0
this forgotten and the allocated string buffer was too small.
This fixes a valgrind warnings
2019-02-14 20:12:13 +01:00
Xavi Artigas c4bb24020b Stop defining EFL_BETA_API_SUPPORT in Efl_Core.h and Efl_Ui.h
Summary:
Including these headers does no longer mean that you want to use BETA API.
More and more methods in these libs will come out of BETA and they will
be usable without requiring EFL_BETA_API_SUPPORT to be defined by the app.

This concludes this patchset. Now apps can chose to define EFL_BETA_API_SUPPORT
or not, and they will have access to the requested API subset, but both options
are available.

Depends on D7951
Fixes T7692

Reviewers: zmike, bu5hm4n, cedric

Subscribers: #reviewers, #committers

Tags: #efl

Maniphest Tasks: T7692

Differential Revision: https://phab.enlightenment.org/D7952
2019-02-14 17:53:46 +01:00
Xavi Artigas 333330a6e5 Mark BETA classes individually
Summary:
Instead of surrounding all the #include "*.eo.h" lines in Efl.h
with #ifdef EFL_BETA_API_SUPPORT, include these files unconditionally, but mark
all classes as @beta in the eo files.
This will allow taking them out of beta one by one as we deem them stable enough.
Otherwise, the current procedure involves moving the #include line out of the
ifdef block, which is cumbersome and messes include order.

Depends on D7950
Fixes T7692

Test Plan: Nothing changes

Reviewers: zmike, bu5hm4n, cedric

Subscribers: #reviewers, #committers

Tags: #efl

Maniphest Tasks: T7692

Differential Revision: https://phab.enlightenment.org/D7951
2019-02-14 17:46:50 +01:00
Xavi Artigas 751ff0ed06 Mark EFL_MAIN and EFL_MAIN_EX macros as stable
They no longer require EFL_BETA_API_SUPPORT to be defined.
2019-02-14 17:11:04 +01:00
Derek Foreman 66ce295fc9 ecore_main: Add ECORE_FD_ALWAYS flag
This allows an fd handler to be called after select exits unconditionally.

Our wayland client code needs this to be thread safe, as it needs to
call prepare_read before entering select, and then either read or
cancel_read after select.

Signed-off-by: Derek Foreman <derek.foreman.samsung@gmail.com>
Reviewed-by: Chris Michael <cp.michael@samsung.com>
Reviewed-by: Cedric BAIL <cedric.bail@free.fr>
Differential Revision: https://phab.enlightenment.org/D7914
2019-02-13 10:33:40 -06:00
Marcel Hollerbach 37d2d378ec eolian: drop class function overriding
Until this commit eo did class functions as part of the vtable, which
enabled those functions to be overwritten in classes inheriting another
class. However in task T7675 we decided that this is not really good for
bindings, as most OOP languages do not support this sort of feature.

After this commit eolian realizes class function completly outside of
the vtable, the c-symbol that is the class funciton is now just directly
redirecting to a implementation, without the involvement of the vtable.

This also means a change to the syntax created by eo:

Calling before:
  class_function(CLASS_A);
Calling after:
   class_function();

Implementation before:
   class_function(const Eo *obj, void *pd) { ... }
Implementation after:
   class_function(void) { ... }

This fixes T7675.

Co-authored-by: lauromauro <lauromoura@expertisesolutions.com.br>

Reviewed-by: Daniel Kolesa <daniel@octaforge.org>
Differential Revision: https://phab.enlightenment.org/D7901
2019-02-13 16:59:58 +01:00
Christopher Michael 4c587ef679 Revert this as it should not have been pushed yet
Revert "ecore_main: Add ECORE_FD_ALWAYS flag"

This reverts commit b5e90ebe0d.
2019-02-13 10:01:22 -05:00
Derek Foreman b5e90ebe0d ecore_main: Add ECORE_FD_ALWAYS flag
Summary:
This allows an fd handler to be called after select exits unconditionally.

Our wayland client code needs this to be thread safe, as it needs to
call prepare_read before entering select, and then either read or
cancel_read after select.

Reviewers: cedric

Reviewed By: cedric

Subscribers: zmike, cedric, #reviewers, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D7914
2019-02-13 09:58:06 -05:00
Marcel Hollerbach 3b262340ba Revert "Revert command line array object because it's broken by design"
This reverts commit a57c7f7510.

I pretty much hate to just revert your revert, but you failed to read my
replies, and failed to understand what i was talking about.

And YES we talked at fosdem about the platform issue, and do you
remember my answer, that back in time this might be the case, today is
different freebsd suppoerts setenv, and for windows we have a setenv
implementation in evil. And yes, vtorri also created a issue how bad and
evil this commit is, however, i still fail to see the issue since setenv
unsetenv and clearenv usages are taken as needed. (T7693)

The ownership question is answered in
https://phab.enlightenment.org/D7516#137367.

Can we please get into a state of technical discussions, and not *oh
shit, i am going to revert this* this has been in review for a long
time, a lots of people have tested it, we discussed things on it, and
there was 3 weeks of no reply from you.

The issues that exist will be dealed with. Feel free to create tasks if
you want :)
2019-02-12 21:42:33 +01:00
Marcel Hollerbach 06160466e8 Revert "Revert the env object because it's broken portability - please redo"
This reverts commit d6294fa22b.
2019-02-12 21:34:27 +01:00
Carsten Haitzler d6294fa22b Revert the env object because it's broken portability - please redo
setenv and unsetenv are not portable. i explained to you at fosdem
there are issues and it's why i used putenv in the original
implementation and even though it's a pain (the string tou pass to
putenv is a pointer used literallt from there on in and you get it
from getenv, thus making ownership a pain -this is a libc issue we
can't readily solve). use putenv like the original code. then put it
back in. vtorri now has windows porting issues with the setenv use. i
knew there was a reason that still existed...

in addition your in_sync stuff is broken.  psuedocode:

// assuming BLAGH env is not set to anything here
c = efl_core_env_get(global_env, "BLAH");
...
putenv("BLAH=10");
...
c = efl_core_env_Get(global_env, "BLAH");

i will get NULL in both cases for c ... but i should get "10" for the
2nd in reality. reality is lots of code across application code and
libraries will at times mess with the environment. it has to work with
this. the prior implementation did work with this.

Revert "ecore: here comes a env object"
  This reverts commit 2373d5db5b.

Revert "efl_task: remove env from this object"
  This reverts commit c3d69f66a6.
2019-02-12 20:22:28 +00:00
Carsten Haitzler a57c7f7510 Revert command line array object because it's broken by design
Revert "ecore: get rid of commands in efl_task."
  This reverts commit 616381e9cf.
Revert "ecore: here comes a command line object"
  This reverts commit 48e5684b3c.

1. this is broken:

EOLIAN static const char*
_efl_core_command_line_command_get(const Eo *obj EINA_UNUSED, Efl_Core_Command_Line_Data *pd)
{
   return eina_strdup(pd->string_command);
}

it returns a const char * BUT it duplicates it on return. no. a big
fat honking NO. return a char * or don't duplicate. pick.

2. _efl_core_command_line_command_array_set() is broken by design. it
accepts an array of strings, but the strings are owned by the caller
who creates the array (requiring they free them up themselves after
this call) but the array becomes owned by the callee. the code here frees the
incoming array but doesn't care about the string content of it. it's
leak heaven waiting to happen (or bugs when someone wants to access
the array they create to walk it to free the strings they put into it
after it is set).

i brought this up and it was dismissed. now exactly he issue i brought
up is there with mixed ownership and the added complexity as well as
transfer of some ownership but not others.

go back and think about this so it isn't broken by design.
2019-02-12 19:54:35 +00:00
Marcel Hollerbach 616381e9cf ecore: get rid of commands in efl_task.
Note that the usage in efl_thread.c should and could be removed.
the problem with its usage is that when the ARGUMENTS event is fired,
noone ever had the chance to subscribe to the loop of the thread yet. So
all in all this is unneccessary, since noone could ever touch that.

Differential Revision: https://phab.enlightenment.org/D7517
2019-02-12 11:19:28 +01:00
Marcel Hollerbach 48e5684b3c ecore: here comes a command line object
the mixin for now can carry a command, which can be setted as an string.
The string is then parsed again, this is done in order to make sure that
everything that needs escaping really is escaped or parsed correctly.

Differential Revision: https://phab.enlightenment.org/D7516
2019-02-12 11:19:28 +01:00
Marcel Hollerbach c3d69f66a6 efl_task: remove env from this object
the env operations are moved to the efl.core.env objects, which can be
used there.

Differential Revision: https://phab.enlightenment.org/D7514
2019-02-12 11:19:28 +01:00
Marcel Hollerbach 2373d5db5b ecore: here comes a env object
the env object can be used to alter and edit the content of environment
variables. Additionally, the class efl.core.env can be used to to setup
a not applied set of environment variables, which then can be applied
later (in the future) to set it directly to a spawned process for
example, or as a general key/data storage. A efl.core.env object can
also be forked off, which makes it easy to customize predefined objects.

ref T7514

Differential Revision: https://phab.enlightenment.org/D7510
2019-02-12 11:19:28 +01:00
Lauro Moura 9e3707f0b4 efl: Change non required constructors to @optional.
Summary:
These constructors aren't checked for in the finalize step of the
initialization and may be given the @optional tag.

For C# this means they can be ommitted from the constructor call.

This also adds `Efl.Ui.View.model` as a constructor of
`Efl.Composite_Model` as the finalizer checks for it.

Fixes T7673

Test Plan: make check

Reviewers: segfaultxavi, zmike, bu5hm4n, cedric, felipealmeida

Reviewed By: segfaultxavi, cedric

Tags: #efl, #do_not_merge

Maniphest Tasks: T7673

Differential Revision: https://phab.enlightenment.org/D7855
2019-02-07 18:05:00 +01:00
SangHyeon Jade Lee 5525c89a3d efl_model : rename all efl_model based classes.
Summary:
As the result of discussion in T7458,
we need to rename all efl_model based classes with efl_XXX_Model sequence.
I've run few vote for this, see V42, V43
few classes are totally renamed as our consideration of misnaming.

| Efl.Model_Loop | Efl.Loop_Model |
| Efl.Model_Item | Efl.Generic_Model |
| Efl.Model_Container | Efl.Container_Model |
| Efl.Model_Container_Item | Efl.Container_Model_Item |
| Efl.Model_Composite | Efl.Composite_Model |
| Efl.Model_Composite_Boolean | Efl.Boolean_Model |
| Efl.Model_Composite_Boolean_Chlidren | Efl.Boolean_Model_Item |
| Efl.Model_Composite_Selection | Efl.Select_Model |
| Efl.Model_Composite_Selection_Chlidren | Efl.Select_Model_Item |
| Efl.Model_View | Efl.View_Model |
| Eio.Model | Efl.Io.Model |
| Efl.Ui.Model_State | Efl.Ui.State_Model |
| Efl.Ui.Model_Size | Efl.Ui.Size_Model |
| Efl.Ui.Model_Exact | Efl.Ui.Exact_Model |
| Efl.Ui.Model_Average | Efl.Ui.Average_Model |
| Efl.Ui.Model_Homogeneous | Efl.Ui.Homogeneous_Model |

I worried about Efl.Io.Model changes, cause it is widely used,
but as I tested, there is no issue found yet.

Eldbus.Model also may can changed Efl.Dbus.Model,
but I cannot found any class who using Efl.Dbus namespace,
so I left it future work.

Test Plan:
Run the Make Test,
it works well except Efl test about selection.
there are class inheritance problem exist in select_model,
I reported it and will fix it in another patch.

Reviewers: cedric, felipealmeida, woohyun, Hermet

Reviewed By: cedric

Subscribers: lauromoura

Tags: #efl, #do_not_merge

Differential Revision: https://phab.enlightenment.org/D7533
2019-01-31 14:59:37 +09:00
Cedric BAIL 1dadeac05e ecore: add an index property on Efl.Model_Composite and handle children_slice_get.
This will enable inheriting class to not have to implement as much code. This patch
fix also all class that use Efl.Model_Composite and its test.

Reviewed-by: SangHyeon Jade Lee <sh10233.lee@samsung.com>
Differential Revision: https://phab.enlightenment.org/D7654
2019-01-30 12:06:11 -08:00
Xavi Artigas bd5d923c45 docs: Add links to Efl.Loop_Consumer 2019-01-30 16:16:37 +01:00
Hosang Kim 58c9f56885 ecore: check fcntl return.
Summary: Found by svace

Reviewers: Jaehyun_Cho, woohyun, Hermet

Reviewed By: Jaehyun_Cho

Subscribers: cedric, #reviewers, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D7808
2019-01-29 19:30:45 +09:00
Marcel Hollerbach 6dd861fe32 efl_model_loop: make it abstract
Summary:
there is no user, additionally, there is undefined API on this object,
thus make it abstract. This resolves the missing APIs of efl_model_loop.

ref T5719
Depends on D7790

Reviewers: cedric

Reviewed By: cedric

Subscribers: cedric, #reviewers, #committers

Tags: #efl

Maniphest Tasks: T5719

Differential Revision: https://phab.enlightenment.org/D7791
2019-01-28 13:08:51 -05:00
Xavi Artigas c55299ca51 docs: Fix assorted typos in legacy documentation
Samsung reported a long list of typos in our legacy docs, this fixes them.
2019-01-28 13:14:20 +01:00
WooHyun Jung 0b0ff33f2f efl_task: remove efl.io.* interfaces
Remove efl.io.* interfaces from efl_task, and make other extended
classes properly.

ref T7657

Reviewed-by: Marcel Hollerbach <marcel-hollerbach@t-online.de>
Reviewed-by: Cedric BAIL <cedric.bail@free.fr>
Reviewed-by: Derek Foreman <derekf@osg.samsung.com>
Differential Revision: https://phab.enlightenment.org/D7747
2019-01-25 13:47:21 -06:00
Cedric BAIL 445cfab193 ecore: fix memory leak when shutding down the application.
Reviewed-by: Xavi Artigas <xavierartigas@yahoo.es>
Differential Revision: https://phab.enlightenment.org/D7653
2019-01-23 12:07:19 -08:00
Xavi Artigas 87e6e4e60a Efl.Loop.Timer.interval is a constructor property
Summary:
If you don't set the interval during construction, construction fails
so there's no chance to set it later.
We either change that behavior (is it really needed? can't we just set some
default during construction and override it later?) or properly mark this
property as a construction-time property with this patch.

Test Plan: Nothing changes, this will only have effect once bindings start using it.

Reviewers: cedric, zmike, bu5hm4n, q66

Reviewed By: cedric

Subscribers: #reviewers, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D7691
2019-01-19 18:04:14 +01:00
Marcel Hollerbach 3b6a9152c1 efl: convert all abstracts to the new eolian syntax
ref T7459

Reviewed-by: Daniel Kolesa <daniel@octaforge.org>
Reviewed-by: Xavi Artigas <xavierartigas@yahoo.es>
Differential Revision: https://phab.enlightenment.org/D7686
2019-01-18 16:31:30 +01:00
Marcel Hollerbach 4fc83c9cbb efl: convert all mixins to new eolian syntax
ref T7459

Reviewed-by: Daniel Kolesa <daniel@octaforge.org>
Reviewed-by: Xavi Artigas <xavierartigas@yahoo.es>
Differential Revision: https://phab.enlightenment.org/D7685
2019-01-18 16:31:28 +01:00
Marcel Hollerbach 34efdfb1b1 efl: convert all classes to the new eolian syntax
ref T7459

Reviewed-by: Daniel Kolesa <daniel@octaforge.org>
Reviewed-by: Xavi Artigas <xavierartigas@yahoo.es>
Differential Revision: https://phab.enlightenment.org/D7684
2019-01-18 16:31:26 +01:00
Xavi Artigas 1534f50be0 Make Efl.Ui.Closer an interface instead of mixin
Summary:
It is a mixin only because of the setter method for the "closed" property,
otherwise, it would be a pure interface.
Nobody is setting that property, so let's just remove the setter (leaving only
the getter) and make this class an interface.
This should clear the scenario for languages currently having issues with
mixins (like C#).

Related to T7601.

Test Plan: Nothing changes. Make check and examples still work.

Reviewers: zmike, bu5hm4n, cedric

Reviewed By: cedric

Subscribers: cedric, #reviewers, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D7570
2019-01-17 13:59:57 -05:00
Mike Blumenkrantz 5ab4784bbd efl_app: add "standby" event
this event is called on the app object when all windows have been destroyed
so that the app can decide to take further action, e.g., doing a deep clean of
cache or flushing configuration

@feature
ref T5494

Reviewed-by: Cedric BAIL <cedric.bail@free.fr>
Differential Revision: https://phab.enlightenment.org/D7593
2019-01-16 15:58:27 -08:00
Cedric BAIL 563f91eaf9 ecore: remove data parameters of Efl.Loop_Consumer.promise_new to reduce the risk of inadvertently using the wrong data.
If you need data, use a efl_future_then as done in every case here to get the same feature.

Reviewed-by: Mike Blumenkrantz <michael.blumenkrantz@gmail.com>
Differential Revision: https://phab.enlightenment.org/D7577
2019-01-16 14:33:26 -08:00
Cedric BAIL d67a7df9ca Revert "fix crashes created by "make efl_loop_promise_new a function""
This serie of patch didn't address the core problem in the design of the
ownership of eina_promise_data_{set/get} usage. It is also redundant with
other infrastructure in eina_promise and so not necessary completely.

This reverts commit de2ec0559b.

Reviewed-by: Mike Blumenkrantz <michael.blumenkrantz@gmail.com>
Differential Revision: https://phab.enlightenment.org/D7573
2019-01-16 14:33:18 -08:00
Cedric BAIL 4e4176c84c ecore: make Efl.Loop_Consumer.promise_new an @const function.
Reviewed-by: Xavi Artigas <xavierartigas@yahoo.es>
Reviewed-by: Mike Blumenkrantz <michael.blumenkrantz@gmail.com>
Differential Revision: https://phab.enlightenment.org/D7544
2019-01-16 14:33:13 -08:00
Marcel Hollerbach afa5368f31 ecore: make efl_loop_consumer abstract
There is no point in having the object instancable. However, in order to
support bindings, we need to ensure that every abstract does have only
abstracts as inherit-parents, thus making this class abstract.

ref T7240

Reviewed-by: Cedric BAIL <cedric.bail@free.fr>
Differential Revision: https://phab.enlightenment.org/D7599
2019-01-15 17:37:39 +01:00
Marcel Hollerbach 3ddd577fb0 efl: refactor all mixins
Differential Revision: https://phab.enlightenment.org/D7585
2019-01-11 12:37:27 +01:00
Marcel Hollerbach abf3fcf261 efl_loop: remove FIXME that is done
Summary:
ref T7514

Depends on D7508

Reviewers: zmike, segfaultxavi, cedric

Reviewed By: zmike

Subscribers: #reviewers, #committers

Tags: #efl

Maniphest Tasks: T7514

Differential Revision: https://phab.enlightenment.org/D7509
2019-01-10 13:04:31 +01:00
Marcel Hollerbach a570d6b25c efl_task: remove NOP / unimplement funtions
Summary:
this makes efl_task abstract which ensures that it cannot be
instanciated. Further more, functions that needs to be implement are now
pure_virtual.

ref T7514

Reviewers: zmike, segfaultxavi, cedric

Reviewed By: segfaultxavi, cedric

Subscribers: #reviewers, #committers

Tags: #efl

Maniphest Tasks: T7514

Differential Revision: https://phab.enlightenment.org/D7508
2019-01-10 13:01:26 +01:00
Wonki Kim d48ec2679b ecore: modify documentation for ecore_thread_wait
Summary: this patch modify ecore_thread_wait documentation to use it only main llop explicitly.

Reviewers: segfaultxavi

Reviewed By: segfaultxavi

Subscribers: cedric, #reviewers, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D7225
2019-01-09 13:08:43 -05:00
Hermet Park 77bb3fb986 ecore thread: remove an unused variable. 2019-01-08 19:57:59 +09:00
Hermet Park d95f9dc518 ecore model_view: remove unused compile warning. 2019-01-08 19:57:14 +09:00
Marcel Hollerbach 93baf085ec meson: and another missing file in ecore
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
2019-01-04 12:07:01 +01:00
Cedric BAIL 83e3b25d80 ecore: define behavior when no getter/setter callback function is defined for ModelView property logic.
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
2019-01-02 13:39:29 -08:00
Cedric BAIL 29fcdd8a4b ecore: add an helper class Efl.Model_View
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
2019-01-02 13:39:25 -08:00
Cedric BAIL 07e60713fe ecore: correct object constness and documentation of future_resolved and future_rejected functions.
Reviewed-by: Xavi Artigas <xavierartigas@yahoo.es>
Differential Revision: https://phab.enlightenment.org/D7486
2019-01-02 13:39:23 -08:00
Cedric BAIL df2629a1c9 ecore: allow for not specifying any static string in Efl.Model.properties.get helper.
Reviewed-by: Xavi Artigas <xavierartigas@yahoo.es>
Differential Revision: https://phab.enlightenment.org/D7485
2019-01-02 13:39:21 -08:00
Cedric BAIL d11e0b036e ecore: don't forget to initialize structure.
Reviewed-by: Marcel Hollerbach <marcel-hollerbach@t-online.de>
Differential Revision: https://phab.enlightenment.org/D7484
2019-01-02 13:39:19 -08:00
Cedric BAIL fff0f68a01 ecore: make sure that events are being forwarded first.
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
2019-01-02 13:39:17 -08:00
Lauro Moura 28c4380eaa ecore: Fix promise cb signature
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
2019-01-02 10:39:11 -08:00
Carsten Haitzler 318d16846f Revert "Revert "ecore: make efl_loop_promise_new a function of Efl.Loop_Consumer.""
This reverts commit 42e886d8d6.
2018-12-26 17:50:09 +00:00
Carsten Haitzler de2ec0559b fix crashes created by "make efl_loop_promise_new a function"
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.
2018-12-26 17:49:34 +00:00
Marcel Hollerbach f56cf318e5 build: there have been missing build files
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.
2018-12-26 12:31:19 +01:00
Marcel Hollerbach 42e886d8d6 Revert "ecore: make efl_loop_promise_new a function of Efl.Loop_Consumer."
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.
2018-12-26 12:31:08 +01:00
Cedric BAIL 166d5e4767 ecore: fix build by having proper parameters order. 2018-12-20 14:07:19 -08:00
Cedric BAIL 9b5155c9f1 ecore: make efl_loop_promise_new a function of Efl.Loop_Consumer.
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
2018-12-20 12:42:34 -08:00
Marcel Hollerbach e43f090265 cmake: remove!
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
2018-12-20 20:07:26 +01:00
Marcel Hollerbach 20ddd4c679 efl_app: introduce app_main for getting the app object
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
2018-12-20 12:56:54 +01:00
Jérémy Zurcher 8a617fda97 silence most left over compiler warnings
Summary: silence -Wshadow -Wunused-variable -Wunused-parameter

Reviewers: segfaultxavi

Reviewed By: segfaultxavi

Subscribers: segfaultxavi, cedric, #reviewers, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D7473
2018-12-18 13:08:01 +01:00
Marcel Hollerbach 500a36ba3d meson: add inital support for windows compilation
Differential Revision: https://phab.enlightenment.org/D7416
2018-12-07 13:05:31 +01:00
Cedric BAIL 6b22e6e33d ecore: use efl_future_then to simplify the code logic and reduce potential bugs.
Summary: Depends on D7380

Reviewers: segfaultxavi, felipealmeida, SanghyeonLee, vitor.sousa, bu5hm4n

Reviewed By: bu5hm4n

Subscribers: barbieri, #reviewers, #committers

Tags: #efl

Maniphest Tasks: T7472

Differential Revision: https://phab.enlightenment.org/D7381
2018-12-07 12:42:31 +01:00
Cedric BAIL 436c5b8523 ecore: remove unecessary intermediate variable.
Summary: Depends on D7379

Reviewers: felipealmeida, segfaultxavi, vitor.sousa, SanghyeonLee, bu5hm4n

Reviewed By: segfaultxavi, vitor.sousa

Subscribers: #reviewers, #committers

Tags: #efl

Maniphest Tasks: T7472

Differential Revision: https://phab.enlightenment.org/D7380
2018-12-07 12:28:00 +01:00
Cedric BAIL 33c00de365 eo: make efl_future_then have a data pointer in addition of the object pointer.
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
2018-12-07 12:23:11 +01:00
Hermet Park a8244ee642 doc: remove since_tizen.
This tag must be valid for only tizen world.
2018-12-06 14:41:51 +09:00
Carsten Haitzler 20efb01aed efl model loop - fix unused param (add EINA_UNUSED) - warn 2018-12-04 08:30:09 +00:00
Marcel Hollerbach c1dd57d210 meson: use eolian_gen with -S
this ensures that eolian does not parse installed .eo files

Differential Revision: https://phab.enlightenment.org/D7405
2018-12-03 19:00:26 +01:00
Cedric BAIL 2becd0feb3 ecore: simplify code by using helper that build future directly.
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
2018-11-30 14:58:26 -08:00
Cedric BAIL 31eab2cff9 ecore: add an helper on Efl.Loop_Consumer to build resolved and rejected future more easily.
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
2018-11-30 14:58:14 -08:00
Larry Lira 6b0c85cb0d Efl.Ui.List.View: fixed MVVM life-cycle
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.
2018-11-30 16:56:47 -02:00
Vitor Sousa 3f2560a821 ecore: fix bugs from composite models
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.
2018-11-29 15:36:17 -08:00
Vitor Sousa c4af12164f ecore: forward internal Efl.Model events to Efl.Model.Composite 2018-11-29 15:36:17 -08:00
Vitor Sousa efab1e03b6 ecore: fix efl_model_container_private.h include guards 2018-11-29 15:36:17 -08:00
Xavi Artigas 05682eed7d eo-docs: Remove Doxygen tags from efl*.eo files
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
2018-11-28 13:33:46 +01:00
Cedric BAIL 5de51f84fb eo: rename efl_future_Eina_FutureXXX_then in efl_future_then as this has been available for some time.
Reviewed-by: Vitor Sousa da Silva <vitorsousa@expertisesolutions.com.br>
Differential Revision: https://phab.enlightenment.org/D7327
2018-11-23 11:39:43 -08:00
Cedric BAIL 137c5a0d83 ecore: switch all Efl.Model to inherit first from Efl.Model_Loop.
Reviewed-by: Vitor Sousa da Silva <vitorsousa@expertisesolutions.com.br>
Differential Revision: https://phab.enlightenment.org/D7324
2018-11-23 11:39:37 -08:00
Cedric BAIL 38865a688a ecore,efl: add Efl.Model.property_get helper which will suceed once when a property finally has a value.
Reviewed-by: Vitor Sousa da Silva <vitorsousa@expertisesolutions.com.br>
Differential Revision: https://phab.enlightenment.org/D7323
2018-11-23 11:39:35 -08:00
Cedric BAIL d4d44d76f3 efl: make Efl.Model.properties_get return an Iterator<string>.
Reviewed-by: Vitor Sousa da Silva <vitorsousa@expertisesolutions.com.br>
Differential Revision: https://phab.enlightenment.org/D7289
2018-11-23 10:13:58 -08:00
Daniel Kolesa c8e0a1d2e2 eolian: implement new syntax for inheritance
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.
2018-11-23 13:57:07 +01:00
Jaehyun Cho f3eb8d6441 efl_interpolator: rename subclasses of Efl.Interpolator
Subclasses of Efl.Interpolator are renamed intuitively from backward
order to forward order.
2018-11-23 21:44:34 +09:00
Jaehyun Cho 6cc7c1b830 efl_interpolator: change Efl.Interpolator class to interface
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.
2018-11-23 21:43:54 +09:00
Lauro Moura 021513923d eo: Avoid namespace clashes.
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
2018-11-13 09:48:14 +01:00
Carsten Haitzler 665a75378f xxx - fix eina_future_then calls to pass sotrage val - fix warns 2018-11-09 11:43:59 +00:00
Carsten Haitzler f80b8979ba ecore thread - fix warn - callback prototypes to match correct type
we pass void *'s to these cb's not int's or thread handled (whatever
typt they may be). so cast inside func not use wrong type.
2018-11-09 11:43:59 +00:00
Yeongjong Lee 9de082eb83 ecore: remove duplicated conditions
Summary: The macro already checks eina_main_loop_is() when DEBUG_THREADS is enabled.

Test Plan: make

Reviewers: segfaultxavi, ManMower, Hermet, bu5hm4n

Reviewed By: bu5hm4n

Subscribers: bu5hm4n, cedric, #reviewers, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D7183
2018-10-26 19:25:09 +09:00
Daniel Kolesa 5a3d79d383 meson: add eolian custom dependencies support
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.
2018-10-24 12:02:55 +02:00
Marcel Hollerbach 347dc66ba9 meson: unify system properties
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
2018-10-05 13:40:29 +02:00
Marcel Hollerbach 46d464e5bf here comes meson
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
2018-10-02 17:22:50 +02:00
junsu choi 6f339cdc2a ecore_timer: Add docs for ecore_timer legacy functions
Summary:
Find docs of missing legacy functions
from 47cdbe3 and add them.

Test Plan: make doc

Reviewers: cedric, Hermet, segfaultxavi

Reviewed By: segfaultxavi

Subscribers: #reviewers, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D7118
2018-09-27 11:14:04 +02:00
Yeongjong Lee 5e388350f0 efl_exe: check fcntl return
Summary: Found by coverity

Subscribers: cedric, #reviewers, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D7110
2018-09-27 13:58:08 +09:00
Taehyub Kim d8182638f2 ecore_main: fix the invalid return value
Summary:
fix the invalid return value
@fix

Reviewers: Jaehyun_Cho, raster, Hermet

Reviewed By: Hermet

Subscribers: cedric, #reviewers, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D7080
2018-09-21 14:46:50 +09:00
Derek Foreman 4dc1e8273d ecore: Add new way to register animators
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
2018-09-18 09:42:38 -05:00
Derek Foreman 448c7ca2ce ecore_anim: Move struct Ecore_Animator to private header
Summary:
We're going to use this in ecore_evas shortly.

Depends on D7039

Reviewers: devilhorns

Reviewed By: devilhorns

Subscribers: cedric, #reviewers, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D7040
2018-09-18 09:42:34 -05:00
Shinwoo Kim ad97989b28 ecore_event: initialize uninitialized variable
Summary:
The following commit (1) made an abort (2)

(1) commit d1e4c6bab8
Author: Jean Guyomarc'h <jean@guyomarch.bzh>
Date:   Mon Aug 27 12:04:35 2018 +0900

    ecore: fix built-in event types generation

(2) abort
/lib/x86_64-linux-gnu/libc.so.6(+0x777e5)
/lib/x86_64-linux-gnu/libc.so.6(+0x8037a)
/lib/x86_64-linux-gnu/libc.so.6(cfree+0x4c)
/home/kimcinoo/install/lib/libecore.so.1(+0x237d7)
/home/kimcinoo/install/lib/libeo.so.1(efl_destructor+0x64)
/home/kimcinoo/install/lib/libeo.so.1(+0x18029)
/home/kimcinoo/install/lib/libeo.so.1(efl_unref+0x44c)
/home/kimcinoo/install/lib/libecore.so.1(+0x201f2)
/home/kimcinoo/install/lib/libecore.so.1(ecore_shutdown+0x145)
/home/kimcinoo/Upstream/efl/src/tests/ecore/.libs/lt-efl_app_suite(+0xb85d)
/home/kimcinoo/install/lib/libcheck.so.0(srunner_run_tagged+0xa13)
/home/kimcinoo/Upstream/efl/src/tests/ecore/.libs/lt-efl_app_suite(+0xead9)
/home/kimcinoo/Upstream/efl/src/tests/ecore/.libs/lt-efl_app_suite(+0x4ade)
/lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xf0)
/home/kimcinoo/Upstream/efl/src/tests/ecore/.libs/lt-efl_app_suite

And following commit (3) fixed the abort.

(3) commit 3f306491a3
Author: Yeongjong Lee <cleanlyj@naver.com>
Date:   Mon Sep 3 15:55:13 2018 +0000

    ecore_event: fix ecore event handler iterator range

The above commit fixed the abort though, we could access uninitialized memory
and make another abort again. This would prevent such unwanted case.

Reviewers: Hermet, YOhoho, bu5hm4n, netstar

Reviewed By: netstar

Subscribers: netstar, cedric, #reviewers, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D6970
2018-09-04 11:54:17 +01:00
Yeongjong Lee 3f306491a3 ecore_event: fix ecore event handler iterator range
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
2018-09-03 18:13:32 +02:00
Yeongjong Lee 02d83ebcd4 docs: Fix typos in API reference doc and comments.
Reviewers: Hermet, segfaultxavi

Reviewed By: Hermet, segfaultxavi

Subscribers: cedric, #reviewers, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D6948
2018-08-31 17:45:31 +09:00
Myoungwoon Roy, Kim e06a9b6acf docs: Fix typos and some wrong expressions in API reference doc.
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
2018-08-30 14:01:21 +09:00
Mike Blumenkrantz 1d7fb47f04 efl/timer: correctly handle timer freeze during construction
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
2018-08-27 12:09:49 +09:00
Jean Guyomarc'h d1e4c6bab8 ecore: fix built-in event types generation
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
2018-08-27 12:04:36 +09:00
Yeongjong Lee 15cc9a65aa ecore_pipe: remove null check condition and fix segfualt on Windows
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
2018-08-17 12:42:35 -04:00
Mike Blumenkrantz 8e6d66450d ecore/main: only update loop_time during loop iteration if the change is monotonic
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
2018-08-14 17:09:32 -04:00
Hosang Kim a92274f811 ecore: fix that timers are not called in the order they were registered.
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
2018-08-02 09:14:15 -04:00
Mike Blumenkrantz 8f05d03639 ecore/signal: use a volatile int to prevent further SIGPIPE during shutdown
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
2018-07-23 17:30:56 -04:00
Mike Blumenkrantz bf92738a57 ecore/signal: delete signal pipe after unsetting signal handlers
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
2018-07-23 17:30:54 -04:00
Mike Blumenkrantz 44bce025fa ecore: remove exit_signal_received conditional from windows build
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
2018-07-20 15:21:28 -04:00
Alastair Poole b00f0e0630 ecore_main: silence warning when compiling.
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
2018-07-19 15:53:49 +09:00
Mike Blumenkrantz 6405a5a68c ecore: immediately block animator ticking upon receiving an exit signal
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
2018-07-13 15:40:55 -04:00
Mike Blumenkrantz dab2a9ca68 ecore/animator: break out _ecore_animator_flush() from tick function
Summary: no functional changes

Reviewers: ManMower

Reviewed By: ManMower

Subscribers: cedric, #committers

Tags: #efl_main_loop

Differential Revision: https://phab.enlightenment.org/D6589
2018-07-13 15:40:50 -04:00
Xavi Artigas f21fd7e2fd ecore: fix order of signal fd shutdown
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
2018-07-12 09:17:26 -04:00
Derek Foreman 51d1360a18 ecore_anim: Simplify timeline terminal condition
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
2018-06-28 13:12:04 -05:00
Mike Blumenkrantz b455617500 ecore/thread: flush main loop threads during ecore_thread_wait()
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
2018-06-28 18:08:45 +02:00
Mike Blumenkrantz 04d209e238 ecore/thread: flush main loop threads while waiting during shutdown
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
2018-06-28 18:08:45 +02:00
Mike Blumenkrantz 2ee83cc28d ecore/thread: increase loop iterations when waiting during shutdown
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
2018-06-28 18:08:45 +02:00
Mike Blumenkrantz 6eaa57852a ecore/thread: greatly reduce usleep time during shutdown loop
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
2018-06-25 17:27:18 -04:00
Mike Blumenkrantz 1dc706a3dd ecore/thread: track "no_queue" threads
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
2018-06-25 16:54:24 -04:00
Mike Blumenkrantz 8d2f5d7a7d Revert "ecore/thread: track "no_queue" threads"
This reverts commit 1e47db6a71.

somehow arc managed to land an old revision of this which was not consistent
with the final version of D6354
2018-06-25 16:53:40 -04:00
Mike Blumenkrantz 1e47db6a71 ecore/thread: track "no_queue" threads
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
2018-06-25 15:14:31 -04:00
Mike Blumenkrantz 198016d503 ecore: reformat ecore_thread.c
no functional changes

Differential Revision: https://phab.enlightenment.org/D6352
2018-06-25 15:14:30 -04:00
Thierry HUCHARD 65da58726f ecore/main: fix build with --enable-g-main-loop
this resolves compiler errors with this option which resulted from refactoring

fix T7011
2018-06-22 17:42:22 -04:00
Mike Blumenkrantz ef538cd1ed ecore/glib: add #ifdef guards for newly added includes
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
2018-06-22 15:26:44 -04:00
Mike Blumenkrantz 83124559cc ecore: call eina_debug_fork_reset() in fork reset function
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
2018-06-19 13:55:36 -04:00
Zbigniew Kempczyński 1adb73cef8 ecore - handle G_IO_ERR conditions for net sockets
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
2018-06-17 15:59:02 +09:00
Derek Foreman 07d7ae4657 ecore: Use poller instead of animator for mem stats
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
2018-06-06 12:41:05 -05:00
Cedric BAIL b59911d5af ecore: during shutdown their is no need to delay anything. 2018-05-24 16:02:21 -07:00
Cedric BAIL c49d293915 ecore: allow for NULL file handler request. 2018-05-24 16:02:20 -07:00
Cedric BAIL f7b08c4537 ecore: properly cleanup variable on shutdown, so that cycling another init doesn't crash. 2018-05-24 16:02:20 -07:00
Cedric Bail a16d127997 ecore: because fd_handler do not have the main loop as parent, the main loop can die before them. 2018-05-24 16:02:19 -07:00
Cedric Bail 6bb450d7ee ecore: first invalidate the loop and its children, then destroy all the object capability.
Differential Revision: https://phab.enlightenment.org/D6089
2018-05-24 16:02:18 -07:00
Cedric BAIL 93893def9f ecore: properly handle shutdown of Efl.Loop children by using invalidate.
Differential Revision: https://phab.enlightenment.org/D6077
2018-05-24 16:02:18 -07:00
Cedric BAIL 23281bc54a ecore: disable signal during shutdown.
Differential Revision: https://phab.enlightenment.org/D6076
2018-05-24 16:02:18 -07:00
Cedric BAIL 266dabc096 ecore: force close during invalidate of Efl.Io.Buffered_Stream.
Differential Revision: https://phab.enlightenment.org/D6074
2018-05-24 16:02:18 -07:00
Xavi Artigas 0f47f53f57 efl: rename Efl.Task.* -> Efl.Task_* 2018-05-23 17:33:47 +02:00
Xavi Artigas 4396687b6c efl: rename Efl.Exe.* -> Efl.Exe_* 2018-05-23 17:33:47 +02:00
Xavi Artigas 35bbedc96f efl: Add missing event types
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
2018-05-19 01:42:26 +02:00
Daniel Kolesa 577c00789a eolian: second batch of unused import removals
This fixes all remaining occurences introduced by false negatives
in 6bcd70f01d. The rest was already
fixed in 6be3809c04.
2018-05-13 18:13:12 +02:00
Daniel Kolesa 6be3809c04 eolian: first batch of unused import removals
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.
2018-05-13 17:28:47 +02:00
Carsten Haitzler 9cf5b97a8a ecore - dont rely on commons merge for func ptr
use a proper extern delcaration to do this not a extern func ptr.
fixes compile errors with lto on.
2018-05-09 23:58:48 +09:00
Daniel Kolesa f58bdbf23a eolian: switch Eina.Future instances to future<T> 2018-05-03 17:14:39 +02:00
Cedric BAIL cdbbaede7e efl: remove old Efl_Future, Efl_Promise. 2018-05-01 10:39:01 -07:00
Cedric BAIL 894c2e6c8c ecore: remove BETA thread API integration with old Efl_Future. 2018-05-01 10:39:01 -07:00
Cedric BAIL 33fd77e9e4 ecore: move close_on_destructor to close_on_invalidate as that describe the behavior best.
Fix all use to correctly behave on invalidate.
2018-05-01 10:39:01 -07:00
Cedric BAIL 193149deb8 ecore: apply the same rules as set on the inner_io on the read and write pipe. 2018-05-01 10:39:01 -07:00
Cedric BAIL 8e107c991c efl: update Efl.Model to properly propagate EFL_MODEL_EVENT_CHILDREN_COUNT_CHANGED. 2018-05-01 10:39:01 -07:00
Cedric BAIL af9b5f2f85 ecore: efl_model_list_value_get will throw error when asked for out of range value. 2018-05-01 10:39:01 -07:00
Cedric BAIL 119cba7d1c ecore: make sure that we only install and expose EFL unified API we intend to. 2018-05-01 10:39:01 -07:00
Cedric BAIL 57953e953b ecore: ecore_event_message is not an Efl unified API. 2018-05-01 10:39:01 -07:00
Cedric BAIL 7058312809 ecore: ecore_exe.eo is no longer a Eo unified API. 2018-05-01 10:39:01 -07:00
Cedric BAIL 3e648c475f ecore: when relying on parent relationship for lifecycle, we should not use efl_del in the destructor. 2018-05-01 10:39:01 -07:00
Cedric BAIL 2306a3b090 ecore: logically do the disconnection from the main loop API during invalidate. 2018-05-01 10:39:01 -07:00
Cedric BAIL d895527bd5 ecore: optimize efl_model_list_value_get by using eina_list_nth_list. 2018-05-01 10:39:01 -07:00
Cedric BAIL 9e2493760b ecore: move efl_model_list_value_get to be an internal function. 2018-04-30 14:21:12 -07:00
Cedric BAIL 7019b8857b ecore: don't artificially block fonctionnality for nested loop.
We do have nested loop when manually calling iterate and was used
in legacy code that got broken with this change.
2018-04-30 14:21:11 -07:00
Cedric BAIL 725c8add86 ecore: move efl_loop_message_process to ecore_internal.h to allow other EFL component to use it. 2018-04-30 14:21:11 -07:00
Cedric Bail d7fe2d5608 ecore: refactor and migrate efl.model.container to the new efl.model API. 2018-04-30 14:21:11 -07:00
Cedric Bail 741a6c4126 ecore: refactor and migrate efl.model.composite.selection to the new efl.model API. 2018-04-30 14:21:11 -07:00
Cedric Bail 9211fd73a7 ecore: refactor and migrate efl.model.composite.boolean to the new efl.model API. 2018-04-30 14:21:11 -07:00
Cedric Bail 2049c44c78 ecore: convert efl.model.item to the new efl.model API. 2018-04-30 14:21:11 -07:00
Cedric Bail 0ce9fc5db0 ecore: add a class to factorize efl.model.composite. 2018-04-30 14:21:11 -07:00
Xavi Artigas 566a36dc99 Efl.Model_* (from Efl.Model.*)
Ref https://phab.enlightenment.org/T6847

Reviewed-by: Cedric Bail <cedric@osg.samsung.com>
2018-04-24 09:05:49 -07:00
Xavi Artigas 23c303f87b Efl.Loop_* (from Efl.Loop.*)
Ref https://phab.enlightenment.org/T6847

Reviewed-by: Cedric Bail <cedric@osg.samsung.com>
2018-04-24 09:04:03 -07:00
Xavi Artigas a907523545 Efl.Interpolator_* (from Efl.Interpolator.*)
Ref https://phab.enlightenment.org/T6847

Reviewed-by: Cedric Bail <cedric@osg.samsung.com>
2018-04-24 09:04:02 -07:00
Xavi Artigas 196fdaa48c Efl.Io.*_Fd (from Efl.Io.*.Fd)
Ref https://phab.enlightenment.org/T6847

Reviewed-by: Cedric Bail <cedric@osg.samsung.com>
2018-04-24 09:03:41 -07:00
Carsten Haitzler 4917910b49 ecore pipe - fix windows to not segv on zero data in pipe there 2018-04-24 15:13:57 +09:00
Daniel Zaoui 9cbba2d0b4 Fix exit code setting for legacy applications
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.
2018-04-22 15:44:41 +03:00
Hermet Park fd85423ae3 ecore: fix a potential memory leak.
if the func argument is null, allocated memory won't be freed properly.
return it as soon as possible.

@fix
2018-04-20 13:29:46 +09:00
Daniel Kolesa fcae7cab27 eolian gen: enable constness generation on property getter impls
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.
2018-04-17 20:31:55 +02:00
Mike Blumenkrantz 9dcf6f71d0 ecore: further reduce pipe wait time during shutdown.
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>
2018-04-16 10:57:32 -07:00
Hermet Park 3a4baabaaa ecore: fix a potential memory leak.
if the func argument is null, allocated memory won't be freed properly.
return it as soon as possible.

@fix
2018-04-09 11:46:13 +09:00
Mike Blumenkrantz e0c8ab4c79 ecore: reduce pipe wait time during shutdown
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>
2018-04-06 10:09:00 -07:00
Mike Blumenkrantz 0fddfe199f ecore: poll the thread pipe twice during shutdown
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>
2018-04-06 10:08:57 -07:00
Cedric Bail def3bb6eec ecore: rely on object being destroyed on parent invalidate. 2018-04-05 11:52:12 -07:00
Cedric Bail a9fbaf16d3 ecore: pipe fd can become invalid while being processed. 2018-04-05 11:52:12 -07:00
Shinwoo Kim 3cd2243028 Fix static analysis result
[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.
2018-04-05 19:40:57 +09:00
Carsten Haitzler b90cd2f683 efl threadio - make call and call sync func proto same as efl events
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.
2018-04-05 18:52:57 +09:00
Carsten Haitzler 78d7fded5d efl exe - map some "well known" exit codes to specific errnos 2018-04-05 18:52:57 +09:00
Carsten Haitzler 6fbf6d6c67 efl task - support flag to ignore exit code errors for future resolve 2018-04-05 18:52:57 +09:00
Carsten Haitzler 6e308e6039 ecore - thread - document thread max limits more sensibly
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.
2018-04-05 18:52:57 +09:00
Hermet Park ec7bcc79e7 ecore: resolve the possible use of invalid handle.
Signed-Off-By: JongMin Lee<jm105.lee@samsung.com>
2018-04-05 15:15:34 +09:00
Carsten Haitzler 308e9586dd ecore - efl exe - use better exit codes
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.
2018-03-26 23:17:56 +09:00
Carsten Haitzler 0a3e7c05e4 ecore - efl exe + thread - error print if deleted before task is done
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.
2018-03-26 23:17:56 +09:00
Cedric BAIL bc18b7e7ad efl: replace efl_del with efl_unref for cases where no parent exists
Signed-off-by: Mike Blumenkrantz <zmike@osg.samsung.com>
2018-03-20 17:20:57 -07:00
Cedric BAIL 4c4177ac20 efl: use efl_add_ref to create objects which have no parent
Signed-off-by: Mike Blumenkrantz <zmike@osg.samsung.com>
2018-03-20 17:20:56 -07:00
Carsten Haitzler 6391a13558 efl.task - move to returning future insead of bool + exit event
title says it all...
2018-03-20 20:56:46 +09:00
Cedric Bail c3c5620c1c ecore: the main loop has no parent and only one ref, let's properly create it. 2018-03-19 15:33:11 -07:00
Cedric BAIL 950e2c13bb efl_promise: avoid invalid calls when unsetting parent
if promise has no parent then the promise's loop is null

Signed-off-by: Mike Blumenkrantz <zmike@osg.samsung.com>
2018-03-13 15:14:50 -07:00
Jean Guyomarc'h 363ea8676e efl_threadio: always return a value to silence warning 2018-03-13 18:38:46 +01:00
Jean Guyomarc'h 1168bd0608 efl_loop: fix exit code of the loop
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.
2018-03-13 18:34:37 +01:00
Carsten Haitzler 249f50098f ecore - efl thread - remove unused local vars 2018-03-10 20:03:32 +09:00
Carsten Haitzler 965f257e70 ecore - efl exe/thread - only allow run once ever 2018-03-10 20:02:09 +09:00
Cedric BAIL edda05e4d0 ecore: do not remove a timer that has already been removed. 2018-03-08 17:00:03 -08:00
Cedric Bail a5d5965b68 ecore: avoid calls to provider_find on invalidated objects in timer class
Signed-off-by: Mike Blumenkrantz <zmike@osg.samsung.com>
2018-03-08 15:46:45 -08:00
Cedric Bail 83233a976d ecore: rely on Efl.Object.invalidate instead of a hack for Efl.Model.Container.Item. 2018-03-07 10:59:20 -08:00
Carsten Haitzler 9c8749b99a ecore - go back to args 0 being the command and 1+ being actual args
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.
2018-03-07 02:32:15 +09:00
Carsten Haitzler 6865ad1773 ecore - efl threads - add thredio class
this adds a simple indata and outdata void ptr to begin that you can
set on efl.thread objects (set the indata) and get the outdata too to
get results. then on the efl.appthread side the indata is set on the
efl.appthread before it runs and on quit the thresad can set the
outdata on the appthread, and this appears back on the efl.thread
object in the parent thread.

so you can basically share pointers to anything in and out this way on
start/exit in addition to string args etc.

the reason i made it an extra class (mixin actually) is for future
expansion. sharing more complex data - eina values maybe or objects as
long as they are shared objects, and perhaps acting as an interface
for calling a function at the other end like ecore_thread_async_call
etc.
2018-03-07 02:32:15 +09:00
Carsten Haitzler 1ac60fe022 ecore efl exe/task/thread - move stdin/out flags to task class
also use them in efl thread to determine if io handlers are set up and
pipes created at all etc.
2018-03-07 02:32:15 +09:00
Carsten Haitzler 7d934a4a0d efl loop - remove commented out code left over from work on theads etc 2018-03-03 18:59:40 +09:00
Carsten Haitzler aabbb211ea efl.task - add an api to clear environment 2018-03-03 18:01:05 +09:00
Carsten Haitzler 6c0ed8fe76 efl exe - fix indent 2018-03-03 17:57:17 +09:00
Carsten Haitzler d80ef6d7a9 efl loop promises - cleare out promise data to null
so there is something broken in the complect efl promise/loop promise
that the clear of promises on loop destroy is clearing
promises/futures that have already triggered (loop timer ones). i've
spent enough time figuring out that it is happening.
_efl_loop_timeout_del() simple doenst ensure the future in
pending_futures for that promise is removed from the list. getting the
future from the promise handle is an exercise in pain... so i'm not
continuing with that path and will just ignore it.

but for now filling the promise data with null at least means if the
menory is re-used after free it wont see garbage freed ptrs and get
nulls so its easier to track.
2018-03-03 17:15:10 +09:00
Carsten Haitzler 1bdd9e4dd1 ecore - a different take on efl.app class as a super class to efl.loop
so the MAIN loop is actually an efl.app object. which inherits from
efl.loop. the idea is that other loops in threads will not be efl.app
objects. thread on the creator side return an efl.thread object.
inside the thread, like the mainloop, there is now an efl.appthread
object that is for all non-main-loop threads.

every thread (main loop or child) when it spawns a thread is the
parent. there are i/o pipes from parnet to child and back. so parents
are generally expected to, if they want to talk to child thread, so
use the efl.io interfaces on efl.thread, and the main loop's elf.app
class allows you to talk to stdio back to the parent process like the
efl.appthread does the same using the efl.io interfaces to talk to its
parent app or appthread. it's symmetrical

no tests here - sure. i have been holding off on tests until things
settle. that's why i haven't done them yet. those will come back in a
subsequent commit

for really quick examples on using this see:

https://phab.enlightenment.org/F2983118
https://phab.enlightenment.org/F2983142

they are just my test code for this.

Please see this design document:

https://phab.enlightenment.org/w/efl-loops-threads/
2018-03-03 13:40:33 +09:00
Carsten Haitzler 1c74aaa7e9 Revert "cxx: Fix manual code after efl_app change."
This reverts commit 135154303b.

Revert "efl: move signal events from efl.loop to efl.app"
This reverts commit 3dbca39f98.

Revert "efl: add test suite for efl_app"
This reverts commit 3e94be5d73.

Revert "efl: create Efl.App class, the parent of Efl.Loop"
This reverts commit 28fe00b94e.

Go back to before efl.app because I think this should be done with
superclassing here not a parent object. reasons?

1. multiple loops per single thread make no sense. so if multilpe loop
objects they wont be contained in a single app object and then deleted
like this.
2. the app object is not really sharable in this design so it cant be
accessed from other threads
3. it makes it harder to get the main loop or app object (well 2 func
calls one calling the other and more typing. it is longer to type and
more work where it is not necessary, and again it can't work from
other threads unless we go duplicating efl.app per thread and then
what is the point of splittyign out the signal events from efl.loop
then?)

etc.
2018-03-03 13:40:33 +09:00
Mike Blumenkrantz 3dbca39f98 efl: move signal events from efl.loop to efl.app
these are process-wide and not loop-specific
2018-02-26 14:02:51 -05:00
Mike Blumenkrantz 28fe00b94e efl: create Efl.App class, the parent of Efl.Loop 2018-02-26 14:02:51 -05:00
Carsten Haitzler c422359d2e ecore signal - memset data about to be sent over to 0 first
makes valgrind happier and less noise, though not strictly needed,
thus not fixing a bug...
2018-02-26 15:28:06 +09:00
Carsten Haitzler 21b4321d4c ecore anim - use pointers to real things for epoll objects
while really "fake" they are real pointers and thus shouldnt get
complaints from tools about invalid ptrs... doesnt fix any bug though.
2018-02-26 15:26:27 +09:00
Jean Guyomarc'h 87efca57ef ecore_signal: check the return value of write(2)
Some glibc declare write(2) with the attribute warn unused result.
So we now ensure that the calls to write(2) are successful. Otherwise,
we print an error and update errno accordingly.
2018-02-25 10:40:50 +01:00
Jean Guyomarc'h 7ff60afe5c efl_exe: check the calls to pipe(2)
Some glibc versions declare pipe(2) with a warn unused result attribute,
leading to compile-time warnings when pipe(2)'s return value is not
checked.

If pipe(2) fails, we now print an error and make the calling function
fail.
2018-02-25 10:38:57 +01:00
Marcel Hollerbach c4f33c67a8 move from efl.vpath to eina_vpath
The usages from efl.vpath are moved to to eina_vpath
2018-02-22 09:26:55 +01:00
Carsten Haitzler 885ea03230 ecore - osx - build where clearenv doesnt exist
osx was uncivilied .... it didn't have a nice clearenv. fixed that now
and do it the not so nice way and juat set environ to NULL
2018-02-22 00:15:57 +09:00
Carsten Haitzler d262ff447e ecore - fd handler - dont set legacy flag on null fdhandlers
now passes make check again.
2018-02-21 19:05:48 +09:00
Carsten Haitzler 8c62e2a817 ecore - fd handlers - only delete legacy eo objects in handlers
if its a non-legacy loop handler that also binds an fd handler
internally (the 2 things are linked as a pair) then on loop del, dont
del the objet as the obj del should handle things elsehwere.
2018-02-21 16:56:38 +09:00
Carsten Haitzler 47ff2d8126 ecore - start work on efl task/exe/thread
this is  astart of the work for having a common task class/interface
between loops, threads ane exe's so the i/o is all symmetric and works
the same way between all of them as well as similarly for launching
and knowing when the exit etc. etc.

this is not final and not perfect, but it's a start. comments of
course welcome
2018-02-21 16:56:38 +09:00
Carsten Haitzler d7a22256b6 ecore - loop handler - fix wakeup to reslect active flag mask
loop handlers only cared what callbacks were attached, and didnt also
account for the read/write/error mask flags too. fix that.

@fix
2018-02-21 16:56:38 +09:00
Carsten Haitzler 468b2b380c ecore - fix fd handlers to also set read/write/err flags on hup's
odd - i found ecore fd handlers basically ignored hangups from the
other end so we never knew if the other end went or not... crazy. now
we at least have all the read/write/error flags on and the next read
should fail indicating the broken pipe etc. ...

@fix
2018-02-21 16:56:38 +09:00
Marcel Hollerbach 17d8781a2a ecore: use new bs static lib 2018-02-17 21:17:58 +01:00
Mike Blumenkrantz adc2be188c eolian: convert all of cedric's tabs to spaces in .eo files 2018-02-12 12:59:05 -05:00
Mike Blumenkrantz 6a500331bd ecore: fix event flushing to not erase+leak events
stealing the message data here prevents events which aren't being flushed from
ever being usable again and is unnecessary since the free callback will be
automatically called during the destructor

ref 5dd52fd09b
2018-02-07 12:12:22 -05:00
Myoungwoon Roy, Kim b203ff1878 ecore_event: Fix a break of consistency of return data
Summary:
This patch fixes a break of consistency of return data from ecore_event_del.
Before EFL 1.20, when calling ecore_event_add(ECORE_EVENT_SIGNAL_USER, event_data, NULL, &data);
The user data(data) is saved at event->data. and when user calls ecore_event_del(event_handler),
ecore_event_del returns event->data. However, current ecore_event_del returns pd->ev.
I think it is ABI break.

Test Plan: Execute test suite

Reviewers: cedric, raster, stefan_schmidt, Jaehyun_Cho

Reviewed By: Jaehyun_Cho

Differential Revision: https://phab.enlightenment.org/D5786
2018-02-07 13:50:24 +09:00
Hosang Kim 24b0ae0df5 ecore/evas: add NULL checks to handle argument is NULL.
Summary:
ecore_pipe_read_fd/ecore_pipe_write_fd
evas_engine_info_set/get

Reviewers: woohyun, Jaehyun, Jaehyun_Cho, jpeg

Subscribers: cedric

Differential Revision: https://phab.enlightenment.org/D5790
2018-02-06 17:58:44 +09:00
Myoungwoon Roy, Kim 211093b7c5 ecore_event: Check for the valid type
Summary:
This patch checks for the valid types.
As mentioned API reference documentation, user must know its type before hand.
The type should be chedked like previous efl version and ecore_event_type_flush_internal()

Test Plan: Execute a ecore test suite.

Reviewers: cedric, raster, jpeg, stefan_schmidt, Jaehyun_Cho

Subscribers: cedric

Differential Revision: https://phab.enlightenment.org/D5776
2018-01-31 18:55:40 +09:00
Myoungwoon Roy, Kim e9d1a1e988 ecore_main: Check for the valid flag
Summary:
This patch checks for the valid Ecore_Fd_Handler_Flags.
The flags should be checked like previous verion because
There are no default handlings in case of out of Ecore_Fd_Handler enum values in other funcs.

Test Plan: Execute a test case

Reviewers: cedric, raster, jpeg, stefan, Jaehyun_Cho

Differential Revision: https://phab.enlightenment.org/D5775
2018-01-31 18:55:40 +09:00
Mike Blumenkrantz da9eef6027 ecore: add function for prepending an event handler
@feature
2018-01-30 13:02:07 -05:00
Myoungwoon Roy, Kim 6bb2b8b402 ecore_timer: Check for the valid callback func
Summary:
This patch checks whether the callback function is valid or not.
Callback function must be set up for the class.

Test Plan: Execute test suite

Reviewers: cedric, raster, stefan, Jaehyun_Cho

Subscribers: jpeg

Differential Revision: https://phab.enlightenment.org/D5762
2018-01-30 14:43:11 +09:00
Mike Blumenkrantz 8f2b36b774 ecore: prune existing thread_join callbacks during ecore_fork_reset
permitting these to persist and trigger at a later point will cause
the process to deadlock while attempting to join non-existent threads

@fix
2018-01-25 15:33:25 -05:00
Myoungwoon Roy, Kim 0a5b15ccac ecore_main: Check for null ptr deref
Summary: This patch fixes a tentative crash owing to dereference of fd_handler.

Test Plan: Execute test suite

Reviewers: cedric, raster, stefan, Jaehyun_Cho

Reviewed By: Jaehyun_Cho

Subscribers: jpeg

Differential Revision: https://phab.enlightenment.org/D5754
2018-01-22 21:27:20 +09:00
Myoungwoon Roy, Kim 6629df5e67 ecore_anim: Check for null ptr deref
Summary:
This patch fixes a tentative crash owing to null ptr dereference
ecore_animator_freeze() has a same patch already.

Test Plan: execute test suite

Reviewers: cedric, raster, jpeg, stefan, Jaehyun_Cho

Reviewed By: Jaehyun_Cho

Differential Revision: https://phab.enlightenment.org/D5752
2018-01-22 17:07:58 +09:00
Vincent Torri f5b01ac5ce all: Simplify definition of EAPI
This will help in the transition from Autotools to Meson. This has been
tested on Windows for which EFL_XXX_BUILD were first introduced.
2018-01-18 18:04:03 +09:00
Carsten Haitzler 20605953f5 Revert "efl loop - provide efl namespace versions of begin/end locks on mainloop"
This reverts commit 76b837002e.

seems no one wants efl api's for this
2018-01-17 21:30:49 +09:00
Cedric BAIL e90a9f3eef Revert "promise: Add even simpler helper for main loop promise creation"
This reverts commit e931fd698d.
2018-01-12 09:37:47 -08:00
Cedric BAIL f5a5609c27 Revert "efl-loop: Don't use 'main' as a variable name"
This reverts commit 214dbdbd59.
2018-01-12 09:37:47 -08:00
Carsten Haitzler 659d5d2894 ecore signal - since we arent going to use threads due to osx, remove
remove thread code since osx is not happy with threads trapping
signals (or at least a thread setting up the handler and trapping
there with signal blocks...). this should now work universally.
2018-01-11 23:13:13 +09:00
Carsten Haitzler af681a1091 ecore signal write - save and restore errno since may be on mainloop
now i disabled the signal thread watcher ... save+restore errno.
2018-01-11 17:25:24 +09:00
Carsten Haitzler 21c8e73111 ecore signal - for now disable the sig watcher thread and do on mainloop
we used to do signals on main loop. keep doing. the pipes should work
in cleanly serializing the signals irrespective of when/where they are
caught (because we do into kernel and back out again). hoping this
makes osx work again. can't test as i have no osx box or vm. works on
linux and freebsd though.
2018-01-11 16:17:54 +09:00
Cedric Bail 0b6f74fde6 ecore: no write after del for efl_loop_timeout. 2018-01-10 18:16:25 -08:00
Cedric BAIL 1f28dce028 ecore: make loop quit exit code work with EINA_VALUE_EMPTY. 2018-01-08 13:40:02 -08:00
Carsten Haitzler f62e051343 efl signals - add signal callbacks for minimal signal set on loops
this willonly apply to the main loop, but to be able to see these
signals as callbacks, we have to expose them. term/quit/int are
already handled internally where the loop will terminate (efl will
enforce this) AND ... there is a terminate event already on the loop
to deal with this cleanup. other signals really arent applicable IMHO
except usr1/2 and hup.
2018-01-06 18:49:07 +09:00
Carsten Haitzler ba16dee6b3 ecore signal - move to using a pipe (and optional thread) tfor signals
this should remove any races in catching signals. it should also be
portable. as well.
2018-01-06 18:20:23 +09:00
Carsten Haitzler 76b837002e efl loop - provide efl namespace versions of begin/end locks on mainloop
add efl_main_loop_steal() and efl_main_loop_release() for new efl
namespace versiosn of ecore_thread_main_loop_begin() and
ecore_thread_main_loop_end().
2018-01-05 15:04:05 +09:00
Vincent Torri f2364053b4 ecore, elementary: remove useless inclusion of Evil.h on public headers when compiling with Visual Studio
Evil.h is already included on Windows in Eina.h
2018-01-04 13:00:00 -08:00
Vincent Torri 4ae6eeb2cf efl: remove _MSC_VER (Visual Studio macro) usage in source code 2018-01-04 12:59:47 -08:00
Cedric BAIL 298915c627 ecore: Efl_Core.h means using EFL_BETA_API_SUPPORT at the moment. 2018-01-04 11:45:10 -08:00
Cedric BAIL 526415d903 eo: make efl_provider_find a @const function. 2018-01-04 11:45:10 -08:00
Cedric BAIL ce373c9b1f ecore: fallback to use efl_provider_find if the passed object isn't an Efl.Loop_Consumer. 2018-01-04 11:45:10 -08:00
Carsten Haitzler df61af9efa eocre timechanges - set obj to null before deletion on stop
stops double-deletion due to callback nesting
2018-01-05 02:34:16 +09:00