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;
}
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 */
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;
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;
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;
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;
{
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)
{