Author: Jean-Philippe Andre <jp.andre@samsung.com>
AuthorDate: Thu Jul 20 14:35:48 2017 +0900
Commit: Jean-Philippe Andre <jp.andre@samsung.com>
CommitDate: Thu Jul 20 15:17:36 2017 +0900
evas: Restore flag pre_render_done in render_mapped
Some objects don't go through render_pre (unchanged, child
of mapped parents), even though they will go through
evas_render_mapped. Those were marked as pre_render_done
inside evas_render_mapped since it seemed to fix some issues
a long time ago.
Unfortunately, if those objects are changed their flag may
not be reset to false, which means they never go through
render_pre, leading to render issues.
I believe simply restoring the value of the pre_render_done
flag should be good enough. I don't know why it is set to
true inside evas_render_mapped but I also don't want to find
out :)
See
9ac13e4aec83ea6dadfa62e4253b1db4ffe167e8 (old)
See
87e5e70a9d888ce93ed807bb0d39d1738241ad9b (older)
Patch made with @jiin.moon
Change-Id: I18cba0e979bc7fe50952ff33b01b9bc4160087a5
Evas_Object_Protected_Data *obj2;
Eina_Bool clean_them = EINA_FALSE;
Eina_Bool proxy_src_clip = EINA_TRUE;
+ Eina_Bool was_pre_render_done = obj->pre_render_done;
+
void *ctx;
if (!proxy_render_data)
sw = obj->cur->geometry.w;
sh = obj->cur->geometry.h;
RD(level, " surf size: %ix%i\n", sw, sh);
- if ((sw <= 0) || (sh <= 0))
- {
- RD(level, "}\n");
- return clean_them;
- }
+ if ((sw <= 0) || (sh <= 0)) goto end;
changed = evas_object_map_update(eo_obj, off_x, off_y, sw, sh, sw, sh);
on_empty_clip:
ENFN->context_free(ENDT, ctx);
}
+end:
RD(level, "}\n");
+ obj->pre_render_done = was_pre_render_done;
return clean_them;
}