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 :) See9ac13e4aec
(old) See87e5e70a9d
(older) Patch made with @jiin.moon
This commit is contained in:
parent
cb19c77558
commit
7243b71a19
|
@ -1725,6 +1725,7 @@ evas_render_mapped(Evas_Public_Data *evas, Evas_Object *eo_obj,
|
||||||
Evas_Object_Protected_Data *obj2;
|
Evas_Object_Protected_Data *obj2;
|
||||||
Eina_Bool clean_them = EINA_FALSE;
|
Eina_Bool clean_them = EINA_FALSE;
|
||||||
Eina_Bool proxy_src_clip = EINA_TRUE;
|
Eina_Bool proxy_src_clip = EINA_TRUE;
|
||||||
|
Eina_Bool was_pre_render_done = obj->pre_render_done;
|
||||||
void *ctx;
|
void *ctx;
|
||||||
|
|
||||||
if (!proxy_render_data)
|
if (!proxy_render_data)
|
||||||
|
@ -1876,12 +1877,7 @@ evas_render_mapped(Evas_Public_Data *evas, Evas_Object *eo_obj,
|
||||||
sw = obj->cur->geometry.w;
|
sw = obj->cur->geometry.w;
|
||||||
sh = obj->cur->geometry.h;
|
sh = obj->cur->geometry.h;
|
||||||
RD(level, " surf size: %ix%i\n", sw, sh);
|
RD(level, " surf size: %ix%i\n", sw, sh);
|
||||||
if ((sw <= 0) || (sh <= 0))
|
if ((sw <= 0) || (sh <= 0)) goto end;
|
||||||
{
|
|
||||||
RD(level, "}\n");
|
|
||||||
eina_evlog("-render_object", eo_obj, 0.0, NULL);
|
|
||||||
return clean_them;
|
|
||||||
}
|
|
||||||
|
|
||||||
changed = evas_object_map_update(eo_obj, off_x, off_y, sw, sh, sw, sh);
|
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:
|
on_empty_clip:
|
||||||
ENFN->context_free(ENDT, ctx);
|
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);
|
eina_evlog("-render_object", eo_obj, 0.0, NULL);
|
||||||
return clean_them;
|
return clean_them;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue