Commit Graph

3009 Commits

Author SHA1 Message Date
Jean-Philippe Andre 24b5eedd6d evas: Remove useless call to evas_object_async_block
It's already called from the intercept cb.
2017-02-21 10:52:39 +09:00
Jean-Philippe Andre 60dc978857 evas: Inline checks for post-event cb call
This avoid excessive calls to a real function.

@optimization
2017-02-21 10:52:39 +09:00
Marcel Hollerbach 75908799dc evas: do not error for smart class objects
Summary: this should fix some spamming in e

Reviewers: jpeg

Reviewed By: jpeg

Subscribers: cedric

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

Signed-off-by: Jean-Philippe Andre <jp.andre@samsung.com>
2017-02-20 11:38:02 +09:00
Daniel Hirt 66dd98ed6b Canvas text: fix clearing existing style
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-19 19:09:16 +02:00
Jean-Philippe Andre 4fdd30bce5 evas: Silence useless WRN message on canvas del 2017-02-16 21:56:11 +09:00
Jean-Philippe Andre a014b21400 evas: Flush post-event callbacks only when needed
This avoids flushing the post-event cb queue when processing
recursive events. See 54e5841b2f.
2017-02-16 20:17:12 +09:00
Jean-Philippe Andre 54e5841b2f evas: Re-fix post-event cb by supporting recursion
The previous patch (b184874fa5) 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-16 19:51:06 +09:00
Jean-Philippe Andre b184874fa5 evas: Strengthen post-event callbacks
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-16 18:10:18 +09:00
Jean-Philippe Andre e434653fc2 evas: Ensure post-event cb push is called from an event cb
This rejects calls to evas_post_event_callback_push() that don't
originate from inside an input event callback.
2017-02-16 16:26:42 +09:00
Jean-Philippe Andre 5335352eda evas/doc: Add warning about post_event_callback_push 2017-02-16 16:25:50 +09:00
Carsten Haitzler 0a28cb97af Revert "Revert "evas textblock: keep previous size when the calculation is skipped""
This reverts commit b8beb6834b.

this now actually works... for some mysterious reason... ? :/ i am
baffled. go back in until we can find the issue then...
2017-02-16 10:31:11 +09:00
Stefan Schmidt 63bd03f2ed evas_loader: add since tag to newly added task_cancelled API 2017-02-15 12:31:51 +01:00
Jean-Philippe Andre d689afccae group: Track calls to group_del
After a long search I found that fileselector was not calling
super.group_del on deletion, leading to the use of dangling pointers.
So let's verify that group_del is properly called.

See T4598
2017-02-15 20:11:22 +09:00
Jean-Philippe Andre cfd5f11410 textblock: Fix dangling data ref
In this case data_scope_get is more appropriate as the data is
indeed stored on the stack (function scope) and not somewhere else.

After this last fix I see no eo_debug error logs in elementary test.
Yay! eo_debug is now usable :)
2017-02-15 15:58:21 +09:00
Jean-Philippe Andre a568d26f72 evas & elm: Fix invalid uses of efl_data_ref(obj, NULL)
The data class should be specified for debug purposes.
Also, this fixes invalid uses inside the smart object
implementation where it assumed that the smart data was part
of the eo data. It may not (legacy objects).
2017-02-15 15:35:38 +09:00
Jean-Philippe Andre b7213f2d64 evas_render: Remove data_unref that has no data_ref 2017-02-15 15:35:38 +09:00
Carsten Haitzler b8beb6834b Revert "evas textblock: keep previous size when the calculation is skipped"
This reverts commit c39855a8ac.

This actually breaks 1 dialog in e (app exited with error exit code).
it worked everywhere else so i thought it was good. seemingly not
after i saw one of these. revert D3595
2017-02-14 18:10:05 +09:00
Youngbok Shin c39855a8ac evas textblock: keep previous size when the calculation is skipped
Summary:
When a size calculation is skipped because of some reasons,
Evas Textblock should keep same size with the previous size.
@fix

Test Plan: N/A

Reviewers: raster, herdsman, cedric, jpeg

Differential Revision: https://phab.enlightenment.org/D4659
2017-02-14 16:17:02 +09:00
Jean-Philippe Andre 5d55fe0321 evas key: Add null safety to EAPIs
This avoids a crash with Bryces. This does not fix the problem
with the Bryce itself. Ping @zmike

See T5157
2017-02-14 15:21:50 +09:00
Jean-Philippe Andre 65ae1c812c evas: Fix double free in post events
A use of the post event callback in Bryce triggered a double free
as an event was being processed but not yet removed from its list,
leading to an invalid state of the Eina_List.

Also remove obj from struct as it is unused.

Fixes T5157
2017-02-14 15:21:25 +09:00
Carsten Haitzler 76244d89a7 vpath file - add a keey property to know if obj should be kept around
if its a file downloading (to a tmp location) or a zip/tar/whatever
file being extracted also to a tmp location and that tmp file needs to
be removed after ...you need to keep the obj around to know when to
delete the file. this makes the keeping optional and you query if the
vpath obj is meant to be kept or not. if it's not it's safe to del
immediately.

this cuts down 1 obj per image obj/edje obj when generally unused.
save some mem.
2017-02-13 16:51:49 +09:00
Marcel Hollerbach 008711b3b0 evas_table: abort when there is already the option struct
otherwise we would just reuse that struct. This results in
freeing/writing/reading the memory twice.

This error message should give the dev a tip on what went wrong, instead
of leaving cryptic valgrind messages and crashes.

This fixes the sysinfo desktop gadget in enlightenment.

ref T5173
2017-02-12 00:10:05 +01:00
Marcel Hollerbach c59a8ddebc evas: fix child position when the container is moved
when the position of the container is changed the children should also be
repositioned, so setting the changed flag.

The visual effect where you saw that was in luncher where items of the
bar did not get fully up.
2017-02-12 00:10:05 +01:00
Carsten Haitzler c1c7ad8360 evas color copy neon asm - declare tmp as output not input for warning--
less warnings - use output not input for tmp var. much better.
2017-02-12 00:32:22 +09:00
Carsten Haitzler f4088a1f74 evas smooth scaler - fix warning where indenting is misleading
indeed the indenting is misleading. fix.
2017-02-12 00:29:49 +09:00
Carsten Haitzler 40af2935af evas blit main - put mmx funcs in ifdefs as they are not used on arm
fixes warning
2017-02-12 00:29:49 +09:00
Carsten Haitzler 5424345c46 evas draw func get - make pixels as unused as it is in neon asm cases
also a little shitespace cleanup and correct ()ing of ops to clean
this function up a bit.
2017-02-12 00:29:41 +09:00
Carsten Haitzler f00dbd2252 evas convert color - neon asm - fix warning by casting - no side effects
it's a warning one way or another so reduce noise with a harmless case
as passing in a pit ro a 32bit type is more restrictive than the ptr
it accepts (an 8bit type)
2017-02-11 23:13:00 +09:00
Cedric BAIL 5ac43bb26d evas: use the right structure to not over allocate memory.
Eina_Trash is designed for storing cached pointer without any memory
consumption. Please be careful with EFL memory consumption.
2017-02-10 14:27:29 -08:00
Stefan Schmidt baf4813d87 docs: efl filters: document all new data structures for efl filters 2017-02-09 14:47:21 +01:00
Carsten Haitzler a84370fcd8 evas yuv convert - fix unused increments
this removes useless yp1 += and yop2 += as they are SET int he loop.
this fixes 1367510 and 1367511
2017-02-08 21:19:39 +09:00
Carsten Haitzler 020535eea1 evas mask filter - remove unused increment of msk as its set in-loop
msk is set inside the loop body, so msk += is pointless.

fix CID 1367512
2017-02-08 21:19:39 +09:00
Carsten Haitzler 5bb34aa2ce evas cserver client - remove dead if 0'd code 2017-02-08 21:19:39 +09:00
Carsten Haitzler 93abad0a59 evas callbacks - add comment to note fallthrough is intended
swtich fallthrough oftenis not intended but in this case it is, so
documente it as such.
2017-02-08 21:19:39 +09:00
Carsten Haitzler b61e69a956 evas cache image - remove double unlock of image task locks.
this is indeed a bug and fixes coverity CID 1367492
2017-02-08 21:19:39 +09:00
Carsten Haitzler 144092b2fa evas image obj - remove logically dead code
coverity is right - it's logically dead code. fix CID 1367774
2017-02-08 21:19:39 +09:00
Carsten Haitzler b5348e47cc evas image load - remove unreachable code
it's just printing a warning anyway and coverity CID 1368210 is right
as it says it's unreachable. fix.
2017-02-08 21:19:39 +09:00
Carsten Haitzler c657d41fc3 evas image load - handle null module handle in case
this fixes CID 1368338
2017-02-08 21:19:39 +09:00
Carsten Haitzler 5d8034f87d Revert "evas_async_events: integrated Ecore_Pipe in evas_async_events"
This reverts commit ea0492e0c6.

this drops software engine rendering to like 5-10fps! or at least
visually about that... not tested enough at all!
2017-02-08 11:26:26 +09:00
Carsten Haitzler 08ea619ed0 evas destructor - take lock arount post render list while freeing
this should fix CID 1369019 though really shouldnt be an issue...
2017-02-08 08:48:35 +09:00
Carsten Haitzler 6d458544a6 evas textblock filter data set - avoid crash on freeing data binding
if balue is NULL the data binding is removed and freed, but we don't
return at that point but instead fall back to using/replacing the
databinding.

this fixes CID 1369022
2017-02-08 08:48:35 +09:00
Ivan Furs ea0492e0c6 evas_async_events: integrated Ecore_Pipe in evas_async_events
Summary:
Integrated Ecore_Pipe in evas_async_events

Reviewers: #eflete, raster, jpeg, vtorri, artem.popov, cedric

Reviewed By: cedric

Subscribers: cedric, jpeg

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

Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
2017-02-07 14:17:47 -08:00
Cedric BAIL bb928cbb93 evas: we now need to initialize ecore as it is a dependency. 2017-02-07 14:17:47 -08:00
Cedric BAIL 1b4a2c0ac9 evas: more hardening of evas access map.x 2017-02-06 10:51:50 -08:00
Cedric BAIL e1bd14f933 evas: harden check on map presence. 2017-02-06 10:51:50 -08:00
Carsten Haitzler 51638afbeb evas render - drop eo overhead by using ptrs we already have
several calls, specifically evas_object_change_reset,
evas_object_cur_prev, and evas_object_clip_changes_clean that are
called directly or indirectly as part of evas render on at least every
active object if not more, were doing full eo obj lookups when their
calling functions already all had the eo protected data looked up.
tha's silly and just adds overhead we don't need. my test dropped
_eo_obj_pointer_get overhead in perf profiles from 4.48% to 2.65%. see:

   4.48%  libeo.so.1.18.99            [.] _eo_obj_pointer_get
   4.23%  libevas.so.1.18.99          [.] evas_render_updates_internal
   2.61%  libevas.so.1.18.99          [.] evas_render_updates_internal_loop
   1.68%  libeo.so.1.18.99            [.] efl_data_scope_get
   1.57%  libc-2.24.so                [.] _int_malloc
   1.42%  libevas.so.1.18.99          [.] evas_object_smart_changed_get
   1.09%  libevas.so.1.18.99          [.] evas_object_clip_recalc.part.37
   1.08%  libpthread-2.24.so          [.] pthread_getspecific
   1.05%  libevas.so.1.18.99          [.] efl_canvas_object_class_get
   1.01%  libevas.so.1.18.99          [.] evas_object_cur_prev
   0.99%  libeo.so.1.18.99            [.] _efl_object_event_callback_legacy_call
   0.87%  libevas.so.1.18.99          [.] _evas_render_phase1_object_ctx_render_cache_append
   0.82%  libpthread-2.24.so          [.] pthread_mutex_lock
   0.81%  libevas.so.1.18.99          [.] _evas_render_phase1_object_process
   0.79%  libc-2.24.so                [.] _int_free

vs now the improved:

   4.82%  libevas.so.1.18.99          [.] evas_render_updates_internal
   3.44%  libevas.so.1.18.99          [.] evas_render_updates_internal_loop
   2.65%  libeo.so.1.18.99            [.] _eo_obj_pointer_get
   2.22%  libc-2.24.so                [.] _int_malloc
   1.46%  libevas.so.1.18.99          [.] evas_object_smart_changed_get
   1.04%  libeo.so.1.18.99            [.] _efl_object_event_callback_legacy_call
   1.03%  libevas.so.1.18.99          [.] _evas_render_phase1_object_ctx_render_cache_append
   0.97%  libeina.so.1.18.99          [.] eina_chained_mempool_malloc
   0.93%  libevas.so.1.18.99          [.] evas_object_clip_recalc.part.37
   0.92%  libpthread-2.24.so          [.] pthread_mutex_lock
   0.91%  libevas.so.1.18.99          [.] _evas_render_phase1_object_process
   0.84%  libc-2.24.so                [.] _int_free
   0.84%  libevas.so.1.18.99          [.] evas_object_cur_prev
   0.83%  libeina.so.1.18.99          [.] eina_chained_mempool_free
   0.80%  libeo.so.1.18.99            [.] efl_data_scope_get

of course other things "increase their percentage" as oe overhead now
dropped, and things seem to move around a bit, but it does make sense
to do this with no downsides i can see as we already are accessing the
protected data ptr in the parent func.
2017-02-04 11:49:56 +09:00
Gustavo Sverzut Barbieri 8dc853f230 ifdef RUN_IN_TREE logic.
This logic is only needed for autotools, cmake will replicate the
installation file structure and thus eina_prefix works out of box.
2017-02-03 12:36:38 -02:00
Cedric BAIL 62d6b4072c evas: simplify waiting logic for image decoding as we do not need lock and cond with Ecore_Thread infra. 2017-02-02 10:30:39 -08:00
Cedric BAIL ddf1907217 evas: make sure we always wait in the correct thread. 2017-02-02 10:30:39 -08:00
Carsten Haitzler 3cb947d1a5 evas grid smart - fix divide by 0
if object happens to be 0x0 then we can get a divide by 0... fix!

@fix
2017-02-02 08:50:49 +09:00