AgeCommit message (Collapse)Author
2017-02-21evas: Fix module memleak during evas_shutdownJean-Philippe Andre
This fixes a minor memory leak during shutdown. Note: This does NOT perform the dlclose (and still leaks the Eina_Module descriptor). Calling dlclose leads to a whole lot of other issues, so we avoid it.
2017-02-21evas: Fix make check (evas_suite compilation)Jean-Philippe Andre
This fixes issues where Evas_Object_Intercept_Cb_Type was not defined, as this is defined in Evas_Legacy.h (unfortunately... as it's used by elementary), but the private headers defining EFL_CANVAS_OBJECT_PROTECTED were included after Evas_Legacy.h.
2017-02-21evas: Fix compilation warning (unused variable)Jean-Philippe Andre
2017-02-21evas: Avoid data_scope_get in internal functionJean-Philippe Andre
2017-02-21evas: Inline part of clip_dirtyJean-Philippe Andre
clip_dirty is called A LOT. Unfortunately this patch does not result in very measurable improvements. ********************** Note about this merge: After this series of patches, the CPU usage for a certain test case has significantly gone down: Based on c0e6a8d698c17fc16f9b67fc9 (upstream before git push): NS since frame 2 = 28910806786 , 2937 frames = 9843652 / frame After this patch: NS since frame 2 = 19218592951 , 2928 frames = 6563727 / frame 1.18: NS since 2 = 13105584220 , 2961 frames = 4426066 / frame As we can see, 1.18 remains *much* better than 1.19. I'm still struggling trying to figure out why (clip_recalc is called more, but the call tree is hard to decypher). The test case is: EINA_FREEQ_BYPASS=1 ELM_TEST_AUTOBOUNCE=100 \ elementary_test -to "Scroller 2" EFL was compiled with GCC 6.3.1 with -O3 -g @optimization
2017-02-21evas: Inline part of clip_recalcJean-Philippe Andre
This function was moved out of inline (see d7c6fca6c00a0bfb05) but unfortunately the early checks at its beginning are likely to result in an early return. Inline this part so we get back a better performance. Inlining the whole function does not improve the performance, as GCC simply gives up with inlining. Note: Between 1.18 and master the number of calls to clip_recalc has simply blown out. It is thus crucial to find out where those calls come from but also micro-optimize the function itself. This patch does the latter only. @optimize
2017-02-21evas: Optimize out some calls to data_scope_getJean-Philippe Andre
Within evas when we know an object is marked as is_smart, then we know it's a smart object. :) @optimize
2017-02-21evas: Avoid more calls to efl_isa in clip_setJean-Philippe Andre
No need to verify that the clip is an evas object unless we're actually going to change said clipper. This has a minor effect, removing ~10% of all calls to efl_isa (0.1% of everything). After all those efl_isa patches the number of calls has dropped from 1.9M (~3.05%) to ~570k (0.76%). More can still be done, surely. Now efl_isa accounts for ~0.05% of my CPU usage according to perf top (down from ~0.7%). If edje uses EO APIs instead of legacy image APIs, then many of the remaining calls will vanish. @optimization
2017-02-21evas: Assume object is valid and avoid call to efl_isaJean-Philippe Andre
In an internal function we should be able to safely assume an object is indeed a smart object. @optimization
2017-02-21evas: Optimize out more calls to efl_isaJean-Philippe Andre
In relative smart move, we only need to check once that the object is indeed a valid smart object. This drops the call count from ~1.02M to ~785k. @optimization
2017-02-21evas: Avoid call to EAPI inside internal codeJean-Philippe Andre
This avoids calling efl_isa and locking the async mutex. In callgrind analysis, this reduces the count of calls to efl_isa from 1.96M to 1.02M. @optimization
2017-02-21evas: Avoid useless calls to eo_data_scope_getJean-Philippe Andre
Use an internal variant of the function for evas when we already have the protected data pointer.
2017-02-21eo: Make _eo_obj_pointer_done an inline functionJean-Philippe Andre
2017-02-21evas: Remove useless call to evas_object_async_blockJean-Philippe Andre
It's already called from the intercept cb.
2017-02-21evas: Inline checks for post-event cb callJean-Philippe Andre
This avoid excessive calls to a real function. @optimization
2017-02-21docs: Fix typos and some wrong expressions in Eina API reference doxygen.Myoungwoon Roy, Kim
Summary: I had fixed some typos and some wrong expressions, such as capital letters, singular, and orders of groups in Eina API reference doxygen. Test Plan: Doxygen Revision Reviewers: stefan, cedric, raster, Jaehyun_Cho, jpeg Reviewed By: jpeg Subscribers: conr2d Differential Revision:
2017-02-21examples: Use printf instead of fprintf(stdout, ...)Bryce Harrington
Summary: Also fix warning about lack of a format string: warning: format not a string literal and no format arguments [-Wformat-security] fprintf(stdout, commands); Signed-off-by: Bryce Harrington <> Reviewers: cedric, jpeg Reviewed By: jpeg Subscribers: cedric, jpeg Differential Revision:
2017-02-20release: Update NEWS and bump version for 1.19.0-beta2 releasev1.19.0-beta2Stefan Schmidt
2017-02-20eina utils: fix build without getpwent.Mykyta Biliavskyi
If HAVE_GETPWENT isn't defined - the closing brace was missed. Also prevent situation when strdup() tried to duplicate NULL pointer, because that could cause segfault. @fix
2017-02-20interface_scrollable: Improve gravity_set api to support pan changingWonki Kim
Summary: When you set gravity 1 on scroller, scroller sticks to the bottom even content is changed. however, scroller don't work like above, if size of pan is changed. this commit uses pan_pos_max rather than w/h of content_info because pan_pos_max is related with both content_size and pan size. gravity_set will work properly even if both size of content and pan are changed simultaneously. Test Plan: 1. Select 'scroll3' in the elementary_test 2. Append enough items so that scroll bar appears (about 30 items) 3. Go to the bottom and Set gravity 1.0 4. Check that scroller sticks to the bottom once you append another item (it works) 5. Check that scroller sticks to to bottom once you resize window(pan) (it doesn't work without this patch) Reviewers: eagleeye, jpeg, cedric, woohyun, z-wony, herdsman Differential Revision:
2017-02-20evas: do not error for smart class objectsMarcel Hollerbach
Summary: this should fix some spamming in e Reviewers: jpeg Reviewed By: jpeg Subscribers: cedric Differential Revision: Signed-off-by: Jean-Philippe Andre <>
2017-02-20ecore_evas_wayland_common: fix bug that window is not rotated when app ↵Jiyoun Park
request rotate. In landscape mode, width & height of evas are different with ecore's. so diff is checked differently according to the portrait & landscape mode.
2017-02-20elm_test: Add autobounce test for "Scroller 2"Jean-Philippe Andre
2017-02-19Canvas text: fix clearing existing styleDaniel Hirt
Fixes T5187. This fixes a leak in evas_textblock_style_user_pop, that made use of the new key-based efl_canvas_text_style_set api. @fix
2017-02-19elm_code: Another Coverity fix, better this time.Andy Williams
@fix CID1371322
2017-02-19readme - systemd is default on now... --disable if you dont want itCarsten Haitzler (Rasterman)
2017-02-19elm code - fix warning about sign comparisonsCarsten Haitzler (Rasterman)
2017-02-18elm_code: Fix Coverity issues.Andy Williams
@fix CID1356612 CID1368335 CID1368489 CID1371123 CID1371124 CID1371126 CID1371128
2017-02-17elm config base profiles - fixselect allow to be orrectly iniittedCarsten Haitzler (Rasterman)
fixes previous commit...
2017-02-17fix entry selection by having proper cfg update and def fieldsCarsten Haitzler (Rasterman)
this should fix T5183
2017-02-16eo: ensure the generation is correctly clampedMarcel Hollerbach
Summary: when a few recursive event emissions are happening, and in some deep recursive level a subscription to the same object is happening, the subscription would just be executed when the complete recursion is done. that is wrong. The subscription needs to be executed when the event is called after the subscription is added, undepended from any recursive level. That fixes that and adds a regression test for it. This was discovered in e, since e gives a lot of error messages about a eo object that is already freed. It turned out this object is returned from evas, and exactly the above happened to the EFL_EVENT_DEL subscription of that object. Test Plan: make check Reviewers: tasn, cedric, stefan_schmidt Subscribers: stefan_schmidt, netstar, zmike, raster, jpeg Differential Revision: Signed-off-by: Cedric BAIL <>
2017-02-16doxygen: fix typos and some wrong expressions in Edje and Eet API reference ↵Myoungwoon Roy, Kim
documentation. Summary: I had fixed some typos and some wrong expressions, such as capital letters, singular, and orders of groups in Edje and Eet API reference doxygen. Test Plan: Doxygen Revision Reviewers: stefan, cedric, raster, Jaehyun_Cho, jpeg Subscribers: conr2d Differential Revision: Signed-off-by: Cedric BAIL <>
2017-02-16docgen: add -p to print what exactly is being generated currentlyDaniel Kolesa
2017-02-16docgen: make sure all class retrievals are cachedDaniel Kolesa
2017-02-16docgen: cache function instantiationsDaniel Kolesa
2017-02-16docgen: cache class retrievals for performanceDaniel Kolesa
2017-02-16gengrid: Remove duplicated smart callbacksJean-Philippe Andre
WRN... evas_smart.c:219 evas_smart_cb_descriptions_fix() duplicated smart callback description with name 'item,focused' and type ''
2017-02-16widget: Reduce WRN to DBG for on_focus_region messageJean-Philippe Andre
Many widgets don't implement this function, and this case is perfectly well handled by the caller. No need to WRN here.
2017-02-16evas: Silence useless WRN message on canvas delJean-Philippe Andre
2017-02-16ecore_evas: Fix mouse event in inlined windowsJean-Philippe Andre
This fixes the following ERR message: ERR<10589>:eina_safety /home/jpeg/e/core/efl/src/lib/ecore_evas/ecore_evas.c:3149 _ecore_evas_mouse_move_process_internal() safety check failed: cursor == NULL
2017-02-16win: Avoid magic check failed in ecore with inline winJean-Philippe Andre
Fixes T4663
2017-02-16elm_test: Fix invalid API use (EO)Jean-Philippe Andre
2017-02-16win: Avoid malloc in icon_object_setJean-Philippe Andre
Also support both Evas.Image and EO Efl.Canvas.Image classes. Add a test case in elm_test (under "Icon"). I'm not so happy about this patch... it shows that the API barrier between legacy and EO implemented for images may not be such a great idea after all :(
2017-02-16evas: Flush post-event callbacks only when neededJean-Philippe Andre
This avoids flushing the post-event cb queue when processing recursive events. See 54e5841b2f6386765dd5e2831aa3481b952e5.
2017-02-16win: Fix window icons with object setJean-Philippe Andre
Fixes T4981
2017-02-16evas: Re-fix post-event cb by supporting recursionJean-Philippe Andre
The previous patch (b184874fa5a0c3177c) was preventing post-event callbacks from triggering any form of input event, including side-effects due to mouse,in. In fact by tracking which exact events we want to post-process we can support proper recursion. This fixes crashes in Bryce. I'm not changing the documentation as this is still a dubious code design. Fixes T3144 Fixes T5157
2017-02-16evas: Strengthen post-event callbacksJean-Philippe Andre
See T3144 that I marked as Wontfix. Bryce in E manually feeds events from a post-event callback resulting in Evas going insane and leading to frequent crashes. The ideal solution (for E) would be to ensure that everything works smoothly, the input event data is valid up until the post-event cb is called, etc... Unfortunately, with recursive events the exact order of operations may be messed up: the post-event I don't want to add yet more complexity to Evas events here (it's already spaghetti all over the place) so I'm simply blocking any new event feed when running the post-event callback list. It's not possible to just freeze the events (I tried, it failed). ********************** Some more explanation: post-event callbacks are used to implement reverse-order logic where the on-hold flag of an input event may be set by an event listener that does not come first. Here's a situation to illustrate: scroller A inside scroller B. As events are propagated from children to parents (assuming the propagate flag is set), we'd assume the events to go first to A and then to B, which means a mouse wheel event would make the inner-most scroller (A) scroll, and the outer-most scroller (B) wouldn't budge. But as things are designed, A and B are not simple evas objects, and the actual event-catching object is a top-most transparent rectangle (top-most in Z stack order). Since A is inside B, B's rectangle BR is over A's rectangle AR, thus catches the wheel event first. But in terms of UX we still want A to scroll, not B. The solution then is to reverse the event processing order and post-event callbacks are the way to do that. This comes with the consequence that the event_info needs to remain valid until the post-event is called, and stay the same (so that the on-hold flag set by A can be read by B). Recursive events (by explicit feed or modifying the canvas so that mouse,in or mouse,out are triggered) mess with this logic, and trigger the post-events too early (event is not fully processed) or too late (event_info is not valid anymore... and crash!). Thanks @raster for explaining the goal of post-event callbacks!
2017-02-16evas: Ensure post-event cb push is called from an event cbJean-Philippe Andre
This rejects calls to evas_post_event_callback_push() that don't originate from inside an input event callback.
2017-02-16evas/doc: Add warning about post_event_callback_pushJean-Philippe Andre
2017-02-16Revert "Revert "evas textblock: keep previous size when the calculation is ↵Carsten Haitzler (Rasterman)
skipped"" This reverts commit b8beb6834b01f9688cb5e7aa177bacbc713318b9. this now actually works... for some mysterious reason... ? :/ i am baffled. go back in until we can find the issue then...