evas - fixed side effect caused by f4d24e962d

since the map_changed is reset right after the map is updated,
it could not decide to redraw the map surface properly.

now map_update() returns the value to redraw the map surface properly.
This commit is contained in:
ChunEon Park 2014-01-06 13:54:58 +09:00
parent 8dc6adbf9c
commit a76e751eb4
3 changed files with 13 additions and 6 deletions

View File

@ -1217,7 +1217,11 @@ evas_map_util_clockwise_get(Evas_Map *m)
return EINA_FALSE;
}
void
/****************************************************************************/
/* If the return value is true, the map surface should be redrawn. */
/****************************************************************************/
Eina_Bool
evas_object_map_update(Evas_Object *eo_obj,
int x, int y,
int imagew, int imageh,
@ -1227,7 +1231,7 @@ evas_object_map_update(Evas_Object *eo_obj,
const Evas_Map_Point *p, *p_end;
RGBA_Map_Point *pts, *pt;
if (!obj) return;
if (!obj) return EINA_FALSE;
if (obj->map->spans)
{
if (obj->map->spans->x != x || obj->map->spans->y != y ||
@ -1240,7 +1244,7 @@ evas_object_map_update(Evas_Object *eo_obj,
obj->changed_map = EINA_TRUE;
}
if (!obj->changed_map) return;
if (!obj->changed_map) return EINA_FALSE;
if (obj->map->cur.map && obj->map->spans && obj->map->cur.map->count != obj->map->spans->count)
{
@ -1264,7 +1268,7 @@ evas_object_map_update(Evas_Object *eo_obj,
EINA_COW_WRITE_END(evas_object_map_cow, obj->map, map_write);
}
if (!obj->map->spans) return;
if (!obj->map->spans) return EINA_FALSE;
EINA_COW_WRITE_BEGIN(evas_object_map_cow, obj->map, Evas_Object_Map_Data, map_write)
{
@ -1319,4 +1323,6 @@ evas_object_map_update(Evas_Object *eo_obj,
// Request engine to update it's point
obj->changed_map = EINA_FALSE;
return obj->changed_pchange;
}

View File

@ -1227,7 +1227,8 @@ evas_render_mapped(Evas_Public_Data *e, Evas_Object *eo_obj,
RD(" }\n");
return clean_them;
}
evas_object_map_update(eo_obj, off_x, off_y, sw, sh, sw, sh);
changed = evas_object_map_update(eo_obj, off_x, off_y, sw, sh, sw, sh);
if (obj->map->surface)
{

View File

@ -1262,7 +1262,7 @@ void evas_render_object_recalc(Evas_Object *obj);
Eina_Bool evas_map_inside_get(const Evas_Map *m, Evas_Coord x, Evas_Coord y);
Eina_Bool evas_map_coords_get(const Evas_Map *m, Evas_Coord x, Evas_Coord y, Evas_Coord *mx, Evas_Coord *my, int grab);
void evas_object_map_update(Evas_Object *obj, int x, int y, int imagew, int imageh, int uvw, int uvh);
Eina_Bool evas_object_map_update(Evas_Object *obj, int x, int y, int imagew, int imageh, int uvw, int uvh);
Eina_List *evas_module_engine_list(void);