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))
|
if ((o->cur.fill.w < 1) || (o->cur.fill.h < 1))
|
||||||
{
|
{
|
||||||
ERR("%p has invalid fill size: %dx%d. Ignored",
|
ERR("%p has invalid fill size: %dx%d. Ignored",
|
||||||
obj, o->cur.fill.w, o->cur.fill.h);
|
obj, o->cur.fill.w, o->cur.fill.h);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2862,13 +2862,12 @@ evas_object_image_render_pre(Evas_Object *obj)
|
||||||
obj->cur.clipper->func->render_pre(obj->cur.clipper);
|
obj->cur.clipper->func->render_pre(obj->cur.clipper);
|
||||||
}
|
}
|
||||||
/* Proxy: Do it early */
|
/* 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? */
|
/* XXX: Do I need to sort out the map here? */
|
||||||
obj->changed = 1;
|
evas_object_render_pre_prev_cur_add(&e->clip_changes, obj);
|
||||||
evas_add_rect(&e->clip_changes,
|
goto done;
|
||||||
obj->cur.geometry.x, obj->cur.geometry.y,
|
|
||||||
obj->cur.geometry.w, obj->cur.geometry.h);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* now figure what changed and add draw rects */
|
/* 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;
|
if (!o->engine_data) return 0;
|
||||||
o->cur.opaque = 1;
|
o->cur.opaque = 1;
|
||||||
}
|
}
|
||||||
|
// FIXME: use proxy
|
||||||
if (o->cur.source) return 0; /* FIXME: Should go poke at the object */
|
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.map) && (obj->cur.usemap)) return 0;
|
||||||
if (obj->cur.render_op == EVAS_RENDER_COPY) return 1;
|
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;
|
if (!o->engine_data) return 0;
|
||||||
o->prev.opaque = 1;
|
o->prev.opaque = 1;
|
||||||
}
|
}
|
||||||
|
// FIXME: use proxy
|
||||||
if (o->prev.source) return 0; /* FIXME: Should go poke at the object */
|
if (o->prev.source) return 0; /* FIXME: Should go poke at the object */
|
||||||
if (obj->prev.usemap) return 0;
|
if (obj->prev.usemap) return 0;
|
||||||
if (obj->prev.render_op == EVAS_RENDER_COPY) return 1;
|
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 ((x < 0) || (y < 0) || (x >= w) || (y >= h)) return 0;
|
||||||
if (!o->cur.has_alpha) return 1;
|
if (!o->cur.has_alpha) return 1;
|
||||||
|
|
||||||
|
// FIXME: proxy needs to be honored
|
||||||
if (obj->cur.map)
|
if (obj->cur.map)
|
||||||
{
|
{
|
||||||
x = obj->cur.map->mx;
|
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->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);
|
if (obj->smart.parent) evas_object_change(obj->smart.parent);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -152,6 +152,22 @@ _evas_render_phase1_direct(Evas *e,
|
||||||
Evas_Object *proxy;
|
Evas_Object *proxy;
|
||||||
|
|
||||||
RD(" [--- PHASE 1 DIRECT\n");
|
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++)
|
for (i = 0; i < render_objects->count; i++)
|
||||||
{
|
{
|
||||||
Evas_Object *obj;
|
Evas_Object *obj;
|
||||||
|
@ -167,7 +183,14 @@ _evas_render_phase1_direct(Evas *e,
|
||||||
{
|
{
|
||||||
obj->proxy.redraw = 1;
|
obj->proxy.redraw = 1;
|
||||||
EINA_LIST_FOREACH(obj->proxy.proxies, l, proxy)
|
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)
|
if (obj->pre_render_done)
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in New Issue