forked from enlightenment/efl
fix proxy sourcing of smart obj that updates.
SVN revision: 59536
This commit is contained in:
parent
9347b624a6
commit
88b59a9bb6
|
@ -2849,8 +2849,8 @@ evas_object_image_render_pre(Evas_Object *obj)
|
|||
|
||||
if ((o->cur.fill.w < 1) || (o->cur.fill.h < 1))
|
||||
{
|
||||
ERR("%p has invalid fill size: %dx%d. Ignored",
|
||||
obj, o->cur.fill.w, o->cur.fill.h);
|
||||
ERR("%p has invalid fill size: %dx%d. Ignored",
|
||||
obj, o->cur.fill.w, o->cur.fill.h);
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -2862,13 +2862,12 @@ evas_object_image_render_pre(Evas_Object *obj)
|
|||
obj->cur.clipper->func->render_pre(obj->cur.clipper);
|
||||
}
|
||||
/* Proxy: Do it early */
|
||||
if (o->cur.source && o->cur.source->proxy.redraw)
|
||||
if (o->cur.source &&
|
||||
(o->cur.source->proxy.redraw || o->cur.source->changed))
|
||||
{
|
||||
/* XXX: Do I need to sort out the map here? */
|
||||
obj->changed = 1;
|
||||
evas_add_rect(&e->clip_changes,
|
||||
obj->cur.geometry.x, obj->cur.geometry.y,
|
||||
obj->cur.geometry.w, obj->cur.geometry.h);
|
||||
evas_object_render_pre_prev_cur_add(&e->clip_changes, obj);
|
||||
goto done;
|
||||
}
|
||||
|
||||
/* now figure what changed and add draw rects */
|
||||
|
@ -3161,6 +3160,7 @@ evas_object_image_is_opaque(Evas_Object *obj)
|
|||
if (!o->engine_data) return 0;
|
||||
o->cur.opaque = 1;
|
||||
}
|
||||
// FIXME: use proxy
|
||||
if (o->cur.source) return 0; /* FIXME: Should go poke at the object */
|
||||
if ((obj->cur.map) && (obj->cur.usemap)) return 0;
|
||||
if (obj->cur.render_op == EVAS_RENDER_COPY) return 1;
|
||||
|
@ -3194,6 +3194,7 @@ evas_object_image_was_opaque(Evas_Object *obj)
|
|||
if (!o->engine_data) return 0;
|
||||
o->prev.opaque = 1;
|
||||
}
|
||||
// FIXME: use proxy
|
||||
if (o->prev.source) return 0; /* FIXME: Should go poke at the object */
|
||||
if (obj->prev.usemap) return 0;
|
||||
if (obj->prev.render_op == EVAS_RENDER_COPY) return 1;
|
||||
|
@ -3222,6 +3223,7 @@ evas_object_image_is_inside(Evas_Object *obj, Evas_Coord x, Evas_Coord y)
|
|||
if ((x < 0) || (y < 0) || (x >= w) || (y >= h)) return 0;
|
||||
if (!o->cur.has_alpha) return 1;
|
||||
|
||||
// FIXME: proxy needs to be honored
|
||||
if (obj->cur.map)
|
||||
{
|
||||
x = obj->cur.map->mx;
|
||||
|
|
|
@ -98,6 +98,10 @@ evas_object_change(Evas_Object *obj)
|
|||
{
|
||||
EINA_LIST_FOREACH(obj->clip.clipees, l, obj2) evas_object_change(obj2);
|
||||
}
|
||||
EINA_LIST_FOREACH(obj->proxy.proxies, l, obj2)
|
||||
{
|
||||
evas_object_change(obj2);
|
||||
}
|
||||
if (obj->smart.parent) evas_object_change(obj->smart.parent);
|
||||
}
|
||||
|
||||
|
|
|
@ -152,6 +152,22 @@ _evas_render_phase1_direct(Evas *e,
|
|||
Evas_Object *proxy;
|
||||
|
||||
RD(" [--- PHASE 1 DIRECT\n");
|
||||
for (i = 0; i < active_objects->count; i++)
|
||||
{
|
||||
Evas_Object *obj;
|
||||
|
||||
obj = eina_array_data_get(active_objects, i);
|
||||
if (obj->changed)
|
||||
{
|
||||
/* Flag need redraw on proxy too */
|
||||
evas_object_clip_recalc(obj);
|
||||
if (obj->proxy.proxies)
|
||||
{
|
||||
EINA_LIST_FOREACH(obj->proxy.proxies, l, proxy)
|
||||
proxy->proxy.redraw = 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
for (i = 0; i < render_objects->count; i++)
|
||||
{
|
||||
Evas_Object *obj;
|
||||
|
@ -167,7 +183,14 @@ _evas_render_phase1_direct(Evas *e,
|
|||
{
|
||||
obj->proxy.redraw = 1;
|
||||
EINA_LIST_FOREACH(obj->proxy.proxies, l, proxy)
|
||||
proxy->func->render_pre(proxy);
|
||||
{
|
||||
proxy->func->render_pre(proxy);
|
||||
_evas_render_prev_cur_clip_cache_add(e, proxy);
|
||||
}
|
||||
}
|
||||
else if (obj->proxy.redraw)
|
||||
{
|
||||
_evas_render_prev_cur_clip_cache_add(e, obj);
|
||||
}
|
||||
if (obj->pre_render_done)
|
||||
{
|
||||
|
|
Loading…
Reference in New Issue