evas_object_smart_members_get_direct(eo_obj),
obj->map->cur.map, obj->map->cur.usemap,
obj->map->prev.map, obj->map->prev.usemap,
- _evas_render_has_map(eo_obj, obj),
+ _evas_render_has_map(obj),
_evas_render_had_map(obj));
if ((obj->is_smart) &&
- ((_evas_render_has_map(eo_obj, obj) ||
+ (((_evas_render_has_map(obj) && !_evas_render_can_map(obj)) ||
(obj->changed_src_visible))))
{
RD(0, " has map + smart\n");
Eina_Bool src_changed, int level)
{
Eina_Bool clean_them = EINA_FALSE;
+ Eina_Bool map, hmap, can_map;
int is_active;
- Eina_Bool map, hmap;
Evas_Object_Protected_Data *obj = eo_data_scope_get(eo_obj, EVAS_OBJECT_CLASS);
//Need pre render for the children of mapped object.
}
#endif
- map = _evas_render_has_map(eo_obj, obj);
+ map = _evas_render_has_map(obj);
hmap = _evas_render_had_map(obj);
+ can_map = _evas_render_can_map(obj);
- if ((restack) && (!map))
+ if (restack && !(map && !can_map))
{
if (!obj->changed)
{
clean_them = EINA_TRUE;
}
- if (map)
+ if (map && !can_map)
{
RD(level, " obj mapped\n");
if (!hmap && obj->cur->clipper)
}
return clean_them;
}
- else if (hmap)
+ else if (hmap) // && !can_map) // FIXME
{
RD(level, " had map - restack objs\n");
// OBJ_ARRAY_PUSH(restack_objects, obj);
{
if (!map)
{
- if ((obj->map->cur.map) && (obj->map->cur.usemap)) map = EINA_TRUE;
+ if ((obj->map->cur.map) && (obj->map->cur.usemap))
+ map = EINA_TRUE;
}
if (map != hmap)
{
*redraw_all = 1;
}
}
- if (!map && obj->cur->clipper)
+ if (!(map && !can_map) && obj->cur->clipper)
{
// Fix some bad clipping issues after an evas_map animation finishes
evas_object_change(obj->cur->clipper->object, obj->cur->clipper);
if (!obj->layer) goto clean_stuff;
//If the children are in active objects, They should be cleaned up.
- if (obj->changed_map && _evas_render_has_map(eo_obj, obj))
+ if (obj->changed_map && _evas_render_has_map(obj) && !_evas_render_can_map(obj))
goto clean_stuff;
evas_object_clip_recalc(obj);
/* Check if any one is the stack make this object mapped */
eo_tmp = eo_obj;
tmp = eo_data_scope_get(eo_tmp, EVAS_OBJECT_CLASS);
- while (tmp && !_evas_render_has_map(eo_tmp, tmp))
+ while (tmp && !(_evas_render_has_map(tmp) && !_evas_render_can_map(tmp)))
{
tmp = eo_data_scope_get(eo_tmp, EVAS_OBJECT_CLASS);
eo_tmp = tmp->smart.parent;
}
- if (tmp && _evas_render_has_map(eo_tmp, tmp)) return EINA_FALSE; /* we are mapped, we can't be an overlay */
+ if (tmp && _evas_render_has_map(tmp) && !_evas_render_can_map(tmp))
+ return EINA_FALSE; /* we are mapped, we can't be an overlay */
- if (!evas_object_is_visible(eo_obj, obj)) return EINA_FALSE; /* no need to update the overlay if it's not visible */
+ if (!evas_object_is_visible(eo_obj, obj))
+ return EINA_FALSE; /* no need to update the overlay if it's not visible */
/* If any recoloring of the surface is needed, n overlay to */
if ((obj->cur->cache.clip.r != 255) ||
// set render_pre - for child objs that may not have gotten it.
obj->pre_render_done = EINA_TRUE;
- RD(level, " hasmap: %s [can_map:%p (%d)] cur.map:%p cur.usemap:%d\n",
- _evas_render_has_map(eo_obj, obj) ? "yes" : "no",
- obj->func->can_map,
+ RD(level, " hasmap: %s [can_map: %d] cur.map:%p cur.usemap:%d\n",
+ _evas_render_has_map(obj) ? "yes" : "no",
obj->func->can_map ? obj->func->can_map(eo_obj): -1,
obj->map->cur.map, obj->map->cur.usemap);
- if (_evas_render_has_map(eo_obj, obj))
+ if (_evas_render_has_map(obj) && !_evas_render_can_map(obj))
{
int sw, sh;
Eina_Bool changed = EINA_FALSE, rendered = EINA_FALSE;
_c = ENFN->context_clip_get(ENDT, ctx, &_cx, &_cy, &_cw, &_ch);
RD(level, " draw mapped obj: render(clip: [%d] %d,%d %dx%d)\n", _c, _cx, _cy, _cw, _ch);
#endif
+ // FIXME: Should this really be sync render?
obj->func->render(eo_obj, obj, obj->private_data,
ENDT, ctx,
obj->map->surface, off_x2, off_y2,
}
}
}
- //if (surface == ENFN)
ENFN->context_clip_clip(ENDT, ctx, ecx, ecy, ecw, ech);
if (obj->cur->cache.clip.visible || !proxy_src_clip)
{
{
if (proxy_src_clip)
{
- if (_evas_render_has_map(eo_obj, obj) ||
+ if ((_evas_render_has_map(obj) && !_evas_render_can_map(obj)) ||
_evas_render_object_is_mask(obj->cur->clipper))
evas_object_clip_recalc(obj);
_evas_render_mapped_context_clip_set(evas, eo_obj, obj, ctx,
if (proxy_src_clip)
{
- if (_evas_render_has_map(eo_obj, obj) ||
+ if ((_evas_render_has_map(obj) && !_evas_render_can_map(obj)) ||
_evas_render_object_is_mask(obj->cur->clipper))
evas_object_clip_recalc(obj);
x = obj->cur->cache.clip.x;