* evas: Now all Evas_Rectangle are part of a pool. Next step would be to
remove free at the end of evas_object_render_pre_effect_updates and only do it on idle. SVN revision: 40040
This commit is contained in:
parent
fa4c0f3ea3
commit
55e281b4ff
|
@ -1040,14 +1040,7 @@ evas_object_gradient_render_post(Evas_Object *obj)
|
|||
/* data anymore we can free it if the object deems this is a good idea */
|
||||
o = (Evas_Object_Gradient *)(obj->object_data);
|
||||
/* remove those pesky changes */
|
||||
while (obj->clip.changes)
|
||||
{
|
||||
Evas_Rectangle *r;
|
||||
|
||||
r = (Evas_Rectangle *)obj->clip.changes->data;
|
||||
obj->clip.changes = eina_list_remove(obj->clip.changes, r);
|
||||
free(r);
|
||||
}
|
||||
evas_object_clip_changes_clean(obj);
|
||||
/* move cur to prev safely for object data */
|
||||
obj->prev = obj->cur;
|
||||
if (o->prev.type.name && (o->prev.type.name != o->cur.type.name))
|
||||
|
|
|
@ -398,14 +398,7 @@ evas_object_gradient2_linear_render_post(Evas_Object *obj)
|
|||
o = (Evas_Object_Gradient2_Linear *)(obj->object_data);
|
||||
og = (Evas_Object_Gradient2 *)(o);
|
||||
/* remove those pesky changes */
|
||||
while (obj->clip.changes)
|
||||
{
|
||||
Evas_Rectangle *r;
|
||||
|
||||
r = (Evas_Rectangle *)obj->clip.changes->data;
|
||||
obj->clip.changes = eina_list_remove(obj->clip.changes, r);
|
||||
free(r);
|
||||
}
|
||||
evas_object_clip_changes_clean(obj);
|
||||
/* move cur to prev safely for object data */
|
||||
obj->prev = obj->cur;
|
||||
obj->changed = 0;
|
||||
|
|
|
@ -396,14 +396,7 @@ evas_object_gradient2_radial_render_post(Evas_Object *obj)
|
|||
o = (Evas_Object_Gradient2_Radial *)(obj->object_data);
|
||||
og = (Evas_Object_Gradient2 *)(o);
|
||||
/* remove those pesky changes */
|
||||
while (obj->clip.changes)
|
||||
{
|
||||
Evas_Rectangle *r;
|
||||
|
||||
r = (Evas_Rectangle *)obj->clip.changes->data;
|
||||
obj->clip.changes = eina_list_remove(obj->clip.changes, r);
|
||||
free(r);
|
||||
}
|
||||
evas_object_clip_changes_clean(obj);
|
||||
/* move cur to prev safely for object data */
|
||||
obj->prev = obj->cur;
|
||||
obj->changed = 0;
|
||||
|
|
|
@ -2537,8 +2537,7 @@ evas_object_image_render_post(Evas_Object *obj)
|
|||
/* data anymore we can free it if the object deems this is a good idea */
|
||||
o = (Evas_Object_Image *)(obj->object_data);
|
||||
/* remove those pesky changes */
|
||||
EINA_LIST_FREE(obj->clip.changes, r)
|
||||
eina_mempool_free(_evas_rectangle_mp, r);
|
||||
evas_object_clip_changes_clean(obj);
|
||||
EINA_LIST_FREE(o->pixel_updates, r)
|
||||
eina_mempool_free(_evas_rectangle_mp, r);
|
||||
/* move cur to prev safely for object data */
|
||||
|
|
|
@ -405,14 +405,7 @@ evas_object_line_render_post(Evas_Object *obj)
|
|||
/* data anymore we can free it if the object deems this is a good idea */
|
||||
o = (Evas_Object_Line *)(obj->object_data);
|
||||
/* remove those pesky changes */
|
||||
while (obj->clip.changes)
|
||||
{
|
||||
Evas_Rectangle *r;
|
||||
|
||||
r = (Evas_Rectangle *)obj->clip.changes->data;
|
||||
obj->clip.changes = eina_list_remove(obj->clip.changes, r);
|
||||
free(r);
|
||||
}
|
||||
evas_object_clip_changes_clean(obj);
|
||||
/* move cur to prev safely for object data */
|
||||
obj->prev = obj->cur;
|
||||
o->prev = o->cur;
|
||||
|
|
|
@ -198,6 +198,16 @@ evas_object_render_pre_prev_cur_add(Evas_Rectangles *rects, Evas_Object *obj)
|
|||
//// obj->prev.cache.geometry.h);
|
||||
}
|
||||
|
||||
void
|
||||
evas_object_clip_changes_clean(Evas_Object *obj)
|
||||
{
|
||||
Evas_Rectangle *r;
|
||||
|
||||
EINA_LIST_FREE(obj->clip.changes, r)
|
||||
eina_mempool_free(_evas_rectangle_mp, r);
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
evas_object_render_pre_effect_updates(Evas_Rectangles *rects, Evas_Object *obj, int is_v, int was_v)
|
||||
{
|
||||
|
@ -276,14 +286,10 @@ evas_object_render_pre_effect_updates(Evas_Rectangles *rects, Evas_Object *obj,
|
|||
}
|
||||
else
|
||||
{
|
||||
while (obj->clip.changes)
|
||||
{
|
||||
free(obj->clip.changes->data);
|
||||
obj->clip.changes = eina_list_remove(obj->clip.changes, obj->clip.changes->data);
|
||||
}
|
||||
evas_object_clip_changes_clean(obj);
|
||||
for (i = 0; i < rects->count; ++i)
|
||||
{
|
||||
r = malloc(sizeof(Evas_Rectangle));
|
||||
r = eina_mempool_alloc(_evas_rectangle_mp, sizeof (Evas_Rectangle));
|
||||
if (!r) goto end;
|
||||
|
||||
*r = rects->array[i];
|
||||
|
|
|
@ -409,14 +409,7 @@ evas_object_polygon_render_post(Evas_Object *obj)
|
|||
/* data anymore we can free it if the object deems this is a good idea */
|
||||
o = (Evas_Object_Polygon *)(obj->object_data);
|
||||
/* remove those pesky changes */
|
||||
while (obj->clip.changes)
|
||||
{
|
||||
Evas_Rectangle *r;
|
||||
|
||||
r = (Evas_Rectangle *)obj->clip.changes->data;
|
||||
obj->clip.changes = eina_list_remove(obj->clip.changes, r);
|
||||
free(r);
|
||||
}
|
||||
evas_object_clip_changes_clean(obj);
|
||||
/* move cur to prev safely for object data */
|
||||
obj->prev = obj->cur;
|
||||
o->changed = 0;
|
||||
|
|
|
@ -291,14 +291,7 @@ evas_object_rectangle_render_post(Evas_Object *obj)
|
|||
/* data anymore we can free it if the object deems this is a good idea */
|
||||
o = (Evas_Object_Rectangle *)(obj->object_data);
|
||||
/* remove those pesky changes */
|
||||
while (obj->clip.changes)
|
||||
{
|
||||
Evas_Rectangle *r;
|
||||
|
||||
r = (Evas_Rectangle *)obj->clip.changes->data;
|
||||
obj->clip.changes = eina_list_remove(obj->clip.changes, r);
|
||||
free(r);
|
||||
}
|
||||
evas_object_clip_changes_clean(obj);
|
||||
/* move cur to prev safely for object data */
|
||||
obj->prev = obj->cur;
|
||||
}
|
||||
|
|
|
@ -1685,14 +1685,7 @@ evas_object_text_render_post(Evas_Object *obj)
|
|||
/* data anymore we can free it if the object deems this is a good idea */
|
||||
o = (Evas_Object_Text *)(obj->object_data);
|
||||
/* remove those pesky changes */
|
||||
while (obj->clip.changes)
|
||||
{
|
||||
Evas_Rectangle *r;
|
||||
|
||||
r = (Evas_Rectangle *)obj->clip.changes->data;
|
||||
obj->clip.changes = eina_list_remove(obj->clip.changes, r);
|
||||
free(r);
|
||||
}
|
||||
evas_object_clip_changes_clean(obj);
|
||||
/* move cur to prev safely for object data */
|
||||
obj->prev = obj->cur;
|
||||
o->prev = o->cur;
|
||||
|
|
|
@ -5529,8 +5529,7 @@ evas_object_textblock_render_post(Evas_Object *obj)
|
|||
/* data anymore we can free it if the object deems this is a good idea */
|
||||
o = (Evas_Object_Textblock *)(obj->object_data);
|
||||
/* remove those pesky changes */
|
||||
EINA_LIST_FREE(obj->clip.changes, r)
|
||||
eina_mempool_free(_evas_rectangle_mp, r);
|
||||
evas_object_clip_changes_clean(obj);
|
||||
/* move cur to prev safely for object data */
|
||||
obj->prev = obj->cur;
|
||||
// o->prev = o->cur;
|
||||
|
|
|
@ -423,12 +423,9 @@ evas_render_updates_internal(Evas *e, unsigned char make_updates, unsigned char
|
|||
{
|
||||
Evas_Rectangle *rect;
|
||||
|
||||
rect = malloc(sizeof(Evas_Rectangle));
|
||||
NEW_RECT(rect, ux, uy, uw, uh);
|
||||
if (rect)
|
||||
{
|
||||
rect->x = ux; rect->y = uy; rect->w = uw; rect->h = uh;
|
||||
updates = eina_list_append(updates, rect);
|
||||
}
|
||||
updates = eina_list_append(updates, rect);
|
||||
}
|
||||
off_x = cx - ux;
|
||||
off_y = cy - uy;
|
||||
|
@ -600,11 +597,10 @@ evas_render_updates_internal(Evas *e, unsigned char make_updates, unsigned char
|
|||
EAPI void
|
||||
evas_render_updates_free(Eina_List *updates)
|
||||
{
|
||||
while (updates)
|
||||
{
|
||||
free(updates->data);
|
||||
updates = eina_list_remove(updates, updates->data);
|
||||
}
|
||||
Evas_Rectangle *r;
|
||||
|
||||
EINA_LIST_FREE(updates, r)
|
||||
eina_mempool_free(_evas_rectangle_mp, r);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -703,6 +703,7 @@ void evas_object_free(Evas_Object *obj, int clean_layer);
|
|||
void evas_object_inject(Evas_Object *obj, Evas *e);
|
||||
void evas_object_release(Evas_Object *obj, int clean_layer);
|
||||
void evas_object_change(Evas_Object *obj);
|
||||
void evas_object_clip_changes_clean(Evas_Object *obj);
|
||||
void evas_object_render_pre_visible_change(Evas_Rectangles *rects, Evas_Object *obj, int is_v, int was_v);
|
||||
void evas_object_render_pre_clipper_change(Evas_Rectangles *rects, Evas_Object *obj);
|
||||
void evas_object_render_pre_prev_cur_add(Evas_Rectangles *rects, Evas_Object *obj);
|
||||
|
|
Loading…
Reference in New Issue