Evas: If an object goes to be hidden without replacing the cur/prev state info, the object context can be corrupted at the next show time. Now it replaces the cur/prev in that rare case.

This commit is contained in:
ChunEon Park 2013-04-16 03:05:16 +09:00
parent 3f3ad67616
commit 4163b2f509
3 changed files with 27 additions and 8 deletions

View File

@ -1,3 +1,8 @@
2013-04-15 ChunEon Park
* Evas: If an object goes to be hidden without replacing the cur/prev
state info, the object context can be corrupted at the next show time.
Now it replaces the cur/prev in that rare case.
2013-04-15 Tom Hacohen
* Evas textblock: Fixed a bug with deletion of ranges that end just
before a visual format.

1
NEWS
View File

@ -243,4 +243,5 @@ Fixes:
* Evas: fix gif decoding bug related with background color.
* Evas: fix gif bug related with scale down decode.
* Evas textblock: Fixed a bug with deletion of ranges that end just a visual format.
* Evas: If an object goes to be hidden without replacing the cur/prev state info, the object context can be corrupted at the next show time. Now it replaces the cur/prev in that rare case.

View File

@ -497,17 +497,30 @@ _evas_render_phase1_object_process(Evas_Public_Data *e, Evas_Object *eo_obj,
}
else
{
if ((is_active) && (!obj->clip.clipees) &&
_evas_render_is_relevant(eo_obj))
if ((!obj->clip.clipees) && _evas_render_is_relevant(eo_obj))
{
RDI(level);
RD(" relevant + active\n");
if (obj->restack)
eina_array_push(restack_objects, obj);
if (is_active)
{
RDI(level);
RD(" relevant + active\n");
if (obj->restack)
eina_array_push(restack_objects, obj);
else
{
eina_array_push(render_objects, obj);
obj->render_pre = EINA_TRUE;
}
}
else
{
eina_array_push(render_objects, obj);
obj->render_pre = EINA_TRUE;
/* It goes to be hidden. Prev caching should be replaced
by the current (hidden) state. */
if (evas_object_is_visible(eo_obj, obj) !=
evas_object_was_visible(eo_obj, obj))
evas_object_cur_prev(eo_obj);
RDI(level);
RD(" skip - not smart, not active or clippees or not relevant\n");
}
}
else