evas: reset change after map direct render 56/264656/3 accepted/tizen/unified/20210929.022336 submit/tizen/20210928.143216
authorShinwoo Kim <cinoo.kim@samsung.com>
Tue, 28 Sep 2021 02:30:13 +0000 (11:30 +0900)
committerShinwoo Kim <cinoo.kim@samsung.com>
Tue, 28 Sep 2021 07:42:26 +0000 (16:42 +0900)
commit91ab00c759455332e251c7a8f5ca58291ad513b0
treee44d56e499ada071dd02052a315288aa52ee0a6c
parentc29634026f26bb4a006a09a19d12fd9f386aa1c4
evas: reset change after map direct render

There is a flickering issue which is caused by absence of reset.

If the source image does not reset, then it remains in pending objects
array at the end of  evas_render_updates_internal, and it keeps the
'obj->changed' as TRUE for next frame. And it makes its parent 'changed'
value TRUE as well.

But after handling pending objects array, we are handling render objects
array. The parent 'changed' value is set to FALSE.

As a result, the parent object does not draw on the next frame, and its
children including the source image neither.
(no push to restack objects array, render_pre, output_redraws_rect_add)

Even though there is a change on the source image for the next frame,
(for example, evas_object_color_set)
it cannot makes the parent object 'changed' value TRUE,
(see the logic of evas_object_change)
because the source image 'changed' is already TRUE by the logic handling
pending objects array on the previous frame.

We are calling evas_object_change_reset after evas_render_mapped.
So, same logic should exist for the map direct render.

*tizen_fix

Change-Id: If8b57a8f423e25f0c1f91a90dc30ac1f2c8b4972
src/lib/evas/canvas/evas_render.c