Commit Graph

1223 Commits

Author SHA1 Message Date
Tom Hacohen aab8389a6f Eo: remove strict class checking for composite objects.
When compositing objects, we were checking that class_of(B) is in A's
inheritance tree before allowing attaching B as a composite object of A.
This is wrong and breaks a few cases, for example: B extends a class that
is in A's inheritance tree or B implements an interface that is in A's
inheritance tree.

Thanks to Marcel for reporting.
2016-06-05 10:57:07 +01:00
Cedric BAIL b7facb2f0b ecore: add a test for detecting the double free problem. 2016-06-03 17:00:12 -07:00
Cedric BAIL 5cc16b1c29 ecore: remove Ecore_Animator Eo object.
This is only a legacy API.
2016-06-03 17:00:12 -07:00
Felipe Magno de Almeida e98c57d9d4 eina: Remove more Eina_Promise* parameter in promise callback
Remove not very useful parameter to eina_promise_then callbacks.
2016-06-03 18:37:21 -03:00
Felipe Magno de Almeida e79eb53e8d eina: Remove Eina_Promise* parameter in promise callback
Remove not very useful parameter to eina_promise_then callbacks.
2016-06-03 18:15:57 -03:00
Felipe Magno de Almeida 8fec0d5139 eina: Remove unnecessary indirection to promises
Now when dealing with pointer types, we will not get pointer to
pointer semantics in callbacks and eina_promise_owner_value_set
for Eina_Promise.

It will work as expected:

Eina_Promise_Owner* promise = eina_promise_add();

void* p = malloc(sizeof(T));
eina_promise_owner_value_set(promise, p, &free);
2016-06-03 17:22:12 -03:00
Cedric BAIL d384012307 elementary: merging in elm_code widget.
Theme is not there as it should be manually merged into the elementary
default theme.
2016-06-02 17:19:08 -07:00
Daniel Kolesa b1946ca5d6 eolian: utilize the new void_ptr builtin across eo files
This lets me narrow down the remaining cases of pointers across the EFL.
The void pointers will later need to be reevaluated on per-case basis and
replaced appropriately where possible/feasible.
2016-06-02 13:00:26 +01:00
Jean-Philippe Andre 915e09aed3 Evas: Rename Evas.Rectangle as Efl.Canvas.Rectangle 2016-06-02 18:57:30 +09:00
Tom Hacohen a6a2338962 Revert "Eo: Remove eo_del() and make eo_unref() the replacement."
This reverts commit 546ff7bbba.

It seems that eo_del() is useful and removing it was creating bugs.
The issue is that the way we defined parents in eo, both the parent and
the programmer share a reference to the object. When we eo_unref() that
reference as the programmer, eo has no way to know it's this specific
reference we are freeing, and not a general one, so in some
circumstances, for example:
eo_ref(child);
eo_unref(child); // trying to delete here
eo_unref(container); // container is deleted here
eo_unref(child); // child already has 0 refs before this point.

We would have an issue with references and objects being freed too soon
and in general, issue with the references.

Having eo_del() solves that, because this one explicitly unparents if
there is a parent, meaning the reference ownership is explicitly taken
by the programmer.

eo_del() is essentially a convenience function around "check if has
parent, and if so unparent, otherwise, unref". Which should be used when
you want to delete an object although it has a parent, and is equivalent
to eo_unref() when it doesn't have one.
2016-06-01 13:33:21 +01:00
Daniel Kolesa 6fc482aa9b eolian: utilize the new builtin string type across eo files 2016-05-31 16:05:43 +01:00
Carsten Haitzler 47e3b171a3 efl test suite - test args event and args values 2016-05-31 17:16:14 +09:00
Felipe Magno de Almeida ad0166f792 eio: Fix eio_test_job_xattr test
Test wasn't enabled when modifications to function prototypes to
eio_job_file_xattr_list and eio_job_file_xattr properties were
made, so it got pushed inadvertidly without the necessary
changes to user code.
2016-05-30 15:54:01 -03:00
Felipe Magno de Almeida 058f07e759 eolian-cxx: Added tests for wrapper conversion in C++ API 2016-05-26 16:47:20 -03:00
Felipe Magno de Almeida 1ed8759e1a ecore: eldbus: Fix prototype for promise then_cb new prototype
Added Eina_Promise parameter and removed indirection for Eina_Error.
2016-05-26 13:35:07 -03:00
Felipe Magno de Almeida b0b8109cd5 eina: Make cancelled promises use EINA_ERROR_PROMISE_CANCELLED error code 2016-05-26 13:35:07 -03:00
Felipe Magno de Almeida 28bc891925 eina: Fix new prototype for then cb in test
Added Eina_Promise* parameter to function prototypes
2016-05-26 13:35:07 -03:00
Jean-Philippe Andre 99924852ab Efl: Remove part name in Efl.Container (use Efl.Part)
This touches Edje and also Elementary where part names are used.
This commit blew up in size since now all content part APIs
(get, set, unset) require to use Efl.Part instead.

This is a big refactoring commit, but no logic should
have been changed. Fingers crossed.
2016-05-26 19:55:50 +09:00
Carsten Haitzler a1a2bc5017 eina test suite - ooops reenable tests
accidentally snukc in commented disables in test suite as i was
hunting why eina test suite crashes while dealing with feedback on my
compare fixes etc.
2016-05-26 13:03:01 +09:00
Carsten Haitzler 7ee4eba33f efl - new cmp "fix" code - remove one duplicated cmp 2016-05-26 12:49:58 +09:00
Lauro Moura 7241b7375d eio: Adds Eo-based Eio API
The legacy Eio_File factory functions are replaced by an Eo object
called Eo_Job that return promises wrapping the async file operations.
With this commit, the legacy Eio callbacks are replaced by the following
Eo/Promises counterparts :

* Done_Cb -> Promise then success callback
* Error_Cb -> Promise then error callback
* Main_Cb -> Promise progress callback
* Filter_Cb -> Job object event (more below)

Events are used to deliver and get the filter data. To differentiate
between the named and direct versions, they come in "filter,direct" and
"filter,name" versions.

Monitors were wrapped inside a new class Eo_Sentry.

The user creates a sentry object and adds monitoring targets to it,
listening to events on it.

The sentry event info is composed of two strings. The source string
is the path being monitored, i.e. the one passed to eio_sentry_add, and
the trigger string is the path that actually triggered the event, e.g.
a new file created in a monitored directory.
2016-05-25 21:32:03 -03:00
Felipe Magno de Almeida de9be13d45 eina: Add promise parameter to then calllbacks
Added promise parameter to then callbacks so callbacks can steal
ownership of the value from the promise.
2016-05-25 21:32:03 -03:00
Lauro Moura 0eacdc03da eio: Call correct function to cleanup Eio_File.
The Eio functions operating on Eina_Files were just freeing
the Eio_File pointer on completion instead of calling eio_file_free
to unregister the thread.
2016-05-25 21:32:03 -03:00
Jean-Philippe Andre 35fc3f5130 Edje: Test proxy objects more
This tests that a cached object is not reused invalidly if
it was ref'ed.
2016-05-24 18:50:58 +09:00
Jean-Philippe Andre df375ca395 Edje: fix test case (switch to efl_part) 2016-05-24 18:50:58 +09:00
Carsten Haitzler b8b41e6683 ecore-con tests - remove WRONG connect check
sothe ecore-con tests were calling ecore_con_server_connected_get()
every time a server was created on a NUL server object. WTF? this is
pointless. testing if an api returns tre on being connected on an
invalid object? all it does is create lots of eo noise. remove so we
can see the real errors in the output.

@fix
2016-05-24 09:20:49 +09:00
Felipe Magno de Almeida 6e23780bb1 eolian-cxx: Fix generation of complex types in C++ binding
Fixed generation of complex types in C++ binding, with tests. This
problem came after the removal of the pointer types for top-level
complex types.
2016-05-23 17:34:50 -03:00
Felipe Magno de Almeida 8fd1656898 eolian-cxx: Add test for list and array complex types 2016-05-23 16:08:41 -03:00
Felipe Magno de Almeida b613d6f1d9 eolian: Allow promises to have a second type
Promises can have a second type, which is the progress type
2016-05-23 15:58:11 -03:00
Felipe Magno de Almeida e3c8b280c6 c++: Reorganized C++ binding generation
Moved all generation to a single Makefile_Cxx.am file instead of
throughout the whole project. And fixed C++ generation on Elementary
after elm merge.
2016-05-23 15:05:50 -03:00
Daniel Kolesa e984e5a11a eolian: remove pointers from complex and class types
Complex types (i.e. list, array, hash, accessor etc.) now do not require
pointers with them anymore (the pointer is implied) and the same goes for
class handles. Eolian now explicitly disallows creating pointers to these
as well. This is the first part of the work to remove pointers from Eolian
completely, with the goal of simplifying the DSL (higher level) and therefore
making it easier for bindings (as well as easier API usage).

@feature
2016-05-23 15:58:33 +01:00
Vincent Torri 63d5b07951 Efreet test: fix warning on Windows
Summary:
comp.h is redefining some macros on Windows. So just rename all the macros
with the TANGO prefix

Test Plan: compilatioN

Reviewers: cedric, jpeg, zmike

Differential Revision: https://phab.enlightenment.org/D3968
2016-05-21 10:40:34 -04:00
Tom Hacohen 7b2b623180 Eo: Fix compilation for people using GCC.
Apparently you can't cast when initializing static consts, even if
the cast is to the same type. This commit splits the macro used
so we have an additional one that casts and thus works with
eo_override().
2016-05-20 16:16:17 +01:00
Tom Hacohen 5f46df619b Eo tests: Fix compilation warnings with eoid disabled. 2016-05-20 11:39:36 +01:00
Tom Hacohen 06f65ab2b1 Eo: Implement eo_override() to enable overriding functions of objects.
This change lets you override the functions of objects so that those
functions will be called instead of the functions of the class. This
lets you change objects on the fly and makes using the delegate pattern
easier (no need to create a class every time anymore).
You can see the newly added tests (in this commit) for usage examples.

@feature
2016-05-20 10:25:00 +01:00
Tom Hacohen c450efdcde Eo: Improve error message when overriding functions. 2016-05-20 10:25:00 +01:00
Tom Hacohen e1efe2e651 Eo: Reorganise the vtable in classes and add pointer from objects.
This is the first step towards supporting eo_override().
More details about eo_override() to follow.
2016-05-20 10:25:00 +01:00
Tom Hacohen b5511464a1 Eo: Remove useless test.
We no longer have a call stack, so there's no need to have
this test.
2016-05-20 10:25:00 +01:00
Cedric Bail 4f43c27450 ecore: promise for timeout and job are clearly never optional, so return them. 2016-05-20 02:25:48 -07:00
Jean Guyomarc'h 4f7d159998 ignores: eo_suite_add_fallback 2016-05-18 21:57:02 +02:00
Jean Guyomarc'h 147ef32b2b efl: fix misleading indentation
GCC's -Wmisleading-indentation is complaining...
It is a warning flag introduced in GCC 6.x, and
is enabled by -Wall.
2016-05-18 21:57:02 +02:00
Felipe Magno de Almeida 5d5c04fd66 js fixes 2016-05-18 17:52:47 +02:00
Cedric Bail 75a53ece10 eo: for consistency use object like all our API. 2016-05-18 08:18:04 -07:00
Tom Hacohen 96624b9725 Eo: Fix singleton pattern and add a test to make sure it works. 2016-05-18 13:31:30 +01:00
Cedric Bail 443948e3bd eo: fix borked test. 2016-05-18 02:20:13 -07:00
Carsten Haitzler 8de2ba5d47 eina test suite vector - make correctness range 2x as big
make correctness rand 2 * DBL_EPSILON due to compilers, fastmath and
being a little inaccurate sometimes at the bottom end of precision.

@fix
2016-05-18 02:02:45 +09:00
Carsten Haitzler 54272809ed ecore audio test - improve samples for ecore audio test 2016-05-18 02:02:45 +09:00
Carsten Haitzler 43661180f7 efl - key/data/value/obj attach to eo objects - make these properties
the key data now is a property so they come out in bindings really
nicely like:

  obj.key_data["blah"] = x;

  x = obj.key_data["blah"];

etc.
2016-05-18 02:02:45 +09:00
Daniel Kolesa 7782c0bcb9 eolian: add event_prefix and have classes follow that or eo_prefix by default
Previously events used to use class name as a prefix and ignored eo_prefix
when specified. This is no longer the case. Events follow eo_prefix by default
now. In order to get around this for classes where this is undesirable, a new
field event_prefix was added which takes priority over eo_prefix. If neither
is specified, class name is used like previously.

@feature
2016-05-17 17:50:43 +01:00
Tom Hacohen 546ff7bbba Eo: Remove eo_del() and make eo_unref() the replacement.
We used to have eo_del() as the mirrored action to eo_add(). No longer,
now you just always eo_unref() to delete an object. This change makes it
so the reference of the parent is shared with the reference the
programmer has. So eo_parent_set(obj, NULL) can free an object, and so
does eo_unref() (even if there is a parent).

This means Eo no longer complains if you have a parent during deletion.
2016-05-17 16:23:23 +01:00
Tom Hacohen e9c4e7bf76 Eo name: Rename Eo.Base.id to Eo.Base.name.
This is there to reduce confusion with Eo_Id and also the name
is just better.
2016-05-17 16:00:13 +01:00
Cedric Bail 559441bdd5 ecore: make timeout test that the timeout does happen at least after it is supposed to.
The test had to been relaxed to allow the server to be overloaded !
2016-05-15 06:44:49 -07:00
Tom Hacohen 96c4c88070 Efl: Remove "legacy_prefix: null;" as it's now the default. 2016-05-12 17:27:35 +01:00
Daniel Kolesa 1a0566452f eolian: do not generate legacy without explicit class legacy_prefix 2016-05-12 17:27:34 +01:00
Daniel Kolesa 7e94eb22b4 eolian: mark pure virtual funcs outside of implements
This is a better syntax and should've been like this in the first place.
2016-05-12 16:15:24 +01:00
Tom Hacohen 6cacef2503 Eo abstract class: Rename to Eo.Class. 2016-05-12 14:33:40 +01:00
Stefan Schmidt 3256a60282 tests: eio: make sure we cleanup eio_test_xattr_set correctly
We missed tmpstr_del and shutting down eina here. This test segfaults from
time to time on Jenkins. Not sure this was the actual cause but better clean
it up anyway.
2016-05-11 10:17:11 +02:00
Jee-Yong Um 557381a070 eet: add a helper to setup hash with generic value storage
Summary:
add a macro to setup eet_data_descriptor for hash with
generic value storage.

Test Plan: make check (test case is included in eet test suite)

Reviewers: cedric, raster

Subscribers: jpeg

Differential Revision: https://phab.enlightenment.org/D3925

Signed-off-by: Cedric Bail <cedric@osg.samsung.com>
2016-05-10 16:36:22 -07:00
Tom Hacohen 138d4e1353 Efl model: Remove the no longer needed .Base hack. 2016-05-10 11:36:35 +01:00
Felipe Magno de Almeida 1c5ce16565 eina: Add eina_promise_race composition function
Added eina_promise_race function that composes multiple
promise objects into a new promise which is fulfilled
when one of the promises are fulfilled, or fails
when one of the promises have failed.
2016-05-09 19:10:26 -03:00
Jean-Philippe Andre 5ba58353f0 Edje: Fix test case to show proper use of part APIs
The one and only valid use case is calling a function directly on
the part handle, like:
  func(part_get(obj, "part"), args).

This does not change the actual proxy object lifecycle or resolve
any potential issues, but this should clear up things in terms
of scope for proper (supported) use.

efl_content_get may become efl_part() and return a temporary object,
valid for a single function call. Those are "details" still to be
refined.
2016-05-09 14:42:47 +09:00
Felipe Magno de Almeida 6d43adaaf4 eina: Fix memory leaks in promise 2016-05-07 13:55:18 -03:00
Cedric BAIL 359657f1f1 ecore: add tests case for Efl.Loop.Fd. 2016-05-06 15:35:36 -07:00
Felipe Magno de Almeida 236c13df34 eina: Add progress notify callback feature for Promise Owners
Add a way for users of the promise owner to get notified when a
promise progress is registered. Also added a convenience composition
function that creates a promise which is fulfilled when another
promise has a progress notification.
2016-05-06 12:41:42 -03:00
Tom Hacohen 537b138a23 Eo composite: change composite objects to not be tied to parent
This commit breaks behaviour!
Re-parenting no longer detaches composite objects, so watch out.

Now you can have an object be a composite object of an object although
it's not its child. This allows widgets to do things like having an
object as the child of a child object while still making it a composite
object to the main object.

With this change, composite objects don't keep a reference to the child,
but instead composite "bonds" are implicitly removed when either the
parent or the child are destructed.
2016-05-05 16:45:12 +01:00
Felipe Magno de Almeida 6124039c8f eolian-cxx: Added test for the removal of the .Base class requirement
Test creates class with the same name as the namespace of another class
2016-05-04 21:14:26 -03:00
Cedric BAIL a1bd7a7499 ecore: add timeout promise test. 2016-05-04 15:42:59 -07:00
Cedric BAIL 950701b738 ecore: silence warning in job test. 2016-05-04 15:42:59 -07:00
Marcel Hollerbach c66695bedb eo: replace loop_get with object_find
Summary:
object_find is more generic, so other mechanisms can also reuse the
code.
The object itself has to support the function, so there is no need for
eo_isa which would have a negative performance impact.
The base class implementation calls interface_get on the parent, so a
override of the function can just call the super function to continue in
the recursion.

Test Plan: just run the eo test suite

Reviewers: raster, tasn, jpeg

Reviewed By: tasn, jpeg

Subscribers: felipealmeida, netstar, cedric, jpeg

Differential Revision: https://phab.enlightenment.org/D3909
2016-05-04 10:43:55 +02:00
Larry Jr 5230309b02 Eio: fixed eio_model_test_monitor_add
fix filename comparison in the test for deleted file
2016-05-03 18:48:01 -03:00
Larry Jr 24864af5c4 Eldbus: re-enable eldbus_tests_model by default 2016-05-03 16:49:29 -03:00
Larry Jr d418e98237 Eldbus: fixed eina_promise callback in eldbus test model 2016-05-03 16:49:29 -03:00
Cedric BAIL 0a77ae5c4a elementary: fix build with missing function. 2016-05-03 11:18:06 -07:00
Stefan Schmidt fc51b44ed4 tests: eio: re-enable eio test cases
Have been disabled with 0c76f82a. They pass here so re-enabling.
2016-05-03 11:30:23 +02:00
Stefan Schmidt b917eb4c25 tests: eio: use the correct eina_promise_* functions
When these changes got it with 0c76f82a31
they used the non existing symbols ecore_promise_value_get and
ecore_promise_then (most likely due to an unfinished refactoring)

Make sure we actually use the correct eina_promise_ symbols and add NULL
for the error callback which is now needed.
2016-05-03 09:36:37 +02:00
Cedric Bail 664d677201 ecore: add test case for Efl.Loop.Job. 2016-05-02 18:17:09 -07:00
Cedric Bail cfdc09fa93 ecore: fix promise test wrong use of EINA_UNUSED. 2016-05-02 18:17:09 -07:00
Larry Jr ba20e94201 Eldbus: eldbus_model_test disable by default
This test assumes an existing dbus-daemon running.
2016-05-02 18:37:04 -03:00
Larry Jr 7bbc5ec623 Eldbus: fixed property_set in Eldbus.Model_Proxy 2016-04-29 20:55:37 -03:00
Felipe Magno de Almeida e69f41001b eio: Fix unused variable warnings in test
Use of EINA_UNUSED in unused parameters
2016-04-29 17:32:23 -03:00
Felipe Magno de Almeida 46903d76f5 eolian: Fix promise generation with multiple parameters
When generating multiple parameters, they inadvertedly got
replaced by __eo_promise. Replacing all arguments to the
promise pointer.
2016-04-29 17:15:51 -03:00
Larry Jr 0c76f82a31 Efl, Eio, Eldbus, Elementary: new model API use eina_promise
Efl - efl_model_base changed to use eina_promise
Eio - eio_model use efl_model_base with promise
Eldbus - elddbus models use promise now
Elementary - elm_view_list and elm_view_form use new models with promise

updated all related examples and tests
2016-04-29 13:21:24 -03:00
Jean-Philippe Andre 0c2027b2af Edje: Add test case showing lifecycle of proxy object
This is for efl_content_get proxy objects (BOX & TABLE).
2016-04-29 13:32:01 +09:00
Tom Hacohen 7c4fce78df Eo tests: Mark unused variables as such. 2016-04-26 16:29:18 +01:00
Jean-Philippe Andre ff8ee01432 Efl: Rename some packing functions and return bool
This renames some APIs from Efl.Pack in order to try and
make them more sensible. Feedback welcome.

Also, most APIs now return bool, where false is quite unlikely
to happen.
2016-04-26 16:48:55 +09:00
Jean-Philippe Andre f19da66843 Edje: Add test case for edje table
This tests the EO and Legacy APIs
2016-04-26 14:09:36 +09:00
Jean-Philippe Andre 12146ddea6 Edje: Return text defined in EDC in part_text_get
This function was returning only the text defined by part_text_set.
This is a behaviour change, as part_text_get() no longer returns NULL
if there is a string defined in EDC. But this now means that the actual
value displayed on screen can be retrieved by a simple API call.

@feature
2016-04-26 11:36:23 +09:00
Jean-Philippe Andre e2176ed6a3 Edje: Replace edje_box_part with a fake eo proxy
This is basically an implementation of eo_part() but only
for Edje Box APIs. Legacy API is implemented on top of the
EO API.
2016-04-26 11:36:23 +09:00
Jean-Philippe Andre 24177057d0 Edje tests: Add test case for access_part_list
This tests eo and legacy apis
2016-04-26 11:36:23 +09:00
Jean-Philippe Andre e1092b84eb Edje: Adapt to Efl.Container
This basically renames swallow into content.
2016-04-26 11:36:23 +09:00
Jean-Philippe Andre 902950018b Efl: Introduce Efl.Container and unify APIs
This removes Efl.Pack_Named which had a terrible name,
removes Elm.Container which should have been renamed
Efl.Ui.Container anyway, and introduces an interface
Efl.Container instead.

The hierarchy tree is now changed as objects don't inherit
from Efl.Container (it's an interface, not a regular class)
but only implement it. Obviously it is very easy to
reintroduce an Efl.Ui.Container parent class if we need it,
but I guess it should have some actual logic. It's basically
part of what Elm.Widget already does.

Some function names have been modified to look better in C
with the efl_content prefix.

@feature
2016-04-26 11:36:23 +09:00
Felipe Magno de Almeida 535a069a23 eolian-cxx: Remove .Base requirement
Remove requirement that class can't have the same name as another
class's namespace.
2016-04-21 18:31:53 -03:00
Stefan Schmidt a41f9ad870 tests: eo: switch to generic eo_key_del, fix build
Since 5e09d1307b we use the generic eo_key_del
for all of these.
2016-04-21 11:41:44 +02:00
Carsten Haitzler 5e09d1307b eo base - remove the duplicated key dels and just do eo_key_del() now
this rationalizes all the duplicated key dels (key_data, key_obj and
key_value).
2016-04-21 18:02:31 +09:00
Carsten Haitzler 26b5eb8a26 eo base - add loop_get for base class
base class objects will ask their parent object to get the loop. this
means it recurses all objects regardless of type until it finds an
object that returns a proper loop object - eg a loop object returns
itself, a window, gfx/ui object returns the mainloop object etc. etc.

@feature
2016-04-21 15:19:36 +09:00
Cedric BAIL c0bce3e23e eolian: add tests for restartable event. 2016-04-20 15:53:33 -07:00
Cedric BAIL 7cb53a3ae2 eo: let's check that this nested restarted event are working somehow. 2016-04-20 15:52:41 -07:00
Stefan Schmidt 500750323d tests: fix another redefine of Ecore_Cb build break 2016-04-20 15:31:13 +02:00
Tom Hacohen 115b69fd47 Eolian cxx tests: don't redefine Ecore_Cb. 2016-04-20 13:30:50 +01:00
Carsten Haitzler bc4d43a1cc eo base: names - add finding functions to fund by name
this finds child objects by walking the child tree searching children
by using the search string which can be name, class:name and both
class and name can also be a glob.

@feature
2016-04-20 18:29:41 +09:00