evas/box: avoid triggering smart_move callback
authorMike Blumenkrantz <zmike@samsung.com>
Tue, 16 Jul 2019 19:31:46 +0000 (15:31 -0400)
committerSangHyeon Jade Lee <sh10233.lee@samsung.com>
Tue, 23 Jul 2019 05:04:43 +0000 (14:04 +0900)
commit6e76e3267e58a85db114b0babf8140a32b9e423d
treef6fe6d56822845332e54744c5287cad8ca0fcbdb
parent4e800f0da87e59915063e7b6d7527d8364a9acb9
evas/box: avoid triggering smart_move callback

any time an evas box is moved, it flags itself to do a recalc on all of
its contents in the next render. evas box also inherits from smart clipped
class, however, which means that it will also move all of its contents
immediately on every single move. this results in something like:

move(box) -> for content in box { move(content) } -> render ->
  recalc(box) -> for content in box { calc(content); move(content); }

which is massively inefficient and results in box being completely unusable
once it has a large number of contents

by skipping immediate move() calls for all the box contents, we can bring this
performance back to usable levels

@fix

Reviewed-by: Cedric BAIL <cedric.bail@free.fr>
Differential Revision: https://phab.enlightenment.org/D9336
src/lib/evas/canvas/evas_object_box.c