Do not inform callbacks that did not changed the state of object.
authorbarbieri <barbieri@7cbeb6ba-43b4-40fd-8cce-4c39aea84d33>
Thu, 5 Feb 2009 14:37:58 +0000 (14:37 +0000)
committerbarbieri <barbieri@7cbeb6ba-43b4-40fd-8cce-4c39aea84d33>
Thu, 5 Feb 2009 14:37:58 +0000 (14:37 +0000)
commitd5c46a8b3f70777581103113fb112d5e2f345556
treea660a220ef14bcca9c8f44307ea17ae2af3fd7f3
parentf6d5eaa4349b77f9ea0c1407e320a17a78af49da
Do not inform callbacks that did not changed the state of object.

For some unknown reason evas was informing EVAS_CALLBACK_* even if the
original call did not changed the internal object state, that is, new
value is already equal to current value.

This is specially costly since Edje, Box, Table and possible other
layout engines will call evas_object_resize(), move(), show(), hide()
even if the state has not changed, assuming evas will ignore the call
(as it does). The real overhead might come if there are listeners
attached to these events, that in turn might do lots of other stuff,
leading to a torrent of useless calls.

I marked it for removal, please test it and uncomment '#define
CALLBACK_NOOPS' to get the old behavior back. It does seems to work
with e17 and edje_editor. If problems appear, let's try to fix the
real problem instead of getting this code back, it's a performance
penalty.

git-svn-id: svn+ssh://svn.enlightenment.org/var/svn/e/trunk/evas@38955 7cbeb6ba-43b4-40fd-8cce-4c39aea84d33
src/lib/canvas/evas_object_main.c