summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJean-Philippe Andre <jp.andre@samsung.com>2017-07-20 14:35:48 +0900
committerJean-Philippe Andre <jp.andre@samsung.com>2017-07-20 15:17:36 +0900
commit7243b71a19500e72780dc684bd7b2094b9bd5050 (patch)
tree2fa0633bcb4407ef871b11b589318a8d60553602
parentcb19c77558079e5faa37c27f5db02879b664c63e (diff)
downloadefl-7243b71a19500e72780dc684bd7b2094b9bd5050.tar.gz
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
-rw-r--r--src/lib/evas/canvas/evas_render.c12
1 files changed, 5 insertions, 7 deletions
diff --git a/src/lib/evas/canvas/evas_render.c b/src/lib/evas/canvas/evas_render.c
index b994aa29cd..1f2602adbc 100644
--- a/src/lib/evas/canvas/evas_render.c
+++ b/src/lib/evas/canvas/evas_render.c
@@ -1725,6 +1725,7 @@ evas_render_mapped(Evas_Public_Data *evas, Evas_Object *eo_obj,
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)
@@ -1876,12 +1877,7 @@ evas_render_mapped(Evas_Public_Data *evas, Evas_Object *eo_obj,
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");
- eina_evlog("-render_object", eo_obj, 0.0, NULL);
- 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);
@@ -2298,8 +2294,10 @@ evas_render_mapped(Evas_Public_Data *evas, Evas_Object *eo_obj,
on_empty_clip:
ENFN->context_free(ENDT, ctx);
}
- RD(level, "}\n");
+end:
+ RD(level, "}\n");
+ obj->pre_render_done = was_pre_render_done;
eina_evlog("-render_object", eo_obj, 0.0, NULL);
return clean_them;
}