From: chuneon.park Date: Tue, 24 May 2011 05:08:57 +0000 (+0900) Subject: fixed after image problem indirectly X-Git-Tag: REL_I9200_20110603-1~30 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=ed3bcd4606e29d86e54702c5ac0e261e8f82b968;p=framework%2Fuifw%2Felementary.git fixed after image problem indirectly --- diff --git a/src/lib/elm_transit.c b/src/lib/elm_transit.c index d9fd977..7fb4fe0 100644 --- a/src/lib/elm_transit.c +++ b/src/lib/elm_transit.c @@ -133,7 +133,7 @@ _elm_transit_obj_states_save(Evas_Object *obj, Elm_Obj_Data *obj_data) } static Eina_Bool -_hash_foreach_pass_events_set(const Eina_Hash *hash, const void *key, void *data, void *fdata) +_hash_foreach_pass_events_set(const Eina_Hash *hash __UNUSED__, const void *key, void *data __UNUSED__, void *fdata) { Elm_Transit *transit = fdata; evas_object_pass_events_set((Evas_Object*) key, transit->event_enabled); @@ -141,7 +141,7 @@ _hash_foreach_pass_events_set(const Eina_Hash *hash, const void *key, void *data } static Eina_Bool -_hash_foreach_obj_states_save(const Eina_Hash *hash, const void *key, void *data, void *fdata) +_hash_foreach_obj_states_save(const Eina_Hash *hash __UNUSED__, const void *key, void *data, void *fdata __UNUSED__) { _elm_transit_obj_states_save((Evas_Object *) key, (Elm_Obj_Data *) data); return EINA_TRUE; @@ -162,6 +162,46 @@ _elm_transit_object_remove_cb(void *data, Evas *e __UNUSED__, Evas_Object *obj, if (!transit->objs) elm_transit_del(transit); } +//TODO: Remove! +//Since evas map have a afterimage bug for this time. +//This function is added temporary. +static void +_obj_damage_area_set(Evas_Object *obj) +{ + const Evas_Map *map; + Evas_Coord_Point coords; + Evas_Coord_Point min, max; + int i; + + map = evas_object_map_get(obj); + if (!map) return; + + evas_map_point_coord_get(map, 0, &coords.x, &coords.y, NULL); + + max = min = coords; + + for (i = 1; i < 4; ++i) + { + evas_map_point_coord_get(map, i, &coords.x, &coords.y, NULL); + + if (coords.x < min.x) + min.x = coords.x; + else if (coords.x > max.x) + max.x = coords.x; + + if (coords.y < min.y) + min.y = coords.y; + else if (coords.y > max.y) + max.y = coords.y; + } + + evas_damage_rectangle_add(evas_object_evas_get(obj), + min.x, min.y, + max.x - min.x, max.y - min.y); +} + + + static void _elm_transit_object_remove(Elm_Transit *transit, Evas_Object *obj) { @@ -189,6 +229,11 @@ _elm_transit_object_remove(Elm_Transit *transit, Evas_Object *obj) if (state->map) evas_object_map_set(obj, state->map); + //TODO: Remove! + //Since evas map have a afterimage bug for this time. + //This line is added temporary. + _obj_damage_area_set(obj); + } free(state); } @@ -619,8 +664,6 @@ EAPI void elm_transit_event_enabled_set(Elm_Transit *transit, Eina_Bool enabled) { ELM_TRANSIT_CHECK_OR_RETURN(transit); - Evas_Object *obj; - Elm_Obj_Data *obj_data; if (transit->event_enabled == enabled) return; transit->event_enabled = !!enabled; @@ -982,9 +1025,6 @@ elm_transit_progress_value_get(const Elm_Transit *transit) EAPI void elm_transit_objects_final_state_keep_set(Elm_Transit *transit, Eina_Bool state_keep) { - Evas_Object *obj; - Elm_Obj_Data *obj_data; - ELM_TRANSIT_CHECK_OR_RETURN(transit); if (transit->state_keep == state_keep) return; if (transit->animator) return;