forked from enlightenment/efl
evas map: check render condition more elaborately.
Summary: Ok, this was started from a bug that canvas getting not be updated. If map is just disabled, at least one frame in the map region should be redrawn So I added a condition 'map changed' in the render even though map is off status. Now, I got a performance regression issue because it makes dirty region is always true for the map object. That is a corner case acutally, that object is not rendered but map still have changed status. I replaced the condition only if object is changed + map is changed. At least, my test case works better with this patch. @fix T6975 Reviewers: #committers, ManMower, devilhorns Reviewed By: #committers, ManMower Subscribers: ApB, ManMower, cedric, #committers, zmike Tags: #efl Maniphest Tasks: T6975 Differential Revision: https://phab.enlightenment.org/D6429
This commit is contained in:
parent
aa9cc3a068
commit
208c579e0d
|
@ -505,12 +505,19 @@ _evas_render_phase1_direct(Evas_Public_Data *e,
|
|||
|
||||
if ((obj->is_smart) &&
|
||||
((has_map && !_evas_render_can_map(obj)) ||
|
||||
(obj->changed_map && !has_map) ||
|
||||
obj->changed_src_visible))
|
||||
{
|
||||
RD(0, " has map + smart\n");
|
||||
_evas_render_prev_cur_clip_cache_add(e, obj);
|
||||
}
|
||||
/* This is the only case that map was just turned off,
|
||||
Need to redraw the previous obj region as well. */
|
||||
else if (!has_map && obj->changed_map &&
|
||||
_evas_render_object_changed_get(obj))
|
||||
{
|
||||
_evas_render_prev_cur_clip_cache_add(e, obj);
|
||||
obj->changed_map = EINA_FALSE;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
Loading…
Reference in New Issue