parent
6facf35bb7
commit
7f1e95afc8
|
@ -888,4 +888,5 @@
|
||||||
2012-07-17 Cedric Bail
|
2012-07-17 Cedric Bail
|
||||||
|
|
||||||
* Fix garbage left by mapped smart object when they fly away from the canvas.
|
* Fix garbage left by mapped smart object when they fly away from the canvas.
|
||||||
|
* Fix map life cycle.
|
||||||
|
|
||||||
|
|
|
@ -22,6 +22,7 @@ Fixes:
|
||||||
* Add svg rendering with Esvg
|
* Add svg rendering with Esvg
|
||||||
* Don't accept broken map.
|
* Don't accept broken map.
|
||||||
* Fix garbage left by mapped smart object when they fly away from the canvas.
|
* Fix garbage left by mapped smart object when they fly away from the canvas.
|
||||||
|
* Fix map life cycle.
|
||||||
|
|
||||||
Removal:
|
Removal:
|
||||||
* Remove EVAS_FRAME_QUEUING, EVAS_SLI, METRIC_CACHE and WORD_CACHE.
|
* Remove EVAS_FRAME_QUEUING, EVAS_SLI, METRIC_CACHE and WORD_CACHE.
|
||||||
|
|
|
@ -41,6 +41,8 @@ _evas_map_calc_map_geometry(Evas_Object *obj)
|
||||||
// WARN: Do not merge below code to SLP until it is fixed.
|
// WARN: Do not merge below code to SLP until it is fixed.
|
||||||
// It has an infinite loop bug.
|
// It has an infinite loop bug.
|
||||||
if (obj->prev.map)
|
if (obj->prev.map)
|
||||||
|
{
|
||||||
|
if (obj->prev.map != obj->cur.map)
|
||||||
{
|
{
|
||||||
// FIXME: this causes an infinite loop somewhere... hard to debug
|
// FIXME: this causes an infinite loop somewhere... hard to debug
|
||||||
if (obj->prev.map->count == obj->cur.map->count)
|
if (obj->prev.map->count == obj->cur.map->count)
|
||||||
|
@ -69,10 +71,18 @@ _evas_map_calc_map_geometry(Evas_Object *obj)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!ch)
|
||||||
|
{
|
||||||
|
if (obj->cache_map) evas_map_free(obj->cache_map);
|
||||||
|
obj->cache_map = obj->cur.map;
|
||||||
|
obj->cur.map = obj->prev.map;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
ch = 1;
|
ch = 1;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
else
|
else
|
||||||
ch = 1;
|
ch = 1;
|
||||||
|
|
||||||
|
@ -468,8 +478,19 @@ evas_object_map_set(Evas_Object *obj, const Evas_Map *map)
|
||||||
obj->cur.map->surface = NULL;
|
obj->cur.map->surface = NULL;
|
||||||
}
|
}
|
||||||
obj->prev.geometry = obj->cur.map->normal_geometry;
|
obj->prev.geometry = obj->cur.map->normal_geometry;
|
||||||
|
|
||||||
|
if (obj->prev.map == obj->cur.map)
|
||||||
|
obj->cur.map = NULL;
|
||||||
|
else if (!obj->cache_map)
|
||||||
|
{
|
||||||
|
obj->cache_map = obj->cur.map;
|
||||||
|
obj->cur.map = NULL;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
_evas_map_free(obj, obj->cur.map);
|
_evas_map_free(obj, obj->cur.map);
|
||||||
obj->cur.map = NULL;
|
obj->cur.map = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
if (!obj->prev.map)
|
if (!obj->prev.map)
|
||||||
{
|
{
|
||||||
|
@ -485,6 +506,15 @@ evas_object_map_set(Evas_Object *obj, const Evas_Map *map)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (obj->prev.map == obj->cur.map)
|
||||||
|
obj->cur.map = NULL;
|
||||||
|
|
||||||
|
if (!obj->cur.map)
|
||||||
|
{
|
||||||
|
obj->cur.map = obj->cache_map;
|
||||||
|
obj->cache_map = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
// We do have the same exact count of point in this map, so just copy it
|
// 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))
|
if ((obj->cur.map) && (obj->cur.map->count == map->count))
|
||||||
_evas_map_copy(obj->cur.map, map);
|
_evas_map_copy(obj->cur.map, map);
|
||||||
|
|
|
@ -3456,7 +3456,7 @@ evas_object_image_render_post(Evas_Object *obj)
|
||||||
EINA_LIST_FREE(o->pixel_updates, r)
|
EINA_LIST_FREE(o->pixel_updates, r)
|
||||||
eina_rectangle_free(r);
|
eina_rectangle_free(r);
|
||||||
/* move cur to prev safely for object data */
|
/* move cur to prev safely for object data */
|
||||||
obj->prev = obj->cur;
|
evas_object_cur_prev(obj);
|
||||||
o->prev = o->cur;
|
o->prev = o->cur;
|
||||||
o->changed = 0;
|
o->changed = 0;
|
||||||
/* FIXME: copy strings across */
|
/* FIXME: copy strings across */
|
||||||
|
|
|
@ -379,7 +379,7 @@ evas_object_line_render_post(Evas_Object *obj)
|
||||||
/* remove those pesky changes */
|
/* remove those pesky changes */
|
||||||
evas_object_clip_changes_clean(obj);
|
evas_object_clip_changes_clean(obj);
|
||||||
/* move cur to prev safely for object data */
|
/* move cur to prev safely for object data */
|
||||||
obj->prev = obj->cur;
|
evas_object_cur_prev(obj);
|
||||||
o->prev = o->cur;
|
o->prev = o->cur;
|
||||||
o->changed = EINA_FALSE;
|
o->changed = EINA_FALSE;
|
||||||
}
|
}
|
||||||
|
|
|
@ -40,6 +40,17 @@ evas_object_change_reset(Evas_Object *obj)
|
||||||
obj->changed_pchange = EINA_FALSE;
|
obj->changed_pchange = EINA_FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
evas_object_cur_prev(Evas_Object *obj)
|
||||||
|
{
|
||||||
|
if (obj->cur.map != obj->prev.map)
|
||||||
|
{
|
||||||
|
if (obj->cache_map) evas_map_free(obj->cache_map);
|
||||||
|
obj->cache_map = obj->prev.map;
|
||||||
|
}
|
||||||
|
obj->prev = obj->cur;
|
||||||
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
evas_object_free(Evas_Object *obj, int clean_layer)
|
evas_object_free(Evas_Object *obj, int clean_layer)
|
||||||
{
|
{
|
||||||
|
@ -50,6 +61,8 @@ evas_object_free(Evas_Object *obj, int clean_layer)
|
||||||
#endif
|
#endif
|
||||||
if (!strcmp(obj->type, "image")) evas_object_image_video_surface_set(obj, NULL);
|
if (!strcmp(obj->type, "image")) evas_object_image_video_surface_set(obj, NULL);
|
||||||
evas_object_map_set(obj, NULL);
|
evas_object_map_set(obj, NULL);
|
||||||
|
if (obj->prev.map) evas_map_free(obj->prev.map);
|
||||||
|
if (obj->cache_map) evas_map_free(obj->cache_map);
|
||||||
evas_object_grabs_cleanup(obj);
|
evas_object_grabs_cleanup(obj);
|
||||||
evas_object_intercept_cleanup(obj);
|
evas_object_intercept_cleanup(obj);
|
||||||
if (obj->smart.parent) was_smart_child = 1;
|
if (obj->smart.parent) was_smart_child = 1;
|
||||||
|
|
|
@ -439,7 +439,7 @@ evas_object_polygon_render_post(Evas_Object *obj)
|
||||||
/* remove those pesky changes */
|
/* remove those pesky changes */
|
||||||
evas_object_clip_changes_clean(obj);
|
evas_object_clip_changes_clean(obj);
|
||||||
/* move cur to prev safely for object data */
|
/* move cur to prev safely for object data */
|
||||||
obj->prev = obj->cur;
|
evas_object_cur_prev(obj);
|
||||||
o->changed = 0;
|
o->changed = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -279,7 +279,7 @@ evas_object_rectangle_render_post(Evas_Object *obj)
|
||||||
/* remove those pesky changes */
|
/* remove those pesky changes */
|
||||||
evas_object_clip_changes_clean(obj);
|
evas_object_clip_changes_clean(obj);
|
||||||
/* move cur to prev safely for object data */
|
/* move cur to prev safely for object data */
|
||||||
obj->prev = obj->cur;
|
evas_object_cur_prev(obj);
|
||||||
}
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
|
|
|
@ -1234,7 +1234,7 @@ evas_object_smart_render_pre(Evas_Object *obj)
|
||||||
static void
|
static void
|
||||||
evas_object_smart_render_post(Evas_Object *obj)
|
evas_object_smart_render_post(Evas_Object *obj)
|
||||||
{
|
{
|
||||||
obj->prev = obj->cur;
|
evas_object_cur_prev(obj);
|
||||||
}
|
}
|
||||||
|
|
||||||
static unsigned int evas_object_smart_id_get(Evas_Object *obj)
|
static unsigned int evas_object_smart_id_get(Evas_Object *obj)
|
||||||
|
|
|
@ -1795,7 +1795,7 @@ evas_object_text_render_post(Evas_Object *obj)
|
||||||
/* remove those pesky changes */
|
/* remove those pesky changes */
|
||||||
evas_object_clip_changes_clean(obj);
|
evas_object_clip_changes_clean(obj);
|
||||||
/* move cur to prev safely for object data */
|
/* move cur to prev safely for object data */
|
||||||
obj->prev = obj->cur;
|
evas_object_cur_prev(obj);
|
||||||
o->prev = o->cur;
|
o->prev = o->cur;
|
||||||
o->changed = 0;
|
o->changed = 0;
|
||||||
}
|
}
|
||||||
|
|
|
@ -9869,7 +9869,7 @@ evas_object_textblock_render_post(Evas_Object *obj)
|
||||||
/* remove those pesky changes */
|
/* remove those pesky changes */
|
||||||
evas_object_clip_changes_clean(obj);
|
evas_object_clip_changes_clean(obj);
|
||||||
/* move cur to prev safely for object data */
|
/* move cur to prev safely for object data */
|
||||||
obj->prev = obj->cur;
|
evas_object_cur_prev(obj);
|
||||||
/* o->prev = o->cur; */
|
/* o->prev = o->cur; */
|
||||||
/* o->changed = 0; */
|
/* o->changed = 0; */
|
||||||
}
|
}
|
||||||
|
|
|
@ -841,7 +841,7 @@ evas_object_textgrid_render_post(Evas_Object *obj)
|
||||||
/* remove those pesky changes */
|
/* remove those pesky changes */
|
||||||
evas_object_clip_changes_clean(obj);
|
evas_object_clip_changes_clean(obj);
|
||||||
/* move cur to prev safely for object data */
|
/* move cur to prev safely for object data */
|
||||||
obj->prev = obj->cur;
|
evas_object_cur_prev(obj);
|
||||||
o->prev = o->cur;
|
o->prev = o->cur;
|
||||||
o->changed = 0;
|
o->changed = 0;
|
||||||
|
|
||||||
|
|
|
@ -543,6 +543,7 @@ struct _Evas_Object
|
||||||
Eina_Bool parent_cached_surface : 1;
|
Eina_Bool parent_cached_surface : 1;
|
||||||
} cur, prev;
|
} cur, prev;
|
||||||
|
|
||||||
|
Evas_Map *cache_map;
|
||||||
char *name;
|
char *name;
|
||||||
|
|
||||||
Evas_Intercept_Func *interceptors;
|
Evas_Intercept_Func *interceptors;
|
||||||
|
@ -911,6 +912,7 @@ extern "C" {
|
||||||
|
|
||||||
Evas_Object *evas_object_new(Evas *e);
|
Evas_Object *evas_object_new(Evas *e);
|
||||||
void evas_object_change_reset(Evas_Object *obj);
|
void evas_object_change_reset(Evas_Object *obj);
|
||||||
|
void evas_object_cur_prev(Evas_Object *obj);
|
||||||
void evas_object_free(Evas_Object *obj, int clean_layer);
|
void evas_object_free(Evas_Object *obj, int clean_layer);
|
||||||
void evas_object_update_bounding_box(Evas_Object *obj);
|
void evas_object_update_bounding_box(Evas_Object *obj);
|
||||||
void evas_object_inject(Evas_Object *obj, Evas *e);
|
void evas_object_inject(Evas_Object *obj, Evas *e);
|
||||||
|
|
Loading…
Reference in New Issue