evas: only draw the hole when it's needed.

SVN revision: 64047
This commit is contained in:
Cedric BAIL 2011-10-13 09:23:42 +00:00
parent c26c5b6fa2
commit e2d8b7892d
2 changed files with 17 additions and 4 deletions

View File

@ -3792,7 +3792,18 @@ _evas_object_image_video_overlay_show(Evas_Object *obj)
o->created || !o->video_visible)
o->video.resize(o->video.data, obj, &o->video, obj->cur.cache.clip.w, obj->cur.cache.clip.h);
if (!o->video_visible || o->created)
o->video.show(o->video.data, obj, &o->video);
{
o->video.show(o->video.data, obj, &o->video);
}
else
{
/* Cancel dirty on the image */
Eina_Rectangle *r;
o->dirty_pixels = 0;
EINA_LIST_FREE(o->pixel_updates, r)
eina_rectangle_free(r);
}
o->video_visible = EINA_TRUE;
o->created = EINA_FALSE;
}

View File

@ -1303,9 +1303,6 @@ evas_render_updates_internal(Evas *e,
&e->render_objects,
&redraw_all);
_evas_render_phase1_direct(e, &e->active_objects, &e->restack_objects,
&e->delete_objects, &e->render_objects);
/* phase 1.5. check if the video should be inlined or stay in their overlay */
alpha = e->engine.func->canvas_alpha_get(e->engine.data.output,
e->engine.data.context);
@ -1319,6 +1316,11 @@ evas_render_updates_internal(Evas *e,
_evas_object_image_video_overlay_hide(obj);
}
/* phase 1.8. pre render for proxy */
_evas_render_phase1_direct(e, &e->active_objects, &e->restack_objects,
&e->delete_objects, &e->render_objects);
/* phase 2. force updates for restacks */
for (i = 0; i < e->restack_objects.count; ++i)
{