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) &&
|
if ((obj->is_smart) &&
|
||||||
((has_map && !_evas_render_can_map(obj)) ||
|
((has_map && !_evas_render_can_map(obj)) ||
|
||||||
(obj->changed_map && !has_map) ||
|
|
||||||
obj->changed_src_visible))
|
obj->changed_src_visible))
|
||||||
{
|
{
|
||||||
RD(0, " has map + smart\n");
|
RD(0, " has map + smart\n");
|
||||||
_evas_render_prev_cur_clip_cache_add(e, obj);
|
_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
|
else
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in New Issue