{
_evas_map_calc_geom_change(obj);
evas_object_mapped_clip_across_mark(obj);
- //FIXME: Since the last frame is not updated when map is
- //disabled, afterimage problem is happened in s/w rendering.
- //Need to find out the fundamental reason then fix it.
- evas_damage_rectangle_add(obj->layer->evas,
- 0,
- 0,
- obj->layer->evas->output.w,
- obj->layer->evas->output.h);
}
}
_evas_map_calc_map_geometry(obj);
{
if (obj->cur.map)
{
+ obj->changed_map = EINA_TRUE;
+
if (obj->cur.map->surface)
{
obj->layer->evas->engine.func->image_map_surface_free
if (!obj->cur.usemap) _evas_map_calc_geom_change(obj);
else _evas_map_calc_map_geometry(obj);
if (obj->cur.usemap)
- {
- evas_object_mapped_clip_across_mark(obj);
- //FIXME: Since the last frame is not updated when map is
- //disabled, afterimage problem is happened in s/w
- //rendering. Need to find out the fundamental reason
- //then fix it.
- evas_damage_rectangle_add(obj->layer->evas,
- 0,
- 0,
- obj->layer->evas->output.w,
- obj->layer->evas->output.h);
- }
+ evas_object_mapped_clip_across_mark(obj);
}
return;
}
+ // We do have the same exact count of point in this map, so just copy it
if ((obj->cur.map) && (obj->cur.map->count == map->count))
{
Evas_Map *omap = obj->cur.map;
obj->cur.map = _evas_map_new(map->count);
memcpy(obj->cur.map, omap, sizeof(Evas_Map) + (map->count * sizeof(Evas_Map_Point)));
_evas_map_copy(obj->cur.map, map);
- if (obj->prev.map == omap) obj->prev.map = NULL;
free(omap);
}
else
if (obj->cur.usemap)
evas_object_mapped_clip_across_mark(obj);
}
+ obj->changed_map = EINA_TRUE;
+
_evas_map_calc_map_geometry(obj);
}
evas_object_render_pre_visible_change(&e->clip_changes, obj, is_v, was_v);
if (!o->pixel_updates) goto done;
}
- if ((obj->cur.map != obj->prev.map) ||
- (obj->cur.usemap != obj->prev.usemap))
+ if (obj->changed_map)
{
evas_object_render_pre_prev_cur_add(&e->clip_changes, obj);
goto done;
evas_object_render_pre_visible_change(&obj->layer->evas->clip_changes, obj, is_v, was_v);
goto done;
}
- if ((obj->cur.map != obj->prev.map) ||
- (obj->cur.usemap != obj->prev.usemap))
+ if (obj->changed_map)
{
- evas_object_render_pre_prev_cur_add(&obj->layer->evas->clip_changes, obj);
+ evas_object_render_pre_prev_cur_add(&obj->layer->evas->clip_changes,
+ obj);
goto done;
}
/* it's not visible - we accounted for it appearing or not so just abort */
evas_object_render_pre_visible_change(&obj->layer->evas->clip_changes, obj, is_v, was_v);
goto done;
}
- if ((obj->cur.map != obj->prev.map) ||
- (obj->cur.usemap != obj->prev.usemap))
+ if (obj->changed_map)
{
- evas_object_render_pre_prev_cur_add(&obj->layer->evas->clip_changes, obj);
+ evas_object_render_pre_prev_cur_add(&obj->layer->evas->clip_changes,
+ obj);
goto done;
}
/* it's not visible - we accounted for it appearing or not so just abort */
evas_object_render_pre_visible_change(&obj->layer->evas->clip_changes, obj, is_v, was_v);
goto done;
}
- if ((obj->cur.map != obj->prev.map) ||
- (obj->cur.usemap != obj->prev.usemap))
+ if (obj->changed_map)
{
- evas_object_render_pre_prev_cur_add(&obj->layer->evas->clip_changes, obj);
+ evas_object_render_pre_prev_cur_add(&obj->layer->evas->clip_changes,
+ obj);
goto done;
}
/* it's not visible - we accounted for it appearing or not so just abort */
evas_object_smart_render_pre(Evas_Object *obj)
{
if (obj->pre_render_done) return;
- if ((obj->cur.map != obj->prev.map) ||
- (obj->cur.usemap != obj->prev.usemap))
+ if (!obj->child_has_map)
+ {
+#if 0
+ Evas_Object_Smart *o;
+
+ o = (Evas_Object_Smart *)(obj->object_data);
+ if (o->member_count > 1 &&
+ obj->cur.bounding_box.w == obj->prev.bounding_box.w &&
+ obj->cur.bounding_box.h == obj->prev.bounding_box.h &&
+ (obj->cur.bounding_box.x != obj->prev.bounding_box.x ||
+ obj->cur.bounding_box.y != obj->prev.bounding_box.y))
+ {
+ fprintf(stderr, "Wouhou, I can detect moving smart object (%s, %p < %p)\n", evas_object_type_get(obj), obj, obj->smart.parent);
+ }
+#endif
+ }
+ if (obj->changed_map)
evas_object_render_pre_prev_cur_add(&obj->layer->evas->clip_changes, obj);
obj->pre_render_done = EINA_TRUE;
obj, is_v, was_v);
goto done;
}
- if ((obj->cur.map != obj->prev.map) ||
- (obj->cur.usemap != obj->prev.usemap))
+ if (obj->changed_map)
{
- evas_object_render_pre_prev_cur_add(&obj->layer->evas->clip_changes,
- obj);
+ evas_object_render_pre_prev_cur_add(&obj->layer->evas->clip_changes,
+ obj);
goto done;
}
/* its not visible - we accounted for it appearing or not so just abort */
evas_object_render_pre_visible_change(&obj->layer->evas->clip_changes, obj, is_v, was_v);
goto done;
}
- if ((obj->cur.map != obj->prev.map) ||
- (obj->cur.usemap != obj->prev.usemap))
+ if (obj->changed_map)
{
- evas_object_render_pre_prev_cur_add(&obj->layer->evas->clip_changes, obj);
+ evas_object_render_pre_prev_cur_add(&obj->layer->evas->clip_changes,
+ obj);
goto done;
}
/* it's not visible - we accounted for it appearing or not so just abort */
}
return clean_them;
}
- else if (_evas_render_had_map(obj))
+ else if (hmap)
{
RDI(level);
RD(" had map - restack objs\n");
obj->restack = EINA_FALSE;
evas_object_change_reset(obj);
}
- else if ((obj->cur.map != obj->prev.map) ||
- (obj->cur.usemap != obj->prev.usemap) || clean_them)
+ else if (clean_them)
{
RD(" OBJ [%p] post... func2\n", obj);
obj->func->render_post(obj);