path: root/src/lib/ecore_evas (follow)
AgeCommit message (Collapse)Author
2020-03-10doxygen docs: Fix tons of invalid Doxygen commandsXavi Artigas
Mostly typos
2020-03-09ecore_evas: do not leak allocated memory in error caseMarcel Hollerbach
2020-03-09ecore_evas: only free content when content is != NULLMarcel Hollerbach
otherwise we might run into issues with that.
2020-03-08ecore_evas: Use EFL naming convention in cnp & dnd methodsXavi Artigas
Some methods were missing the "Drag" or "Selection" namespaces or the _Cb suffix. Depends on D11219 Reviewed-by: Mike Blumenkrantz <> Differential Revision:
2020-03-08docs: Strengthen docs for Copy&Paste and Drag&DropXavi Artigas
Including Eina.Content And a typo/bugfix in ecore_evas_x. Reviewed-by: Mike Blumenkrantz <> Differential Revision:
2020-03-08ecore_evas: Introduce cnp / dnd API for ecore evasMarcel Hollerbach
The idea of copy and paste here is: - The user specifies the content he wants to have in the selection buffer with a Eina_Content, these content pointer ownerships are passed to the called. Internally ecore_evas code will memorieze the pointer, and pass on function callbacks to the modules, which then do not have to deal with the ownership. - In case the module does not specify these APIs, the callback implementation will be called, which only works for cnp *not* dnd. - Action and mime types are handled as strings, which allows way better custom organisations. (The docs needs improvement) Reviewed-by: Mike Blumenkrantz <> Differential Revision:
2019-12-30ecore_evas_buffer: Unregister input events when ecore_evas_buffer is freedHosang Kim
Summary: When ecore_evas_buffer is freed, input events is not unregistered. So _window_hash size is increasing. Reviewers: Hermet, cedric, raster, zmike Reviewed By: zmike Subscribers: zmike, rajeev.jnnce, cedric, #reviewers, #committers Tags: #efl Differential Revision:
2019-10-31evas: move efl_input_device into evas/Efl_Canvas.hCedric Bail
Summary: The internal and the API we would like is mostly a canvas API. A lot of the code in evas is working around the fact that efl_input_device is not defined inside Evas. This patch is the first step to try to clean this up. Depends on D10487 Reviewers: zmike, raster, bu5hm4n, Hermet Reviewed By: zmike Subscribers: #reviewers, #committers Tags: #efl Maniphest Tasks: T8321 Differential Revision:
2019-08-19make mman.h privateVincent Torri
Summary: integrate mman.h to make Evil private to the EFL, as mman.h does not exist on Windows. After a discussion with raster, i include sys/mman.h only on non Windows platform. One issue, though, is that src/modules/emotion/generic/Emotion_Generic_Plugin.h has inlined functions using mmap() Test Plan: compilation on Windows Reviewers: cedric, raster, zmike Subscribers: #reviewers, #committers Tags: #efl Differential Revision:
2019-08-14efl/hints: add restricted and combined max size hintsMike Blumenkrantz
these function the same as the min size hint versions and enable distinction between internally-set max size hints and user-set max size hints @feature ref T8122 Reviewed-by: Cedric BAIL <> Reviewed-by: Xavi Artigas <> Differential Revision:
2019-08-02ecore evas x and e sync rendering - disable as it's unusedCarsten Haitzler (Rasterman)
this has been optional and unused by e for a very long time ot try sync front-buffered software rendering with the wm/compositor. we may as well remove the bloat that is here that is unused... it's been inactive for many years anyway.
2019-07-26ecore_evas: prevent double free evas.Hermet Park
When user manually free the ecore evas, it could delete evas internally, then evas_invalidate would be triggered, invalidate callback would try free evas again, this causes double free evas. TEST SCENARIO: ee = ecore_evas_new(...); ... ecore_evas_free(ee); -> free evas -> invalidated cb -> free evas (**double free) This is a regression bug by 5847886a3fdb7c470bd55e215b822bbbaf109080
2019-07-22ecore_evas buffer: fix a deadlock issue.Hermet Park
We encountered a deadlock case in ecore_evas_image_object in ecore_evas_buffer that only happens if the ecore_evas_buffer has nothing changed to render, though it's triggered to rendering. See this normal scenario that is working fine as our intention. being ecore_evas_render() ... -> ecore_evas_buffer_prepare() -> evas_object_image_data_get() -> increment lock by backend engine. (egl/tbm ...) -> render() -> render_post() -> _ecore_evas_buffer_update_image() -> evas_object_image_data_set() ->decrement lock by backend engine (egl/tbm ...) ... end ecore_evas_render() The problem is, if the ecore_evas_buffer canvas doesn't changed at all, render post will be skipped, it could lose the chance to unlock the image data. Now the host can't render anymore since it's image source lost the lock. @fix
2019-07-12ecore_evas: on internal Evas canvas uncontrolled death, properly clean up ↵Cedric BAIL
Ecore_Evas. This allow evas test to work with an Ecore_Evas directly. It prevent leaking of memory in the case of half destroying Ecore_Evas. Reviewed-by: Hermet Park <> Differential Revision:
2019-06-20efl_input_pointer: rename tool to touch_idMarcel Hollerbach
tool was not very helpfull, and additionally, the docuemtnation of it was completly wrong. After searching through the code where tool was actaully set (efl_ui_win.c) it turned out that it is actaully the "id" of the pointer when there are multiple touch events. ref T7963 Reviewed-by: Mike Blumenkrantz <> Reviewed-by: Xavi Artigas <> Differential Revision:
2019-05-29ecore-evas: check for internal evas presence before using it during freeMike Blumenkrantz
Summary: some engines do not have an evas @fix Depends on D8971 Reviewers: devilhorns Reviewed By: devilhorns Subscribers: cedric, #reviewers, #committers Tags: #efl Differential Revision:
2019-05-22include evil_private.h in last files, and disable symbolic links on Windows ↵Vincent Torri
in a couple of files Test Plan: compilation Reviewers: zmike, raster, cedric Reviewed By: zmike Subscribers: #reviewers, #committers Tags: #efl Differential Revision:
2019-05-20remove Evil.h when not necessary, include evil_private.h when necessaryVincent Torri
Test Plan: compilation Reviewers: zmike, raster, cedric Reviewed By: zmike Subscribers: #reviewers, #committers Tags: #efl Differential Revision:
2019-04-25ecore_evas: generalize option defines.Hermet Park
There some engine option defines could be generalized from the window system since those options could be used through wayland, x11 both, and probably so on.
2019-04-25ecore wayland: expand internal interface to pass engine option list.Hermet Park
This is a prepartion patch to support msaa in wayland. ui window needs to deliver engine options (stencil, depth, msaa bits) to evas engine side, ecore_evas_wayland_egl should have the argument to pass.
2019-02-21interfaces: move animator,tick to efl.canvas.object and remove efl.animatorMike Blumenkrantz
Summary: this interface only contains a single event which is implemented only by the canvas object ref T7561 Reviewers: cedric, segfaultxavi Reviewed By: segfaultxavi Subscribers: #reviewers, #committers Tags: #efl Maniphest Tasks: T7561 Differential Revision:
2019-02-13efl_input: remove the API of efl_input_instance_getMarcel Hollerbach
there is basically no reason for this API. You can only use the API when you know the class, when you know the class you can also just know the function to call to get this API. The reason this API needs to go is that we don't want to use polymorphism on class-functions. ref T7675 Reviewed-by: Xavi Artigas <> Differential Revision:
2019-02-13ecore_evas: fix a potentional deref after null problemWonki Kim
Summary: this patch modify a logic to return after, failing to call eore_evas_buffer_allocfunc_new function. Reviewers: Hermet, bu5hm4n, cedric, devilhorns Reviewed By: devilhorns Subscribers: #reviewers, #committers Tags: #efl Differential Revision:
2019-01-31ecore-evas-buffer: Fix formattingChris Michael
NB: No functional changes
2019-01-15ecore_evas: Don't walk mice list twiceDerek Foreman
We know the item is in there, so we can remove it directly. Signed-off-by: Derek Foreman <> Reviewed-by: Cedric BAIL <> Differential Revision:
2018-12-14ecore_evas: Validate shadow geometryDerek Foreman
Negative values in shadow geometry make no sense at all, however it's happening all the time in wayland. Let's throw an ERR so it doesn't go unnoticed. Signed-off-by: Derek Foreman <> Reviewed-by: Chris Michael <> Differential Revision:
2018-12-03ecore evas - buffer - init ecore event evas as many times as shutdownCarsten Haitzler (Rasterman)
so ecore_event_evas_shutdown() was getting called much more than ecore_event_evas_init() - missing an init in the ee + img obj creator in ecore evas. this adds it in and ensures in allocation failures we dont over-init or shutdown too. @fix
2018-12-03ecore_evas - fix aninmator based frame render ticking to full framerateCarsten Haitzler (Rasterman)
so i was seeing ecore evas only rendering every 2nd frame... this is because it was adding and deleting animatiors every time it rendered instead of keeping one around as lon as updates where there to render and then remove it afterwards. this caused nasty timing problems and thus problems assessing framerate of rendered content etc. etc. ... not good. this fixes that. this only happened if you only used pure legacy ecore animators. if you used the efl animator tick events it worked right. @fix
2018-11-28ecore_evas_buffer: register it in ecore_evas_inputMarcel Hollerbach
this is done in order to make ecore_event_evas_key_down work with this. The function can be used to simulate interactions with a efl_ui_win. If this is not added, then the user of ecore_event_evas_key_down needs to differentiate between buffer engines and the rest of the engines. Differential Revision:
2018-11-09ecore evas - warn - buffer engine - set last tick get field to nullCarsten Haitzler (Rasterman)
missing field not set- set to null so we know its not set.
2018-10-26ecore: remove duplicated conditionsYeongjong Lee
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:
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