path: root/src/lib/ecore_evas (follow)
AgeCommit message (Collapse)Author
2018-10-02here comes mesonMarcel Hollerbach
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 <> Differential Revision: Depends on D7011
2018-09-18ecore: Add new way to register animatorsDerek Foreman
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:
2018-09-18ecore_evas: Refactor out ticking start/stop as functionsDerek Foreman
Summary: These are the refcounted ticky guts of the signal add/del catchers, we'll need to use these to start/stop from other call chains in the near future. Reviewers: devilhorns Reviewed By: devilhorns Subscribers: cedric, #reviewers, #committers Tags: #efl Differential Revision:
2018-08-30docs: Fix typos and some wrong expressions in API reference doc.Myoungwoon Roy, Kim
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:
2018-08-22ecore-evas/buffer: implement ignore_events methodMike Blumenkrantz
Summary: this is a simple implementation of ignore_events functionality which sets pass_events if it's an image or prevents the emission of events in other cases the result should be that no user events are received. this deliberately does not block the triggering of resize callbacks as in the original ticket since this guarantees broken functionality and is just not a good idea fix T4700 Reviewers: devilhorns, Hermet Reviewed By: Hermet Subscribers: Hermet, cedric, #reviewers, #committers Tags: #efl_display_system Maniphest Tasks: T4700 Differential Revision:
2018-08-09ecore-evas: make manual_render_set a no-op when setting the current valueMike Blumenkrantz
Summary: this should not take any action if the existing value of manual_render is set to the passed value Reviewers: devilhorns, kimcinoo, ManMower Reviewed By: devilhorns, kimcinoo, ManMower Subscribers: ManMower, cedric, #reviewers, #committers Tags: #efl_display_system Differential Revision:
2018-08-08wayland: Fix elementary setting window parents at creation timeDerek Foreman
Summary: We need to pass the entire pointer, not just 32-bits of it. Fixes a crash with enlightenment sandbox gadgets where ecore_wl2_window_alpha_get() is called with an invalid pointer while trying to display a pop-up. Reviewers: zmike, devilhorns Reviewed By: zmike, devilhorns Subscribers: devilhorns, cedric, #reviewers, #committers, zmike Tags: #efl Differential Revision:
2018-07-31ecore_evas: Make sure a manual render does a manual renderDerek Foreman
Summary: If we call ecore_evas_manual_render() during an async render, it does nothing. This is harmful if we've added render post callbacks during that async render and expect them to fire. Force a sync and another render if we're in an async render. ref T7156 Depends on D6714 Reviewers: zmike Reviewed By: zmike Subscribers: cedric, #committers, zmike Tags: #efl Maniphest Tasks: T7156 Differential Revision:
2018-07-31ecore_evas: Sync evas on manual_render_setDerek Foreman
Summary: Make sure any ongoing async rendering is finished before manual_render_set returns. Depends on D6711 Reviewers: zmike Reviewed By: zmike Subscribers: cedric, #committers, zmike Tags: #efl Differential Revision:
2018-07-05ecore_evas: skip rendering evas and making animator tickHosang Kim
Summary: Some ecore_evas such as ecore_evas_extn_plug doesn't have evas. ecore_evas_extn_plug seems to be Ecore_Evas, but actually it is Evas_Object_Image. ecore_evas_extn_plug makes new ecore evas, but it only exists to communicate with ecore_evas_extn_socket. newly ecore evas only open and close file(ecore_evas_extn_socket). so it doesn't have evas. ``` EAPI Evas_Object * ecore_evas_extn_plug_new_internal(Ecore_Evas *ee_target) { ... ee = calloc(1, sizeof(Ecore_Evas)); ... o = evas_object_image_filled_add(ee_target->evas); ... return o; } ``` Reviewers: zmike, Hermet, woohyun, raster, devilhorns Reviewed By: zmike Subscribers: cedric, #committers Tags: #efl Differential Revision:
2018-06-27evas: move clearing cows to right place.Hosang Kim
Summary: Evas is child of main loop now, so evas is deleted when main loop is quitted. In case of not calling evas_free() explicitly by app side, a crash occurs. So move clearing cows to below ecore_shutdown(). Test Plan: //Compile with: //gcc evas_test.c -o evas_test `pkg-config --cflags --libs ecore evas` #include <Evas.h> #include <Ecore.h> Eina_Bool _timer_cb (void *data) { ecore_main_loop_quit(); return 0; } int main(int argc, char *argv[]) { evas_init(); Evas *evas = evas_new(); Evas_Object *obj = evas_object_box_add(evas); Evas_Object *rect = evas_object_rectangle_add(evas); evas_object_color_set(rect, 255, 255, 255, 255); evas_object_resize(rect, 300, 400); evas_object_show(rect); evas_object_box_append(obj, rect); evas_object_show(obj); ecore_timer_add(2.0, _timer_cb, NULL); ecore_main_loop_begin(); evas_shutdown(); return 0; } Reviewers: devilhorns, cedric, jpeg, id213sin, woohyun, zmike Reviewed By: zmike Subscribers: cedric, #committers, zmike Tags: #efl Differential Revision:
2018-06-25ecore_evas: prevent duplicated ecore_evas registrationYeongJong Lee
Summary: After a44697c37a304c0d4d574b6772775c6936869e24, we can register same ecore_evas to ecore_evases using ecore_evas_input_event_register. (ecore_evas_input_event_register -> ecore_evas_done -> _ecore_evas_register) This can make infinite loop in EINA_INLIST_FOREACH(ecore_evases, ee) because next inlist of ecore_evases is ecore_evases after double call of _ecore_evas_register. This patch prevent it. Test Plan: Ecore_Evas *ee = ecore_evas_new(NULL, 0, 0, 800, 600, NULL); ecore_evas_input_event_register(ee); (part of document of ecore_fb_input_device_window_set) Check that there is no infinite loop Reviewers: zmike, devilhorns Reviewed By: zmike Subscribers: cedric, #committers Tags: #efl Differential Revision:
2018-05-24evas: refactor efl_input_event and remove some of the lifecycle hack.Cedric BAIL
Differential Revision:
2018-05-24Revert "efl_add_ref - fis to use efl_add properly with a parent."Cedric BAIL
This reverts commit 2fb5cc3ad09f6aaf82b5d1131ac5ed22ed848bd4. Most of this change where wrong as they didn't affect the destruction of the object. efl_add_ref allow for manual handling of the lifecycle of the object and make sure it is still alive during destructor. efl_add will not allow you to access an object after invalidate also efl.parent.get will always return NULL once the object is invalidated. Differential Revision:
2018-05-23ecore-evas-buffer: defer resize callback until pre-renderMike Blumenkrantz
Summary: this mimics other engines, all of which have the same mechanics due to display server interactions. it also avoids unnecessary recalcs before pre-render if the canvas size was changing repeatedly fix T6924 ref D6019 Reviewers: cedric, JackDanielZ Reviewed By: JackDanielZ Subscribers: #committers, JackDanielZ Tags: #efl Maniphest Tasks: T6924 Differential Revision:
2018-04-30ecore animator, x, vsync ecore evas restore x vsync to work againCarsten Haitzler (Rasterman)
so i found the work with wayland and having animator sources broke that same source from ecore_x that was there from long ago, so i've put in an exception if there are x based engines from restting to a timer animator because ecore_x would have switched toa custom ticker already, and this just resets it. also just set the source after setting the tick callbacks and ensure tick cb's are null before going to timer source as well. this cleans up this little but of animaatior vsync modification to properly vsync in both x and wayland too now. @fix
2018-04-24Efl.Canvas.Scene (from Efl.Canvas)Xavi Artigas
Ref Reviewed-by: Cedric Bail <>
2018-04-23ecore_evas: forgotten refactoring of the buffer engine.Cedric BAIL
Thanks @jackdanielz for the report.
2018-04-12ecore_evas: Make draw_block block drawingDerek Foreman
This was only used in the X custom render function, now it's meaningful everywhere. (Nothing that uses this code path currently sets it) ref T6834
2018-04-12ee_x: Rename draw_ok to draw_block and invert logicDerek Foreman
I want to use this in other engines, but no other engine initializes this properly, so draw_ok would be EINA_FALSE everywhere. This way draw_block is EINA_FALSE after calloc in all engines that don't know about it. ref T6834
2018-04-11ecore-evas: Remove unused variableChris Michael
2018-04-10ecore_evas: remove dead code.Cedric Bail
2018-04-09ecore_evas: check return value.Woochan Lee
Summary: After migration this code in Tizen. The coverity said it needs to check return value(CID 39562). Reviewers: raster, myoungwoon, woohyun, cedric Subscribers: cedric Differential Revision: Reviewed-by: Cedric BAIL <>
2018-04-02ecore_evas: add a hook interceptor for evas_new, will be useful for a ↵Cedric Bail
portable Exactness.
2018-04-02ecore_evas: refactor logic for creating Ecore_Evas.Cedric Bail
2018-03-29efl_add_ref - fis to use efl_add properly with a parent.Carsten Haitzler (Rasterman)
fixes bc18b7e7ad1f8c5d587400b27fabab0865017011 and 168849e8a08966ecc284e28f64126a3a85965965
2018-03-26ecore_evas: don't set in_async_render flag if not in use async render.Hosang Kim
Reviewers: jypark, raster, cedric Subscribers: cedric Differential Revision: Reviewed-by: Cedric BAIL <>
2018-03-20efl: replace efl_del with efl_unref for cases where no parent existsCedric BAIL
Signed-off-by: Mike Blumenkrantz <>
2018-03-13ecore_evas: implement the move method for basic buffer canvasCedric BAIL
Signed-off-by: Mike Blumenkrantz <>
2018-03-03ecore - a different take on class as a super class to efl.loopCarsten Haitzler (Rasterman)
so the MAIN loop is actually an object. which inherits from efl.loop. the idea is that other loops in threads will not be 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 interfaces on efl.thread, and the main loop's class allows you to talk to stdio back to the parent process like the efl.appthread does the same using the 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: they are just my test code for this. Please see this design document:
2018-02-17ecore: use new bs static libMarcel Hollerbach
2018-02-13ecore-evas-drm: Include Evas_Internal headerChris Michael
We need to include this header so that we can use the new efl_canvas_output functions Signed-off-by: Chris Michael <>
2018-01-22ecore_evas: Check for null ptr derefMyoungwoon Roy, Kim
Summary: This patch fixes a tentative crash owing to ptr dereference. Unlike ecore_evas_object_cursor_set and ecore_evas_object_cursor_device_set, ecore_evas_cursor_set uses Ecore_Evas *ee before calling internal function which internally checks null ptr dereference of Ecore_Evas *ee. Test Plan: Executes test suite Reviewers: cedric, raster, stefan, Jaehyun_Cho Reviewed By: Jaehyun_Cho Subscribers: jpeg Differential Revision:
2018-01-18all: Simplify definition of EAPIVincent Torri
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-16eina: remove usless newlineJean Guyomarc'h
Summary: ecore_evas: remove debug eina: unregister log level when done with Fixes a constant memory leak. eina: introduce EINA_HOT and EINA_COLD These attributes respectivelly expand to __attribute__ ((hot)) and __attribute__ ((cold)) when available. They allow to mark functions are being hot/cold (frequently used or not) as well as to qualify labels within a function (likely/unlikely branches). eo: speed-up generated calls by removing call cache The call cache needed to by thread-local, to avoid concurrency issues. Problem with TLS is that is adds an extra overhead, which appears to be greater than the optimization the cache provides. Op is naturally atomic, because it is an unsigned integer. As such, it cannot be tempered with while another thread is reading it. When entering the generated function, the first operation done is reading 'op'. If we have concurrency, we will have access sequences returning either EFL_NOOP or a VALID op, because 'op' is not set until the very end of the function, when everything has been computed. As such, we now use the 'op' atomic integer to instore a lock-free/wait-free mechanism, which allows to drop the TLS nature of the cache, speeding up the access to the cache, and therefore making functions execute faster. We don't test anymore the generation count. This can be put as a limitation. If means that if you call efl_object_shutdown() and re-initialize it later with different data, opcodes will be invalid. I am not sure there is any usecase for this to ever happen. We could move all the caches in a dedicated section, that can be overwritten after a call to efl_object_shutdown(), but I am not sure it will be very portable. Benchmark: mean over 3 executions of ELM_TEST_AUTOBOUNCE=100 time elementary_test -to genlist ``` BEFORE AFTER ------------------------------------------------------------ time (ns) 11114111647.0 9147676220.0 frames 2872.3333333333335 2904.6666666666665 time per frame (ns) 3869364.6666666665 3149535.3333333335 user time (s) 11.096666666666666 9.22 cpu (%) 22.666666666666668 18.333333333333332 ``` Ref T6580 Reviewers: raster, cedric Subscribers: cedric, jpeg Maniphest Tasks: T6580 Differential Revision:
2018-01-04efl: remove _MSC_VER (Visual Studio macro) usage in source codeVincent Torri
2018-01-05ecore evas init - init ecore then evas not the other way...Carsten Haitzler (Rasterman)
because as of... i don't know when, evas relies on ecore with ecore_pipe_add to create the async fd... and if you init evas then ecore this doesnt work. obviously. well now it isn't working. probably due to new efl loop work. but the efl loop code is correct. ecore_pipe_add should never work until you init ecore... it just happesn to have managed to be gotten away with for a while. @fix
2017-12-19efl: Reset ecore event types on initJean-Philippe Andre
This fixes cycles of init/shutdown/init where ecore event types would become invalid, since they are now stored in a dynamic array rather than a statically stored array. The risk here is that if a module of EFL tends to init/shutdown in a "normal" scenario then the event type array will grow in a leaking manner. This could be fixed by resetting those event ID's only when the loop actually exits (EFL_EVENT_DEL on the main loop). I'm not using EFL_EVENT_DEL in this patch as this would add too many event callbacks to the main loop object, which may result in slightly slower event calls to it, affecting the overall performance.
2017-11-23ecore_evas: use access() instead of stat()Lauro Moura
Summary: stat() wasn't working on Windows due to some msys2/mingw quirk. Reviewers: felipealmeida, cedric, vtorri Subscribers: jenkins, jpeg Tags: #windows Differential Revision: Signed-off-by: Cedric Bail <>
2017-11-09ecore_evas: improve ecore_evas fallback animator logic for legacy case.Cedric Bail
In Enlightenment with internal window being WL window connected to the X11 backend, you end up with the later requiring the former to tick, even if the former do not have a proper animator source. To work around the problem when there is one backend that is not providing support for animator source, we do need to avoid switching on another window source as they could be linked somehow and we can not know.
2017-11-02ecore_evas: always find a source for ticking legacy animator.Cedric Bail
As we do not know when a window won't be able to tick, and we do not know which window a legacy animator is attached to, we require all windows to tick as often as they can and only generate one tick per loop run. This might need more adjustement especially with multi output.
2017-11-01ecore_evas: if an async rendering is still going on, there won't be a new ↵Cedric BAIL
one starting.
2017-11-01ecore_evas: do not propagate drawing change blindly from sub surface to parent.Cedric BAIL
It is not because a round of rendering happen for a child, that it result in actually drawing anything in the parent. The parent will always be aware of the rendering request of the sub surface and we should only track what the parent think. T6049 Tested-by: Derek Foreman <>
2017-10-18ecore: remove doxygen warning messagesTaehyub Kim
Summary: remove doxygen warning messages @fix Reviewers: jpeg, cedric, woohyun Reviewed By: jpeg Differential Revision:
2017-09-22ecore_evas: skip deleted Ecore_Evas while searching for a general animator ↵Cedric Bail
2017-09-22EFL For WIN32: Replace HAVE_EVIL define with _WIN32Vincent 'vtorri' Torri
2017-09-18efl: Use Eina.Size2D for size hint combined minJean-Philippe Andre
For this patch I decided to add a pseudo legacy wrapper as the function is called in a very large number of places. Fixing all those calls to use the size2d form is a lot of work and a greater risk of b0rking something.
2017-09-18efl: Introduce Eina.Rect and switch EO APIs to itJean-Philippe Andre
It's a complex struct but defined in EO as a simple struct. ABI-wise it's equivalent to Eina_Rectangle. Some macros that use Eina_Rectangle also work on Eina_Rect out of the box, most of the code dealing with x,y,w,h will require no modifications either. But Eina_Rect provides direct access to a size or position 2d component, as well as the usual x,y,w,h. The field "rect" is provided as a convenience for code dealing with both Eina_Rectangle and Eina_Rect. We may or may not require it. Note: Size2D could use unsigned values but I have spotted a few places in the code that actually use -1 to indicate invalid size (as opposed to 0x0). @feature
2017-08-25efl: remove PS3 backend.Cedric BAIL
This backend has received no patch and maintenance from anyone who could actually test it over the last few years. After talking with KaKaRoTo it is best to remove it. If anyone want to take over its maintenance, you are welcome to revert this patch.
2017-08-12ecore_evas: define the predefine for wl2 instead of waylandMarcel Hollerbach