forked from enlightenment/efl
evas: remove as many call as easily possible to eo_data_get.
SVN revision: 77702
This commit is contained in:
parent
3dbe48e4fe
commit
e0af0dca6d
|
@ -42,9 +42,7 @@ evas_object_clippers_was_visible(Evas_Object *eo_obj EINA_UNUSED, Evas_Object_Pr
|
||||||
{
|
{
|
||||||
if (obj->prev.clipper)
|
if (obj->prev.clipper)
|
||||||
{
|
{
|
||||||
Evas_Object_Protected_Data *prev_clipper =
|
return evas_object_clippers_is_visible(obj->prev.eo_clipper, obj->prev.clipper);
|
||||||
eo_data_get(obj->prev.clipper, EVAS_OBJ_CLASS);
|
|
||||||
return evas_object_clippers_is_visible(obj->prev.clipper, prev_clipper);
|
|
||||||
}
|
}
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
@ -127,8 +125,7 @@ evas_object_clip_across_check(Evas_Object *eo_obj, Evas_Object_Protected_Data *o
|
||||||
{
|
{
|
||||||
#ifdef MAP_ACROSS
|
#ifdef MAP_ACROSS
|
||||||
if (!obj->cur.clipper) return;
|
if (!obj->cur.clipper) return;
|
||||||
Evas_Object_Protected_Data *clipper = eo_data_get(obj->cur.clipper, EVAS_OBJ_CLASS);
|
if (obj->cur.clipper->cur.map_parent != obj->cur.map_parent)
|
||||||
if (clipper->cur.map_parent != obj->cur.map_parent)
|
|
||||||
evas_object_child_map_across_mark(eo_obj, obj, obj->cur.map_parent, 1);
|
evas_object_child_map_across_mark(eo_obj, obj, obj->cur.map_parent, 1);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
@ -198,18 +195,22 @@ evas_object_clip_set(
|
||||||
void
|
void
|
||||||
_clip_set(Eo *eo_obj, void *_pd, va_list *list)
|
_clip_set(Eo *eo_obj, void *_pd, va_list *list)
|
||||||
{
|
{
|
||||||
|
Evas_Object_Protected_Data *clip;
|
||||||
Evas_Object *eo_clip = va_arg(*list, Evas_Object *);
|
Evas_Object *eo_clip = va_arg(*list, Evas_Object *);
|
||||||
Evas_Object_Protected_Data *obj = _pd;
|
Evas_Object_Protected_Data *obj = _pd;
|
||||||
|
|
||||||
if (!eo_clip)
|
if (!eo_clip)
|
||||||
{
|
{
|
||||||
evas_object_clip_unset(eo_obj);
|
evas_object_clip_unset(eo_obj);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
MAGIC_CHECK(eo_clip, Evas_Object, MAGIC_OBJ);
|
MAGIC_CHECK(eo_clip, Evas_Object, MAGIC_OBJ);
|
||||||
return;
|
return;
|
||||||
MAGIC_CHECK_END();
|
MAGIC_CHECK_END();
|
||||||
Evas_Object_Protected_Data *clip = eo_data_get(eo_clip, EVAS_OBJ_CLASS);
|
|
||||||
if (obj->cur.clipper == eo_clip) return;
|
clip = eo_data_get(eo_clip, EVAS_OBJ_CLASS);
|
||||||
|
if (obj->cur.eo_clipper == eo_clip) return;
|
||||||
if (eo_obj == eo_clip)
|
if (eo_obj == eo_clip)
|
||||||
{
|
{
|
||||||
CRIT("Setting clip %p on itself", eo_obj);
|
CRIT("Setting clip %p on itself", eo_obj);
|
||||||
|
@ -255,21 +256,21 @@ _clip_set(Eo *eo_obj, void *_pd, va_list *list)
|
||||||
if (obj->cur.clipper)
|
if (obj->cur.clipper)
|
||||||
{
|
{
|
||||||
/* unclip */
|
/* unclip */
|
||||||
Evas_Object_Protected_Data *cur_clipper = eo_data_get(obj->cur.clipper, EVAS_OBJ_CLASS);
|
obj->cur.clipper->clip.clipees = eina_list_remove(obj->cur.clipper->clip.clipees, eo_obj);
|
||||||
cur_clipper->clip.clipees = eina_list_remove(cur_clipper->clip.clipees, eo_obj);
|
if (!obj->cur.clipper->clip.clipees)
|
||||||
if (!cur_clipper->clip.clipees)
|
|
||||||
{
|
{
|
||||||
cur_clipper->cur.have_clipees = 0;
|
obj->cur.clipper->cur.have_clipees = 0;
|
||||||
if (cur_clipper->cur.visible)
|
if (obj->cur.clipper->cur.visible)
|
||||||
evas_damage_rectangle_add(cur_clipper->layer->evas->evas,
|
evas_damage_rectangle_add(obj->cur.clipper->layer->evas->evas,
|
||||||
cur_clipper->cur.geometry.x,
|
obj->cur.clipper->cur.geometry.x,
|
||||||
cur_clipper->cur.geometry.y,
|
obj->cur.clipper->cur.geometry.y,
|
||||||
cur_clipper->cur.geometry.w,
|
obj->cur.clipper->cur.geometry.w,
|
||||||
cur_clipper->cur.geometry.h);
|
obj->cur.clipper->cur.geometry.h);
|
||||||
}
|
}
|
||||||
evas_object_change(obj->cur.clipper, cur_clipper);
|
evas_object_change(obj->cur.eo_clipper, obj->cur.clipper);
|
||||||
evas_object_change(eo_obj, obj);
|
evas_object_change(eo_obj, obj);
|
||||||
obj->cur.clipper = NULL;
|
obj->cur.clipper = NULL;
|
||||||
|
obj->cur.eo_clipper = NULL;
|
||||||
}
|
}
|
||||||
/* clip me */
|
/* clip me */
|
||||||
if ((!clip->clip.clipees) && (clip->cur.visible))
|
if ((!clip->clip.clipees) && (clip->cur.visible))
|
||||||
|
@ -281,7 +282,8 @@ _clip_set(Eo *eo_obj, void *_pd, va_list *list)
|
||||||
clip->cur.geometry.x, clip->cur.geometry.y,
|
clip->cur.geometry.x, clip->cur.geometry.y,
|
||||||
clip->cur.geometry.w, clip->cur.geometry.h);
|
clip->cur.geometry.w, clip->cur.geometry.h);
|
||||||
}
|
}
|
||||||
obj->cur.clipper = eo_clip;
|
obj->cur.eo_clipper = eo_clip;
|
||||||
|
obj->cur.clipper = clip;
|
||||||
clip->clip.clipees = eina_list_append(clip->clip.clipees, eo_obj);
|
clip->clip.clipees = eina_list_append(clip->clip.clipees, eo_obj);
|
||||||
if (clip->clip.clipees)
|
if (clip->clip.clipees)
|
||||||
{
|
{
|
||||||
|
@ -339,7 +341,7 @@ _clip_get(Eo *eo_obj EINA_UNUSED, void *_pd, va_list *list)
|
||||||
{
|
{
|
||||||
Evas_Object **clip = va_arg(*list, Evas_Object **);
|
Evas_Object **clip = va_arg(*list, Evas_Object **);
|
||||||
const Evas_Object_Protected_Data *obj = _pd;
|
const Evas_Object_Protected_Data *obj = _pd;
|
||||||
*clip = obj->cur.clipper;
|
*clip = obj->cur.eo_clipper;
|
||||||
}
|
}
|
||||||
|
|
||||||
EAPI void
|
EAPI void
|
||||||
|
@ -355,6 +357,7 @@ void
|
||||||
_clip_unset(Eo *eo_obj, void *_pd, va_list *list EINA_UNUSED)
|
_clip_unset(Eo *eo_obj, void *_pd, va_list *list EINA_UNUSED)
|
||||||
{
|
{
|
||||||
Evas_Object_Protected_Data *obj = _pd;
|
Evas_Object_Protected_Data *obj = _pd;
|
||||||
|
|
||||||
if (!obj->cur.clipper) return;
|
if (!obj->cur.clipper) return;
|
||||||
/* unclip */
|
/* unclip */
|
||||||
if (evas_object_intercept_call_clip_unset(eo_obj)) return;
|
if (evas_object_intercept_call_clip_unset(eo_obj)) return;
|
||||||
|
@ -364,21 +367,21 @@ _clip_unset(Eo *eo_obj, void *_pd, va_list *list EINA_UNUSED)
|
||||||
}
|
}
|
||||||
if (obj->cur.clipper)
|
if (obj->cur.clipper)
|
||||||
{
|
{
|
||||||
Evas_Object_Protected_Data *cur_clipper = eo_data_get(obj->cur.clipper, EVAS_OBJ_CLASS);
|
obj->cur.clipper->clip.clipees = eina_list_remove(obj->cur.clipper->clip.clipees, eo_obj);
|
||||||
cur_clipper->clip.clipees = eina_list_remove(cur_clipper->clip.clipees, eo_obj);
|
if (!obj->cur.clipper->clip.clipees)
|
||||||
if (!cur_clipper->clip.clipees)
|
|
||||||
{
|
{
|
||||||
cur_clipper->cur.have_clipees = 0;
|
obj->cur.clipper->cur.have_clipees = 0;
|
||||||
if (cur_clipper->cur.visible)
|
if (obj->cur.clipper->cur.visible)
|
||||||
evas_damage_rectangle_add(cur_clipper->layer->evas->evas,
|
evas_damage_rectangle_add(obj->cur.clipper->layer->evas->evas,
|
||||||
cur_clipper->cur.geometry.x,
|
obj->cur.clipper->cur.geometry.x,
|
||||||
cur_clipper->cur.geometry.y,
|
obj->cur.clipper->cur.geometry.y,
|
||||||
cur_clipper->cur.geometry.w,
|
obj->cur.clipper->cur.geometry.w,
|
||||||
cur_clipper->cur.geometry.h);
|
obj->cur.clipper->cur.geometry.h);
|
||||||
}
|
}
|
||||||
evas_object_change(obj->cur.clipper, cur_clipper);
|
evas_object_change(obj->cur.eo_clipper, obj->cur.clipper);
|
||||||
}
|
}
|
||||||
obj->cur.clipper = NULL;
|
obj->cur.clipper = NULL;
|
||||||
|
obj->cur.eo_clipper = NULL;
|
||||||
evas_object_change(eo_obj, obj);
|
evas_object_change(eo_obj, obj);
|
||||||
evas_object_clip_dirty(eo_obj, obj);
|
evas_object_clip_dirty(eo_obj, obj);
|
||||||
evas_object_recalc_clippees(eo_obj, obj);
|
evas_object_recalc_clippees(eo_obj, obj);
|
||||||
|
|
|
@ -95,7 +95,7 @@ _evas_event_object_list_raw_in_get(Evas *eo_e, Eina_List *in,
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (!obj->child_has_map)
|
if (!obj->child_has_map)
|
||||||
evas_object_smart_bouding_box_update(eo_obj);
|
evas_object_smart_bounding_box_update(eo_obj, obj);
|
||||||
if (obj->child_has_map ||
|
if (obj->child_has_map ||
|
||||||
(obj->cur.bounding_box.x <= x &&
|
(obj->cur.bounding_box.x <= x &&
|
||||||
obj->cur.bounding_box.x + obj->cur.bounding_box.w >= x &&
|
obj->cur.bounding_box.x + obj->cur.bounding_box.w >= x &&
|
||||||
|
|
|
@ -2703,7 +2703,7 @@ _proxy_subrender(Evas *eo_e, Evas_Object *eo_source)
|
||||||
e->engine.func->context_free(e->engine.data.output, ctx);
|
e->engine.func->context_free(e->engine.data.output, ctx);
|
||||||
|
|
||||||
ctx = e->engine.func->context_new(e->engine.data.output);
|
ctx = e->engine.func->context_new(e->engine.data.output);
|
||||||
evas_render_mapped(eo_e, eo_source, source, ctx, source->proxy.surface,
|
evas_render_mapped(e, eo_source, source, ctx, source->proxy.surface,
|
||||||
-source->cur.geometry.x,
|
-source->cur.geometry.x,
|
||||||
-source->cur.geometry.y,
|
-source->cur.geometry.y,
|
||||||
1, 0, 0, e->output.w, e->output.h
|
1, 0, 0, e->output.w, e->output.h
|
||||||
|
@ -3556,10 +3556,9 @@ evas_object_image_render_pre(Evas_Object *eo_obj, Evas_Object_Protected_Data *ob
|
||||||
/* if someone is clipping this obj - go calculate the clipper */
|
/* if someone is clipping this obj - go calculate the clipper */
|
||||||
if (obj->cur.clipper)
|
if (obj->cur.clipper)
|
||||||
{
|
{
|
||||||
Evas_Object_Protected_Data *clipper = eo_data_get(obj->cur.clipper, EVAS_OBJ_CLASS);
|
|
||||||
if (obj->cur.cache.clip.dirty)
|
if (obj->cur.cache.clip.dirty)
|
||||||
evas_object_clip_recalc(obj->cur.clipper, clipper);
|
evas_object_clip_recalc(obj->cur.eo_clipper, obj->cur.clipper);
|
||||||
clipper->func->render_pre(obj->cur.clipper, clipper);
|
obj->cur.clipper->func->render_pre(obj->cur.eo_clipper, obj->cur.clipper);
|
||||||
}
|
}
|
||||||
/* Proxy: Do it early */
|
/* Proxy: Do it early */
|
||||||
if (o->cur.source)
|
if (o->cur.source)
|
||||||
|
@ -3797,12 +3796,11 @@ evas_object_image_render_pre(Evas_Object *eo_obj, Evas_Object_Protected_Data *ob
|
||||||
h = obj->cur.cache.clip.h;
|
h = obj->cur.cache.clip.h;
|
||||||
if (obj->cur.clipper)
|
if (obj->cur.clipper)
|
||||||
{
|
{
|
||||||
Evas_Object_Protected_Data *cur_clipper = eo_data_get(obj->cur.clipper, EVAS_OBJ_CLASS);
|
|
||||||
RECTS_CLIP_TO_RECT(x, y, w, h,
|
RECTS_CLIP_TO_RECT(x, y, w, h,
|
||||||
cur_clipper->cur.cache.clip.x,
|
obj->cur.clipper->cur.cache.clip.x,
|
||||||
cur_clipper->cur.cache.clip.y,
|
obj->cur.clipper->cur.cache.clip.y,
|
||||||
cur_clipper->cur.cache.clip.w,
|
obj->cur.clipper->cur.cache.clip.w,
|
||||||
cur_clipper->cur.cache.clip.h);
|
obj->cur.clipper->cur.cache.clip.h);
|
||||||
}
|
}
|
||||||
e->engine.func->output_redraws_rect_del(e->engine.data.output,
|
e->engine.func->output_redraws_rect_del(e->engine.data.output,
|
||||||
x, y, w, h);
|
x, y, w, h);
|
||||||
|
|
|
@ -296,10 +296,9 @@ evas_object_line_render_pre(Evas_Object *eo_obj, Evas_Object_Protected_Data *obj
|
||||||
/* if someone is clipping this obj - go calculate the clipper */
|
/* if someone is clipping this obj - go calculate the clipper */
|
||||||
if (obj->cur.clipper)
|
if (obj->cur.clipper)
|
||||||
{
|
{
|
||||||
Evas_Object_Protected_Data *cur_clipper = eo_data_get(obj->cur.clipper, EVAS_OBJ_CLASS);
|
|
||||||
if (obj->cur.cache.clip.dirty)
|
if (obj->cur.cache.clip.dirty)
|
||||||
evas_object_clip_recalc(obj->cur.clipper, cur_clipper);
|
evas_object_clip_recalc(obj->cur.eo_clipper, obj->cur.clipper);
|
||||||
cur_clipper->func->render_pre(obj->cur.clipper, cur_clipper);
|
obj->cur.clipper->func->render_pre(obj->cur.eo_clipper, obj->cur.clipper);
|
||||||
}
|
}
|
||||||
/* now figure what changed and add draw rects */
|
/* now figure what changed and add draw rects */
|
||||||
/* if it just became visible or invisible */
|
/* if it just became visible or invisible */
|
||||||
|
|
|
@ -204,26 +204,20 @@ evas_object_render_pre_clipper_change(Eina_Array *rects, Evas_Object *eo_obj)
|
||||||
{
|
{
|
||||||
Evas_Object_Protected_Data *obj = eo_data_get(eo_obj, MY_CLASS);
|
Evas_Object_Protected_Data *obj = eo_data_get(eo_obj, MY_CLASS);
|
||||||
|
|
||||||
Evas_Object_Protected_Data *cur_clipper = NULL;
|
|
||||||
Evas_Object_Protected_Data *prev_clipper = NULL;
|
|
||||||
if (obj->is_smart) return;
|
if (obj->is_smart) return;
|
||||||
if (obj->cur.clipper == obj->prev.clipper) return;
|
if (obj->cur.clipper == obj->prev.clipper) return;
|
||||||
if (obj->cur.clipper)
|
|
||||||
cur_clipper = eo_data_get(obj->cur.clipper, MY_CLASS);
|
|
||||||
if (obj->prev.clipper)
|
|
||||||
prev_clipper = eo_data_get(obj->prev.clipper, MY_CLASS);
|
|
||||||
if ((obj->cur.clipper) && (obj->prev.clipper))
|
if ((obj->cur.clipper) && (obj->prev.clipper))
|
||||||
{
|
{
|
||||||
/* get difference rects between clippers */
|
/* get difference rects between clippers */
|
||||||
evas_rects_return_difference_rects(rects,
|
evas_rects_return_difference_rects(rects,
|
||||||
cur_clipper->cur.cache.clip.x,
|
obj->cur.clipper->cur.cache.clip.x,
|
||||||
cur_clipper->cur.cache.clip.y,
|
obj->cur.clipper->cur.cache.clip.y,
|
||||||
cur_clipper->cur.cache.clip.w,
|
obj->cur.clipper->cur.cache.clip.w,
|
||||||
cur_clipper->cur.cache.clip.h,
|
obj->cur.clipper->cur.cache.clip.h,
|
||||||
prev_clipper->prev.cache.clip.x,
|
obj->prev.clipper->prev.cache.clip.x,
|
||||||
prev_clipper->prev.cache.clip.y,
|
obj->prev.clipper->prev.cache.clip.y,
|
||||||
prev_clipper->prev.cache.clip.w,
|
obj->prev.clipper->prev.cache.clip.w,
|
||||||
prev_clipper->prev.cache.clip.h);
|
obj->prev.clipper->prev.cache.clip.h);
|
||||||
}
|
}
|
||||||
else if (obj->cur.clipper)
|
else if (obj->cur.clipper)
|
||||||
{
|
{
|
||||||
|
@ -236,10 +230,10 @@ evas_object_render_pre_clipper_change(Eina_Array *rects, Evas_Object *eo_obj)
|
||||||
//// obj->cur.cache.geometry.y,
|
//// obj->cur.cache.geometry.y,
|
||||||
//// obj->cur.cache.geometry.w,
|
//// obj->cur.cache.geometry.w,
|
||||||
//// obj->cur.cache.geometry.h,
|
//// obj->cur.cache.geometry.h,
|
||||||
cur_clipper->cur.cache.clip.x,
|
obj->cur.clipper->cur.cache.clip.x,
|
||||||
cur_clipper->cur.cache.clip.y,
|
obj->cur.clipper->cur.cache.clip.y,
|
||||||
cur_clipper->cur.cache.clip.w,
|
obj->cur.clipper->cur.cache.clip.w,
|
||||||
cur_clipper->cur.cache.clip.h);
|
obj->cur.clipper->cur.cache.clip.h);
|
||||||
}
|
}
|
||||||
else if (obj->prev.clipper)
|
else if (obj->prev.clipper)
|
||||||
{
|
{
|
||||||
|
@ -252,10 +246,10 @@ evas_object_render_pre_clipper_change(Eina_Array *rects, Evas_Object *eo_obj)
|
||||||
//// obj->prev.cache.geometry.y,
|
//// obj->prev.cache.geometry.y,
|
||||||
//// obj->prev.cache.geometry.w,
|
//// obj->prev.cache.geometry.w,
|
||||||
//// obj->prev.cache.geometry.h,
|
//// obj->prev.cache.geometry.h,
|
||||||
prev_clipper->prev.cache.clip.x,
|
obj->prev.clipper->prev.cache.clip.x,
|
||||||
prev_clipper->prev.cache.clip.y,
|
obj->prev.clipper->prev.cache.clip.y,
|
||||||
prev_clipper->prev.cache.clip.w,
|
obj->prev.clipper->prev.cache.clip.w,
|
||||||
prev_clipper->prev.cache.clip.h);
|
obj->prev.clipper->prev.cache.clip.h);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -312,15 +306,14 @@ void
|
||||||
evas_object_render_pre_effect_updates(Eina_Array *rects, Evas_Object *eo_obj, int is_v, int was_v EINA_UNUSED)
|
evas_object_render_pre_effect_updates(Eina_Array *rects, Evas_Object *eo_obj, int is_v, int was_v EINA_UNUSED)
|
||||||
{
|
{
|
||||||
Evas_Object_Protected_Data *obj = eo_data_get(eo_obj, MY_CLASS);
|
Evas_Object_Protected_Data *obj = eo_data_get(eo_obj, MY_CLASS);
|
||||||
if (!obj) return;
|
|
||||||
|
|
||||||
Eina_Rectangle *r;
|
Eina_Rectangle *r;
|
||||||
Evas_Object *eo_clipper;
|
|
||||||
Eina_List *l;
|
Eina_List *l;
|
||||||
unsigned int i;
|
unsigned int i;
|
||||||
Eina_Array_Iterator it;
|
Eina_Array_Iterator it;
|
||||||
int x, y, w, h;
|
int x, y, w, h;
|
||||||
|
|
||||||
|
if (!obj) return;
|
||||||
|
|
||||||
if (obj->is_smart) goto end;
|
if (obj->is_smart) goto end;
|
||||||
/* FIXME: was_v isn't used... why? */
|
/* FIXME: was_v isn't used... why? */
|
||||||
if (!obj->clip.clipees)
|
if (!obj->clip.clipees)
|
||||||
|
@ -357,10 +350,11 @@ evas_object_render_pre_effect_updates(Eina_Array *rects, Evas_Object *eo_obj, in
|
||||||
/* if the object is actually visible, take any parent clip changes */
|
/* if the object is actually visible, take any parent clip changes */
|
||||||
if (is_v)
|
if (is_v)
|
||||||
{
|
{
|
||||||
eo_clipper = obj->cur.clipper;
|
Evas_Object_Protected_Data *clipper;
|
||||||
while (eo_clipper)
|
|
||||||
|
clipper = obj->cur.clipper;
|
||||||
|
while (clipper)
|
||||||
{
|
{
|
||||||
Evas_Object_Protected_Data *clipper = eo_data_get(eo_clipper, MY_CLASS);
|
|
||||||
EINA_LIST_FOREACH(clipper->clip.changes, l, r)
|
EINA_LIST_FOREACH(clipper->clip.changes, l, r)
|
||||||
{
|
{
|
||||||
/* get updates and clip to current clip */
|
/* get updates and clip to current clip */
|
||||||
|
@ -384,7 +378,7 @@ evas_object_render_pre_effect_updates(Eina_Array *rects, Evas_Object *eo_obj, in
|
||||||
obj->layer->evas->engine.func->output_redraws_rect_add(obj->layer->evas->engine.data.output,
|
obj->layer->evas->engine.func->output_redraws_rect_add(obj->layer->evas->engine.data.output,
|
||||||
x, y, w, h);
|
x, y, w, h);
|
||||||
}
|
}
|
||||||
eo_clipper = clipper->cur.clipper;
|
clipper = clipper->cur.clipper;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -353,10 +353,9 @@ evas_object_polygon_render_pre(Evas_Object *eo_obj, Evas_Object_Protected_Data *
|
||||||
/* if someone is clipping this obj - go calculate the clipper */
|
/* if someone is clipping this obj - go calculate the clipper */
|
||||||
if (obj->cur.clipper)
|
if (obj->cur.clipper)
|
||||||
{
|
{
|
||||||
Evas_Object_Protected_Data *cur_clipper = eo_data_get(obj->cur.clipper, EVAS_OBJ_CLASS);
|
|
||||||
if (obj->cur.cache.clip.dirty)
|
if (obj->cur.cache.clip.dirty)
|
||||||
evas_object_clip_recalc(obj->cur.clipper, cur_clipper);
|
evas_object_clip_recalc(obj->cur.eo_clipper, obj->cur.clipper);
|
||||||
cur_clipper->func->render_pre(obj->cur.clipper, cur_clipper);
|
obj->cur.clipper->func->render_pre(obj->cur.eo_clipper, obj->cur.clipper);
|
||||||
}
|
}
|
||||||
/* now figure what changed and add draw rects */
|
/* now figure what changed and add draw rects */
|
||||||
/* if it just became visible or invisible */
|
/* if it just became visible or invisible */
|
||||||
|
|
|
@ -164,10 +164,9 @@ evas_object_rectangle_render_pre(Evas_Object *eo_obj, Evas_Object_Protected_Data
|
||||||
/* if someone is clipping this obj - go calculate the clipper */
|
/* if someone is clipping this obj - go calculate the clipper */
|
||||||
if (obj->cur.clipper)
|
if (obj->cur.clipper)
|
||||||
{
|
{
|
||||||
Evas_Object_Protected_Data *cur_clipper_obj = eo_data_get(obj->cur.clipper, EVAS_OBJ_CLASS);
|
|
||||||
if (obj->cur.cache.clip.dirty)
|
if (obj->cur.cache.clip.dirty)
|
||||||
evas_object_clip_recalc(obj->cur.clipper, cur_clipper_obj);
|
evas_object_clip_recalc(obj->cur.eo_clipper, obj->cur.clipper);
|
||||||
cur_clipper_obj->func->render_pre(obj->cur.clipper, cur_clipper_obj);
|
obj->cur.clipper->func->render_pre(obj->cur.eo_clipper, obj->cur.clipper);
|
||||||
}
|
}
|
||||||
/* now figure what changed and add draw rects */
|
/* now figure what changed and add draw rects */
|
||||||
/* if it just became visible or invisible */
|
/* if it just became visible or invisible */
|
||||||
|
|
|
@ -1216,8 +1216,9 @@ evas_object_smart_need_bounding_box_update(Evas_Object *eo_obj)
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
evas_object_smart_bouding_box_update(Evas_Object *eo_obj)
|
evas_object_smart_bounding_box_update(Evas_Object *eo_obj, Evas_Object_Protected_Data *obj)
|
||||||
{
|
{
|
||||||
|
Evas_Object_Smart *os;
|
||||||
Eina_Inlist *list;
|
Eina_Inlist *list;
|
||||||
Evas_Object_Protected_Data *o;
|
Evas_Object_Protected_Data *o;
|
||||||
Evas_Coord minx;
|
Evas_Coord minx;
|
||||||
|
@ -1228,8 +1229,8 @@ evas_object_smart_bouding_box_update(Evas_Object *eo_obj)
|
||||||
MAGIC_CHECK(eo_obj, Evas_Object, MAGIC_OBJ);
|
MAGIC_CHECK(eo_obj, Evas_Object, MAGIC_OBJ);
|
||||||
return;
|
return;
|
||||||
MAGIC_CHECK_END();
|
MAGIC_CHECK_END();
|
||||||
Evas_Object_Protected_Data *obj = eo_data_get(eo_obj, EVAS_OBJ_CLASS);
|
|
||||||
Evas_Object_Smart *os = eo_data_get(eo_obj, MY_CLASS);
|
os = eo_data_get(eo_obj, MY_CLASS);
|
||||||
|
|
||||||
if (!os->update_boundingbox_needed) return ;
|
if (!os->update_boundingbox_needed) return ;
|
||||||
os->update_boundingbox_needed = EINA_FALSE;
|
os->update_boundingbox_needed = EINA_FALSE;
|
||||||
|
@ -1250,7 +1251,7 @@ evas_object_smart_bouding_box_update(Evas_Object *eo_obj)
|
||||||
|
|
||||||
if (eo_isa(o->object, EVAS_OBJ_SMART_CLASS))
|
if (eo_isa(o->object, EVAS_OBJ_SMART_CLASS))
|
||||||
{
|
{
|
||||||
evas_object_smart_bouding_box_update(o->object);
|
evas_object_smart_bounding_box_update(o->object, o);
|
||||||
|
|
||||||
tx = o->cur.bounding_box.x;
|
tx = o->cur.bounding_box.x;
|
||||||
ty = o->cur.bounding_box.y;
|
ty = o->cur.bounding_box.y;
|
||||||
|
|
|
@ -1617,12 +1617,11 @@ evas_object_text_render(Evas_Object *eo_obj, Evas_Object_Protected_Data *obj, vo
|
||||||
#define COLOR_SET(object, sub, col) \
|
#define COLOR_SET(object, sub, col) \
|
||||||
if (obj->cur.clipper)\
|
if (obj->cur.clipper)\
|
||||||
{ \
|
{ \
|
||||||
Evas_Object_Protected_Data *cur_clipper = eo_data_get(obj->cur.clipper, EVAS_OBJ_CLASS); \
|
|
||||||
ENFN->context_color_set(output, context, \
|
ENFN->context_color_set(output, context, \
|
||||||
((int)object->sub.col.r * ((int)cur_clipper->cur.cache.clip.r + 1)) >> 8, \
|
((int)object->sub.col.r * ((int)obj->cur.clipper->cur.cache.clip.r + 1)) >> 8, \
|
||||||
((int)object->sub.col.g * ((int)cur_clipper->cur.cache.clip.g + 1)) >> 8, \
|
((int)object->sub.col.g * ((int)obj->cur.clipper->cur.cache.clip.g + 1)) >> 8, \
|
||||||
((int)object->sub.col.b * ((int)cur_clipper->cur.cache.clip.b + 1)) >> 8, \
|
((int)object->sub.col.b * ((int)obj->cur.clipper->cur.cache.clip.b + 1)) >> 8, \
|
||||||
((int)object->sub.col.a * ((int)cur_clipper->cur.cache.clip.a + 1)) >> 8); \
|
((int)object->sub.col.a * ((int)obj->cur.clipper->cur.cache.clip.a + 1)) >> 8); \
|
||||||
} \
|
} \
|
||||||
else\
|
else\
|
||||||
ENFN->context_color_set(output, context, \
|
ENFN->context_color_set(output, context, \
|
||||||
|
@ -1634,12 +1633,11 @@ evas_object_text_render(Evas_Object *eo_obj, Evas_Object_Protected_Data *obj, vo
|
||||||
#define COLOR_SET_AMUL(object, sub, col, amul) \
|
#define COLOR_SET_AMUL(object, sub, col, amul) \
|
||||||
if (obj->cur.clipper) \
|
if (obj->cur.clipper) \
|
||||||
{ \
|
{ \
|
||||||
Evas_Object_Protected_Data *cur_clipper = eo_data_get(obj->cur.clipper, EVAS_OBJ_CLASS); \
|
|
||||||
ENFN->context_color_set(output, context, \
|
ENFN->context_color_set(output, context, \
|
||||||
(((int)object->sub.col.r) * ((int)cur_clipper->cur.cache.clip.r) * (amul)) / 65025, \
|
(((int)object->sub.col.r) * ((int)obj->cur.clipper->cur.cache.clip.r) * (amul)) / 65025, \
|
||||||
(((int)object->sub.col.g) * ((int)cur_clipper->cur.cache.clip.g) * (amul)) / 65025, \
|
(((int)object->sub.col.g) * ((int)obj->cur.clipper->cur.cache.clip.g) * (amul)) / 65025, \
|
||||||
(((int)object->sub.col.b) * ((int)cur_clipper->cur.cache.clip.b) * (amul)) / 65025, \
|
(((int)object->sub.col.b) * ((int)obj->cur.clipper->cur.cache.clip.b) * (amul)) / 65025, \
|
||||||
(((int)object->sub.col.a) * ((int)cur_clipper->cur.cache.clip.a) * (amul)) / 65025); \
|
(((int)object->sub.col.a) * ((int)obj->cur.clipper->cur.cache.clip.a) * (amul)) / 65025); \
|
||||||
} \
|
} \
|
||||||
else \
|
else \
|
||||||
ENFN->context_color_set(output, context, \
|
ENFN->context_color_set(output, context, \
|
||||||
|
@ -1834,10 +1832,9 @@ evas_object_text_render_pre(Evas_Object *eo_obj, Evas_Object_Protected_Data *obj
|
||||||
/* if someone is clipping this obj - go calculate the clipper */
|
/* if someone is clipping this obj - go calculate the clipper */
|
||||||
if (obj->cur.clipper)
|
if (obj->cur.clipper)
|
||||||
{
|
{
|
||||||
Evas_Object_Protected_Data *clipper = eo_data_get(obj->cur.clipper, EVAS_OBJ_CLASS);
|
|
||||||
if (obj->cur.cache.clip.dirty)
|
if (obj->cur.cache.clip.dirty)
|
||||||
evas_object_clip_recalc(obj->cur.clipper, clipper);
|
evas_object_clip_recalc(obj->cur.eo_clipper, obj->cur.clipper);
|
||||||
clipper->func->render_pre(obj->cur.clipper, clipper);
|
obj->cur.clipper->func->render_pre(obj->cur.eo_clipper, obj->cur.clipper);
|
||||||
}
|
}
|
||||||
/* now figure what changed and add draw rects
|
/* now figure what changed and add draw rects
|
||||||
if it just became visible or invisible */
|
if it just became visible or invisible */
|
||||||
|
|
|
@ -10070,10 +10070,9 @@ evas_object_textblock_render_pre(Evas_Object *eo_obj, Evas_Object_Protected_Data
|
||||||
/* if someone is clipping this obj - go calculate the clipper */
|
/* if someone is clipping this obj - go calculate the clipper */
|
||||||
if (obj->cur.clipper)
|
if (obj->cur.clipper)
|
||||||
{
|
{
|
||||||
Evas_Object_Protected_Data *cur_clipper_obj = eo_data_get(obj->cur.clipper, EVAS_OBJ_CLASS);
|
|
||||||
if (obj->cur.cache.clip.dirty)
|
if (obj->cur.cache.clip.dirty)
|
||||||
evas_object_clip_recalc(obj->cur.clipper, cur_clipper_obj);
|
evas_object_clip_recalc(obj->cur.eo_clipper, obj->cur.clipper);
|
||||||
cur_clipper_obj->func->render_pre(obj->cur.clipper, cur_clipper_obj);
|
obj->cur.clipper->func->render_pre(obj->cur.eo_clipper, obj->cur.clipper);
|
||||||
}
|
}
|
||||||
/* now figure what changed and add draw rects */
|
/* now figure what changed and add draw rects */
|
||||||
/* if it just became visible or invisible */
|
/* if it just became visible or invisible */
|
||||||
|
|
|
@ -709,10 +709,9 @@ evas_object_textgrid_render_pre(Evas_Object *eo_obj, Evas_Object_Protected_Data
|
||||||
/* if someone is clipping this obj - go calculate the clipper */
|
/* if someone is clipping this obj - go calculate the clipper */
|
||||||
if (obj->cur.clipper)
|
if (obj->cur.clipper)
|
||||||
{
|
{
|
||||||
Evas_Object_Protected_Data *cur_clipper = eo_data_get(obj->cur.clipper, EVAS_OBJ_CLASS);
|
|
||||||
if (obj->cur.cache.clip.dirty)
|
if (obj->cur.cache.clip.dirty)
|
||||||
evas_object_clip_recalc(obj->cur.clipper, cur_clipper);
|
evas_object_clip_recalc(obj->cur.eo_clipper, obj->cur.clipper);
|
||||||
cur_clipper->func->render_pre(obj->cur.clipper, cur_clipper);
|
obj->cur.clipper->func->render_pre(obj->cur.eo_clipper, obj->cur.clipper);
|
||||||
}
|
}
|
||||||
/* now figure what changed and add draw rects */
|
/* now figure what changed and add draw rects */
|
||||||
/* if it just became visible or invisible */
|
/* if it just became visible or invisible */
|
||||||
|
|
|
@ -125,9 +125,8 @@ _canvas_obscured_clear(Eo *eo_e EINA_UNUSED, void *_pd, va_list *list EINA_UNUSE
|
||||||
}
|
}
|
||||||
|
|
||||||
static Eina_Bool
|
static Eina_Bool
|
||||||
_evas_render_had_map(Evas_Object *eo_obj)
|
_evas_render_had_map(Evas_Object_Protected_Data *obj)
|
||||||
{
|
{
|
||||||
Evas_Object_Protected_Data *obj = eo_data_get(eo_obj, EVAS_OBJ_CLASS);
|
|
||||||
return ((obj->prev.map) && (obj->prev.usemap));
|
return ((obj->prev.map) && (obj->prev.usemap));
|
||||||
// return ((!obj->cur.map) && (obj->prev.usemap));
|
// return ((!obj->cur.map) && (obj->prev.usemap));
|
||||||
}
|
}
|
||||||
|
@ -141,17 +140,14 @@ _evas_render_is_relevant(Evas_Object *eo_obj)
|
||||||
}
|
}
|
||||||
|
|
||||||
static Eina_Bool
|
static Eina_Bool
|
||||||
_evas_render_can_render(Evas_Object *eo_obj)
|
_evas_render_can_render(Evas_Object *eo_obj, Evas_Object_Protected_Data *obj)
|
||||||
{
|
{
|
||||||
Evas_Object_Protected_Data *obj = eo_data_get(eo_obj, EVAS_OBJ_CLASS);
|
|
||||||
return (evas_object_is_visible(eo_obj, obj) && (!obj->cur.have_clipees));
|
return (evas_object_is_visible(eo_obj, obj) && (!obj->cur.have_clipees));
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
_evas_render_prev_cur_clip_cache_add(Evas *eo_e, Evas_Object *eo_obj)
|
_evas_render_prev_cur_clip_cache_add(Evas_Public_Data *e, Evas_Object_Protected_Data *obj)
|
||||||
{
|
{
|
||||||
Evas_Public_Data *e = eo_data_get(eo_e, EVAS_CLASS);
|
|
||||||
Evas_Object_Protected_Data *obj = eo_data_get(eo_obj, EVAS_OBJ_CLASS);
|
|
||||||
e->engine.func->output_redraws_rect_add(e->engine.data.output,
|
e->engine.func->output_redraws_rect_add(e->engine.data.output,
|
||||||
obj->prev.cache.clip.x,
|
obj->prev.cache.clip.x,
|
||||||
obj->prev.cache.clip.y,
|
obj->prev.cache.clip.y,
|
||||||
|
@ -165,10 +161,8 @@ _evas_render_prev_cur_clip_cache_add(Evas *eo_e, Evas_Object *eo_obj)
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
_evas_render_cur_clip_cache_del(Evas *eo_e, Evas_Object *eo_obj)
|
_evas_render_cur_clip_cache_del(Evas_Public_Data *e, Evas_Object_Protected_Data *obj)
|
||||||
{
|
{
|
||||||
Evas_Object_Protected_Data *obj = eo_data_get(eo_obj, EVAS_OBJ_CLASS);
|
|
||||||
Evas_Public_Data *e = eo_data_get(eo_e, EVAS_CLASS);
|
|
||||||
Evas_Coord x, y, w, h;
|
Evas_Coord x, y, w, h;
|
||||||
|
|
||||||
x = obj->cur.cache.clip.x;
|
x = obj->cur.cache.clip.x;
|
||||||
|
@ -177,19 +171,18 @@ _evas_render_cur_clip_cache_del(Evas *eo_e, Evas_Object *eo_obj)
|
||||||
h = obj->cur.cache.clip.h;
|
h = obj->cur.cache.clip.h;
|
||||||
if (obj->cur.clipper)
|
if (obj->cur.clipper)
|
||||||
{
|
{
|
||||||
Evas_Object_Protected_Data *cur_clipper = eo_data_get(obj->cur.clipper, EVAS_OBJ_CLASS);
|
|
||||||
RECTS_CLIP_TO_RECT(x, y, w, h,
|
RECTS_CLIP_TO_RECT(x, y, w, h,
|
||||||
cur_clipper->cur.cache.clip.x,
|
obj->cur.clipper->cur.cache.clip.x,
|
||||||
cur_clipper->cur.cache.clip.y,
|
obj->cur.clipper->cur.cache.clip.y,
|
||||||
cur_clipper->cur.cache.clip.w,
|
obj->cur.clipper->cur.cache.clip.w,
|
||||||
cur_clipper->cur.cache.clip.h);
|
obj->cur.clipper->cur.cache.clip.h);
|
||||||
}
|
}
|
||||||
e->engine.func->output_redraws_rect_del(e->engine.data.output,
|
e->engine.func->output_redraws_rect_del(e->engine.data.output,
|
||||||
x, y, w, h);
|
x, y, w, h);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
_evas_render_phase1_direct(Evas *eo_e,
|
_evas_render_phase1_direct(Evas_Public_Data *e,
|
||||||
Eina_Array *active_objects,
|
Eina_Array *active_objects,
|
||||||
Eina_Array *restack_objects EINA_UNUSED,
|
Eina_Array *restack_objects EINA_UNUSED,
|
||||||
Eina_Array *delete_objects EINA_UNUSED,
|
Eina_Array *delete_objects EINA_UNUSED,
|
||||||
|
@ -230,7 +223,7 @@ _evas_render_phase1_direct(Evas *eo_e,
|
||||||
evas_object_clip_recalc(eo_obj, obj);
|
evas_object_clip_recalc(eo_obj, obj);
|
||||||
obj->func->render_pre(eo_obj, obj);
|
obj->func->render_pre(eo_obj, obj);
|
||||||
if (obj->proxy.redraw)
|
if (obj->proxy.redraw)
|
||||||
_evas_render_prev_cur_clip_cache_add(eo_e, eo_obj);
|
_evas_render_prev_cur_clip_cache_add(e, obj);
|
||||||
if (obj->proxy.proxies)
|
if (obj->proxy.proxies)
|
||||||
{
|
{
|
||||||
obj->proxy.redraw = EINA_TRUE;
|
obj->proxy.redraw = EINA_TRUE;
|
||||||
|
@ -238,7 +231,7 @@ _evas_render_phase1_direct(Evas *eo_e,
|
||||||
{
|
{
|
||||||
Evas_Object_Protected_Data *proxy = eo_data_get(eo_proxy, EVAS_OBJ_CLASS);
|
Evas_Object_Protected_Data *proxy = eo_data_get(eo_proxy, EVAS_OBJ_CLASS);
|
||||||
proxy->func->render_pre(eo_proxy, proxy);
|
proxy->func->render_pre(eo_proxy, proxy);
|
||||||
_evas_render_prev_cur_clip_cache_add(eo_e, eo_proxy);
|
_evas_render_prev_cur_clip_cache_add(e, proxy);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -247,13 +240,13 @@ _evas_render_phase1_direct(Evas *eo_e,
|
||||||
evas_object_smart_members_get_direct(eo_obj),
|
evas_object_smart_members_get_direct(eo_obj),
|
||||||
obj->cur.map, obj->cur.usemap,
|
obj->cur.map, obj->cur.usemap,
|
||||||
obj->prev.map, obj->prev.usemap,
|
obj->prev.map, obj->prev.usemap,
|
||||||
_evas_render_has_map(eo_obj),
|
_evas_render_has_map(eo_obj, obj),
|
||||||
_evas_render_had_map(eo_obj));
|
_evas_render_had_map(obj));
|
||||||
if ((obj->is_smart) &&
|
if ((obj->is_smart) &&
|
||||||
(_evas_render_has_map(eo_obj)))
|
(_evas_render_has_map(eo_obj, obj)))
|
||||||
{
|
{
|
||||||
RD(" has map + smart\n");
|
RD(" has map + smart\n");
|
||||||
_evas_render_prev_cur_clip_cache_add(eo_e, eo_obj);
|
_evas_render_prev_cur_clip_cache_add(e, obj);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -266,7 +259,7 @@ _evas_render_phase1_direct(Evas *eo_e,
|
||||||
(evas_object_is_opaque(eo_obj, obj) && evas_object_is_visible(eo_obj, obj)))
|
(evas_object_is_opaque(eo_obj, obj) && evas_object_is_visible(eo_obj, obj)))
|
||||||
{
|
{
|
||||||
RD(" rect del\n");
|
RD(" rect del\n");
|
||||||
_evas_render_cur_clip_cache_del(eo_e, eo_obj);
|
_evas_render_cur_clip_cache_del(e, obj);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -274,7 +267,7 @@ _evas_render_phase1_direct(Evas *eo_e,
|
||||||
}
|
}
|
||||||
|
|
||||||
static Eina_Bool
|
static Eina_Bool
|
||||||
_evas_render_phase1_object_process(Evas *eo_e, Evas_Object *eo_obj,
|
_evas_render_phase1_object_process(Evas_Public_Data *e, Evas_Object *eo_obj,
|
||||||
Eina_Array *active_objects,
|
Eina_Array *active_objects,
|
||||||
Eina_Array *restack_objects,
|
Eina_Array *restack_objects,
|
||||||
Eina_Array *delete_objects,
|
Eina_Array *delete_objects,
|
||||||
|
@ -287,7 +280,6 @@ _evas_render_phase1_object_process(Evas *eo_e, Evas_Object *eo_obj,
|
||||||
#endif
|
#endif
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
Evas_Public_Data *e = eo_data_get(eo_e, EVAS_CLASS);
|
|
||||||
Eina_Bool clean_them = EINA_FALSE;
|
Eina_Bool clean_them = EINA_FALSE;
|
||||||
int is_active;
|
int is_active;
|
||||||
Eina_Bool map, hmap;
|
Eina_Bool map, hmap;
|
||||||
|
@ -325,8 +317,8 @@ _evas_render_phase1_object_process(Evas *eo_e, Evas_Object *eo_obj,
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
map = _evas_render_has_map(eo_obj);
|
map = _evas_render_has_map(eo_obj, obj);
|
||||||
hmap = _evas_render_had_map(eo_obj);
|
hmap = _evas_render_had_map(obj);
|
||||||
|
|
||||||
if ((restack) && (!map))
|
if ((restack) && (!map))
|
||||||
{
|
{
|
||||||
|
@ -352,7 +344,7 @@ _evas_render_phase1_object_process(Evas *eo_e, Evas_Object *eo_obj,
|
||||||
(evas_object_was_visible(eo_obj, obj) && (!obj->prev.have_clipees))))
|
(evas_object_was_visible(eo_obj, obj) && (!obj->prev.have_clipees))))
|
||||||
{
|
{
|
||||||
eina_array_push(render_objects, obj);
|
eina_array_push(render_objects, obj);
|
||||||
_evas_render_prev_cur_clip_cache_add(eo_e, eo_obj);
|
_evas_render_prev_cur_clip_cache_add(e, obj);
|
||||||
obj->render_pre = EINA_TRUE;
|
obj->render_pre = EINA_TRUE;
|
||||||
|
|
||||||
if (obj->is_smart)
|
if (obj->is_smart)
|
||||||
|
@ -360,7 +352,7 @@ _evas_render_phase1_object_process(Evas *eo_e, Evas_Object *eo_obj,
|
||||||
Evas_Object_Protected_Data *obj2;
|
Evas_Object_Protected_Data *obj2;
|
||||||
EINA_INLIST_FOREACH(evas_object_smart_members_get_direct(eo_obj), obj2)
|
EINA_INLIST_FOREACH(evas_object_smart_members_get_direct(eo_obj), obj2)
|
||||||
{
|
{
|
||||||
_evas_render_phase1_object_process(eo_e, obj2->object,
|
_evas_render_phase1_object_process(e, obj2->object,
|
||||||
active_objects,
|
active_objects,
|
||||||
restack_objects,
|
restack_objects,
|
||||||
delete_objects,
|
delete_objects,
|
||||||
|
@ -383,7 +375,7 @@ _evas_render_phase1_object_process(Evas *eo_e, Evas_Object *eo_obj,
|
||||||
RDI(level);
|
RDI(level);
|
||||||
RD(" had map - restack objs\n");
|
RD(" had map - restack objs\n");
|
||||||
// eina_array_push(restack_objects, obj);
|
// eina_array_push(restack_objects, obj);
|
||||||
_evas_render_prev_cur_clip_cache_add(eo_e, eo_obj);
|
_evas_render_prev_cur_clip_cache_add(e, obj);
|
||||||
if (obj->changed)
|
if (obj->changed)
|
||||||
{
|
{
|
||||||
if (!map)
|
if (!map)
|
||||||
|
@ -410,7 +402,7 @@ _evas_render_phase1_object_process(Evas *eo_e, Evas_Object *eo_obj,
|
||||||
EINA_INLIST_FOREACH(evas_object_smart_members_get_direct(eo_obj),
|
EINA_INLIST_FOREACH(evas_object_smart_members_get_direct(eo_obj),
|
||||||
obj2)
|
obj2)
|
||||||
{
|
{
|
||||||
_evas_render_phase1_object_process(eo_e, obj2->object,
|
_evas_render_phase1_object_process(e, obj2->object,
|
||||||
active_objects,
|
active_objects,
|
||||||
restack_objects,
|
restack_objects,
|
||||||
delete_objects,
|
delete_objects,
|
||||||
|
@ -454,7 +446,7 @@ _evas_render_phase1_object_process(Evas *eo_e, Evas_Object *eo_obj,
|
||||||
obj->cur.cache.clip.a, evas_object_was_visible(eo_obj, obj));
|
obj->cur.cache.clip.a, evas_object_was_visible(eo_obj, obj));
|
||||||
|
|
||||||
if ((!obj->clip.clipees) && (obj->delete_me == 0) &&
|
if ((!obj->clip.clipees) && (obj->delete_me == 0) &&
|
||||||
(_evas_render_can_render(eo_obj) ||
|
(_evas_render_can_render(eo_obj, obj) ||
|
||||||
(evas_object_was_visible(eo_obj, obj) && (!obj->prev.have_clipees))))
|
(evas_object_was_visible(eo_obj, obj) && (!obj->prev.have_clipees))))
|
||||||
{
|
{
|
||||||
if (obj->is_smart)
|
if (obj->is_smart)
|
||||||
|
@ -467,7 +459,7 @@ _evas_render_phase1_object_process(Evas *eo_e, Evas_Object *eo_obj,
|
||||||
EINA_INLIST_FOREACH
|
EINA_INLIST_FOREACH
|
||||||
(evas_object_smart_members_get_direct(eo_obj), obj2)
|
(evas_object_smart_members_get_direct(eo_obj), obj2)
|
||||||
{
|
{
|
||||||
_evas_render_phase1_object_process(eo_e, obj2->object,
|
_evas_render_phase1_object_process(e, obj2->object,
|
||||||
active_objects,
|
active_objects,
|
||||||
restack_objects,
|
restack_objects,
|
||||||
delete_objects,
|
delete_objects,
|
||||||
|
@ -514,7 +506,7 @@ _evas_render_phase1_object_process(Evas *eo_e, Evas_Object *eo_obj,
|
||||||
EINA_INLIST_FOREACH (evas_object_smart_members_get_direct(eo_obj),
|
EINA_INLIST_FOREACH (evas_object_smart_members_get_direct(eo_obj),
|
||||||
obj2)
|
obj2)
|
||||||
{
|
{
|
||||||
_evas_render_phase1_object_process(eo_e, obj2,
|
_evas_render_phase1_object_process(e, obj2,
|
||||||
active_objects,
|
active_objects,
|
||||||
restack_objects,
|
restack_objects,
|
||||||
delete_objects,
|
delete_objects,
|
||||||
|
@ -536,14 +528,13 @@ _evas_render_phase1_object_process(Evas *eo_e, Evas_Object *eo_obj,
|
||||||
}
|
}
|
||||||
|
|
||||||
static Eina_Bool
|
static Eina_Bool
|
||||||
_evas_render_phase1_process(Evas *eo_e,
|
_evas_render_phase1_process(Evas_Public_Data *e,
|
||||||
Eina_Array *active_objects,
|
Eina_Array *active_objects,
|
||||||
Eina_Array *restack_objects,
|
Eina_Array *restack_objects,
|
||||||
Eina_Array *delete_objects,
|
Eina_Array *delete_objects,
|
||||||
Eina_Array *render_objects,
|
Eina_Array *render_objects,
|
||||||
int *redraw_all)
|
int *redraw_all)
|
||||||
{
|
{
|
||||||
Evas_Public_Data *e = eo_data_get(eo_e, EVAS_CLASS);
|
|
||||||
Evas_Layer *lay;
|
Evas_Layer *lay;
|
||||||
Eina_Bool clean_them = EINA_FALSE;
|
Eina_Bool clean_them = EINA_FALSE;
|
||||||
|
|
||||||
|
@ -555,7 +546,7 @@ _evas_render_phase1_process(Evas *eo_e,
|
||||||
EINA_INLIST_FOREACH(lay->objects, obj)
|
EINA_INLIST_FOREACH(lay->objects, obj)
|
||||||
{
|
{
|
||||||
clean_them |= _evas_render_phase1_object_process
|
clean_them |= _evas_render_phase1_object_process
|
||||||
(eo_e, obj->object, active_objects, restack_objects, delete_objects,
|
(e, obj->object, active_objects, restack_objects, delete_objects,
|
||||||
render_objects, 0, redraw_all, EINA_FALSE
|
render_objects, 0, redraw_all, EINA_FALSE
|
||||||
#ifdef REND_DBG
|
#ifdef REND_DBG
|
||||||
, 1
|
, 1
|
||||||
|
@ -584,7 +575,7 @@ _evas_render_check_pending_objects(Eina_Array *pending_objects, Evas *eo_e EINA_
|
||||||
if (!obj->layer) goto clean_stuff;
|
if (!obj->layer) goto clean_stuff;
|
||||||
|
|
||||||
//If the children are in active objects, They should be cleaned up.
|
//If the children are in active objects, They should be cleaned up.
|
||||||
if (obj->changed_map && _evas_render_has_map(eo_obj))
|
if (obj->changed_map && _evas_render_has_map(eo_obj, obj))
|
||||||
goto clean_stuff;
|
goto clean_stuff;
|
||||||
|
|
||||||
evas_object_clip_recalc(eo_obj, obj);
|
evas_object_clip_recalc(eo_obj, obj);
|
||||||
|
@ -607,7 +598,7 @@ _evas_render_check_pending_objects(Eina_Array *pending_objects, Evas *eo_e EINA_
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
if ((is_active) && (obj->restack) && (!obj->clip.clipees) &&
|
if ((is_active) && (obj->restack) && (!obj->clip.clipees) &&
|
||||||
(_evas_render_can_render(eo_obj) ||
|
(_evas_render_can_render(eo_obj, obj) ||
|
||||||
(evas_object_was_visible(eo_obj, obj) && (!obj->prev.have_clipees))))
|
(evas_object_was_visible(eo_obj, obj) && (!obj->prev.have_clipees))))
|
||||||
{
|
{
|
||||||
if (!(obj->render_pre || obj->rect_del))
|
if (!(obj->render_pre || obj->rect_del))
|
||||||
|
@ -615,7 +606,7 @@ _evas_render_check_pending_objects(Eina_Array *pending_objects, Evas *eo_e EINA_
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
if (is_active && (!obj->clip.clipees) &&
|
if (is_active && (!obj->clip.clipees) &&
|
||||||
(_evas_render_can_render(eo_obj) ||
|
(_evas_render_can_render(eo_obj, obj) ||
|
||||||
(evas_object_was_visible(eo_obj, obj) && (!obj->prev.have_clipees))))
|
(evas_object_was_visible(eo_obj, obj) && (!obj->prev.have_clipees))))
|
||||||
{
|
{
|
||||||
if (obj->render_pre || obj->rect_del) ok = EINA_TRUE;
|
if (obj->render_pre || obj->rect_del) ok = EINA_TRUE;
|
||||||
|
@ -664,9 +655,8 @@ pending_change(void *data, void *gdata EINA_UNUSED)
|
||||||
}
|
}
|
||||||
|
|
||||||
static Eina_Bool
|
static Eina_Bool
|
||||||
_evas_render_can_use_overlay(Evas *eo_e, Evas_Object *eo_obj)
|
_evas_render_can_use_overlay(Evas_Public_Data *e, Evas_Object *eo_obj)
|
||||||
{
|
{
|
||||||
Evas_Public_Data *e = eo_data_get(eo_e, EVAS_CLASS);
|
|
||||||
Eina_Rectangle *r;
|
Eina_Rectangle *r;
|
||||||
Evas_Object *eo_tmp;
|
Evas_Object *eo_tmp;
|
||||||
Eina_List *alphas = NULL;
|
Eina_List *alphas = NULL;
|
||||||
|
@ -676,20 +666,21 @@ _evas_render_can_use_overlay(Evas *eo_e, Evas_Object *eo_obj)
|
||||||
Evas_Coord xc1, yc1, xc2, yc2;
|
Evas_Coord xc1, yc1, xc2, yc2;
|
||||||
unsigned int i;
|
unsigned int i;
|
||||||
Eina_Bool nooverlay;
|
Eina_Bool nooverlay;
|
||||||
|
Evas_Object_Protected_Data *obj = eo_data_get(eo_obj, EVAS_OBJ_CLASS);
|
||||||
|
Evas_Object_Protected_Data *tmp = NULL;
|
||||||
|
|
||||||
video_parent = _evas_object_image_video_parent_get(eo_obj);
|
video_parent = _evas_object_image_video_parent_get(eo_obj);
|
||||||
|
|
||||||
/* Check if any one is the stack make this object mapped */
|
/* Check if any one is the stack make this object mapped */
|
||||||
eo_tmp = eo_obj;
|
eo_tmp = eo_obj;
|
||||||
while (eo_tmp && !_evas_render_has_map(eo_tmp))
|
while (tmp && !_evas_render_has_map(eo_tmp, tmp))
|
||||||
{
|
{
|
||||||
Evas_Object_Protected_Data *tmp = eo_data_get(eo_tmp, EVAS_OBJ_CLASS);
|
tmp = eo_data_get(eo_tmp, EVAS_OBJ_CLASS);
|
||||||
eo_tmp = tmp->smart.parent;
|
eo_tmp = tmp->smart.parent;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (eo_tmp && _evas_render_has_map(eo_tmp)) return EINA_FALSE; /* we are mapped, we can't be an overlay */
|
if (tmp && _evas_render_has_map(eo_tmp, tmp)) return EINA_FALSE; /* we are mapped, we can't be an overlay */
|
||||||
|
|
||||||
Evas_Object_Protected_Data *obj = eo_data_get(eo_obj, EVAS_OBJ_CLASS);
|
|
||||||
if (!evas_object_is_visible(eo_obj, obj)) return EINA_FALSE; /* no need to update the overlay if it's not visible */
|
if (!evas_object_is_visible(eo_obj, obj)) return EINA_FALSE; /* no need to update the overlay if it's not visible */
|
||||||
|
|
||||||
/* If any recoloring of the surface is needed, n overlay to */
|
/* If any recoloring of the surface is needed, n overlay to */
|
||||||
|
@ -864,7 +855,7 @@ _evas_render_can_use_overlay(Evas *eo_e, Evas_Object *eo_obj)
|
||||||
}
|
}
|
||||||
|
|
||||||
Eina_Bool
|
Eina_Bool
|
||||||
evas_render_mapped(Evas *eo_e, Evas_Object *eo_obj, Evas_Object_Protected_Data *obj,
|
evas_render_mapped(Evas_Public_Data *e, Evas_Object *eo_obj, Evas_Object_Protected_Data *obj,
|
||||||
void *context, void *surface,
|
void *context, void *surface,
|
||||||
int off_x, int off_y, int mapped,
|
int off_x, int off_y, int mapped,
|
||||||
int ecx, int ecy, int ecw, int ech
|
int ecx, int ecy, int ecw, int ech
|
||||||
|
@ -873,7 +864,6 @@ evas_render_mapped(Evas *eo_e, Evas_Object *eo_obj, Evas_Object_Protected_Data *
|
||||||
#endif
|
#endif
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
Evas_Public_Data *e = eo_data_get(eo_e, EVAS_CLASS);
|
|
||||||
void *ctx;
|
void *ctx;
|
||||||
Evas_Object_Protected_Data *obj2;
|
Evas_Object_Protected_Data *obj2;
|
||||||
Eina_Bool clean_them = EINA_FALSE;
|
Eina_Bool clean_them = EINA_FALSE;
|
||||||
|
@ -893,7 +883,7 @@ evas_render_mapped(Evas *eo_e, Evas_Object *eo_obj, Evas_Object_Protected_Data *
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (!(((evas_object_is_active(eo_obj, obj) && (!obj->clip.clipees) &&
|
else if (!(((evas_object_is_active(eo_obj, obj) && (!obj->clip.clipees) &&
|
||||||
(_evas_render_can_render(eo_obj))))
|
(_evas_render_can_render(eo_obj, obj))))
|
||||||
))
|
))
|
||||||
{
|
{
|
||||||
RDI(level);
|
RDI(level);
|
||||||
|
@ -906,8 +896,8 @@ evas_render_mapped(Evas *eo_e, Evas_Object *eo_obj, Evas_Object_Protected_Data *
|
||||||
RD(" Hasmap: %p (%d) %p %d -> %d\n",obj->func->can_map,
|
RD(" Hasmap: %p (%d) %p %d -> %d\n",obj->func->can_map,
|
||||||
obj->func->can_map ? obj->func->can_map(eo_obj): -1,
|
obj->func->can_map ? obj->func->can_map(eo_obj): -1,
|
||||||
obj->cur.map, obj->cur.usemap,
|
obj->cur.map, obj->cur.usemap,
|
||||||
_evas_render_has_map(eo_obj));
|
_evas_render_has_map(eo_obj, obj));
|
||||||
if (_evas_render_has_map(eo_obj))
|
if (_evas_render_has_map(eo_obj, obj))
|
||||||
{
|
{
|
||||||
int sw, sh;
|
int sw, sh;
|
||||||
Eina_Bool changed = EINA_FALSE, rendered = EINA_FALSE;
|
Eina_Bool changed = EINA_FALSE, rendered = EINA_FALSE;
|
||||||
|
@ -1017,7 +1007,7 @@ evas_render_mapped(Evas *eo_e, Evas_Object *eo_obj, Evas_Object_Protected_Data *
|
||||||
EINA_INLIST_FOREACH
|
EINA_INLIST_FOREACH
|
||||||
(evas_object_smart_members_get_direct(eo_obj), obj2)
|
(evas_object_smart_members_get_direct(eo_obj), obj2)
|
||||||
{
|
{
|
||||||
clean_them |= evas_render_mapped(eo_e, obj2->object, obj2, ctx,
|
clean_them |= evas_render_mapped(e, obj2->object, obj2, ctx,
|
||||||
obj->map.surface,
|
obj->map.surface,
|
||||||
off_x2, off_y2, 1,
|
off_x2, off_y2, 1,
|
||||||
ecx, ecy, ecw, ech
|
ecx, ecy, ecw, ech
|
||||||
|
@ -1064,8 +1054,8 @@ evas_render_mapped(Evas *eo_e, Evas_Object *eo_obj, Evas_Object_Protected_Data *
|
||||||
{
|
{
|
||||||
if (obj->cur.clipper)
|
if (obj->cur.clipper)
|
||||||
{
|
{
|
||||||
Evas_Object_Protected_Data *cur_clipper = eo_data_get(obj->cur.clipper, EVAS_OBJ_CLASS);
|
|
||||||
int x, y, w, h;
|
int x, y, w, h;
|
||||||
|
|
||||||
evas_object_clip_recalc(eo_obj, obj);
|
evas_object_clip_recalc(eo_obj, obj);
|
||||||
x = obj->cur.cache.clip.x;
|
x = obj->cur.cache.clip.x;
|
||||||
y = obj->cur.cache.clip.y;
|
y = obj->cur.cache.clip.y;
|
||||||
|
@ -1078,15 +1068,15 @@ evas_render_mapped(Evas *eo_e, Evas_Object *eo_obj, Evas_Object_Protected_Data *
|
||||||
|
|
||||||
obj->cur.cache.clip.dirty = EINA_TRUE;
|
obj->cur.cache.clip.dirty = EINA_TRUE;
|
||||||
tobj = obj->cur.map_parent;
|
tobj = obj->cur.map_parent;
|
||||||
obj->cur.map_parent = cur_clipper->cur.map_parent;
|
obj->cur.map_parent = obj->cur.clipper->cur.map_parent;
|
||||||
obj->cur.map_parent = tobj;
|
obj->cur.map_parent = tobj;
|
||||||
}
|
}
|
||||||
|
|
||||||
RECTS_CLIP_TO_RECT(x, y, w, h,
|
RECTS_CLIP_TO_RECT(x, y, w, h,
|
||||||
cur_clipper->cur.cache.clip.x,
|
obj->cur.clipper->cur.cache.clip.x,
|
||||||
cur_clipper->cur.cache.clip.y,
|
obj->cur.clipper->cur.cache.clip.y,
|
||||||
cur_clipper->cur.cache.clip.w,
|
obj->cur.clipper->cur.cache.clip.w,
|
||||||
cur_clipper->cur.cache.clip.h);
|
obj->cur.clipper->cur.cache.clip.h);
|
||||||
|
|
||||||
e->engine.func->context_clip_set(e->engine.data.output,
|
e->engine.func->context_clip_set(e->engine.data.output,
|
||||||
context,
|
context,
|
||||||
|
@ -1129,7 +1119,7 @@ evas_render_mapped(Evas *eo_e, Evas_Object *eo_obj, Evas_Object_Protected_Data *
|
||||||
EINA_INLIST_FOREACH
|
EINA_INLIST_FOREACH
|
||||||
(evas_object_smart_members_get_direct(eo_obj), obj2)
|
(evas_object_smart_members_get_direct(eo_obj), obj2)
|
||||||
{
|
{
|
||||||
clean_them |= evas_render_mapped(eo_e, obj2->object, obj2, ctx,
|
clean_them |= evas_render_mapped(e, obj2->object, obj2, ctx,
|
||||||
surface,
|
surface,
|
||||||
off_x, off_y, 1,
|
off_x, off_y, 1,
|
||||||
ecx, ecy, ecw, ech
|
ecx, ecy, ecw, ech
|
||||||
|
@ -1155,16 +1145,15 @@ evas_render_mapped(Evas *eo_e, Evas_Object *eo_obj, Evas_Object_Protected_Data *
|
||||||
obj->cur.geometry.w,
|
obj->cur.geometry.w,
|
||||||
obj->cur.geometry.h);
|
obj->cur.geometry.h);
|
||||||
|
|
||||||
Evas_Object_Protected_Data *cur_clipper = eo_data_get(obj->cur.clipper, EVAS_OBJ_CLASS);
|
|
||||||
RD(" clipper: %i %i %ix%i\n",
|
RD(" clipper: %i %i %ix%i\n",
|
||||||
cur_clipper->cur.cache.clip.x + off_x,
|
obj->cur.clipper->cur.cache.clip.x + off_x,
|
||||||
cur_clipper->cur.cache.clip.y + off_y,
|
obj->cur.clipper->cur.cache.clip.y + off_y,
|
||||||
cur_clipper->cur.cache.clip.w,
|
obj->cur.clipper->cur.cache.clip.w,
|
||||||
cur_clipper->cur.cache.clip.h);
|
obj->cur.clipper->cur.cache.clip.h);
|
||||||
|
|
||||||
int x, y, w, h;
|
int x, y, w, h;
|
||||||
|
|
||||||
if (_evas_render_has_map(eo_obj))
|
if (_evas_render_has_map(eo_obj, obj))
|
||||||
evas_object_clip_recalc(eo_obj, obj);
|
evas_object_clip_recalc(eo_obj, obj);
|
||||||
|
|
||||||
x = obj->cur.cache.clip.x + off_x;
|
x = obj->cur.cache.clip.x + off_x;
|
||||||
|
@ -1173,10 +1162,10 @@ evas_render_mapped(Evas *eo_e, Evas_Object *eo_obj, Evas_Object_Protected_Data *
|
||||||
h = obj->cur.cache.clip.h;
|
h = obj->cur.cache.clip.h;
|
||||||
|
|
||||||
RECTS_CLIP_TO_RECT(x, y, w, h,
|
RECTS_CLIP_TO_RECT(x, y, w, h,
|
||||||
cur_clipper->cur.cache.clip.x + off_x,
|
obj->cur.clipper->cur.cache.clip.x + off_x,
|
||||||
cur_clipper->cur.cache.clip.y + off_y,
|
obj->cur.clipper->cur.cache.clip.y + off_y,
|
||||||
cur_clipper->cur.cache.clip.w,
|
obj->cur.clipper->cur.cache.clip.w,
|
||||||
cur_clipper->cur.cache.clip.h);
|
obj->cur.clipper->cur.cache.clip.h);
|
||||||
|
|
||||||
e->engine.func->context_clip_set(e->engine.data.output,
|
e->engine.func->context_clip_set(e->engine.data.output,
|
||||||
ctx, x, y, w, h);
|
ctx, x, y, w, h);
|
||||||
|
@ -1190,20 +1179,19 @@ evas_render_mapped(Evas *eo_e, Evas_Object *eo_obj, Evas_Object_Protected_Data *
|
||||||
{
|
{
|
||||||
if (obj->cur.clipper)
|
if (obj->cur.clipper)
|
||||||
{
|
{
|
||||||
Evas_Object_Protected_Data *cur_clipper = eo_data_get(obj->cur.clipper, EVAS_OBJ_CLASS);
|
|
||||||
int x, y, w, h;
|
int x, y, w, h;
|
||||||
|
|
||||||
if (_evas_render_has_map(eo_obj))
|
if (_evas_render_has_map(eo_obj, obj))
|
||||||
evas_object_clip_recalc(eo_obj, obj);
|
evas_object_clip_recalc(eo_obj, obj);
|
||||||
x = obj->cur.cache.clip.x;
|
x = obj->cur.cache.clip.x;
|
||||||
y = obj->cur.cache.clip.y;
|
y = obj->cur.cache.clip.y;
|
||||||
w = obj->cur.cache.clip.w;
|
w = obj->cur.cache.clip.w;
|
||||||
h = obj->cur.cache.clip.h;
|
h = obj->cur.cache.clip.h;
|
||||||
RECTS_CLIP_TO_RECT(x, y, w, h,
|
RECTS_CLIP_TO_RECT(x, y, w, h,
|
||||||
cur_clipper->cur.cache.clip.x,
|
obj->cur.clipper->cur.cache.clip.x,
|
||||||
cur_clipper->cur.cache.clip.y,
|
obj->cur.clipper->cur.cache.clip.y,
|
||||||
cur_clipper->cur.cache.clip.w,
|
obj->cur.clipper->cur.cache.clip.w,
|
||||||
cur_clipper->cur.cache.clip.h);
|
obj->cur.clipper->cur.cache.clip.h);
|
||||||
e->engine.func->context_clip_set(e->engine.data.output,
|
e->engine.func->context_clip_set(e->engine.data.output,
|
||||||
context,
|
context,
|
||||||
x + off_x, y + off_y, w, h);
|
x + off_x, y + off_y, w, h);
|
||||||
|
@ -1241,13 +1229,13 @@ _evas_render_cutout_add(Evas *eo_e, Evas_Object *eo_obj, int off_x, int off_y)
|
||||||
if ((obj->cur.map) && (obj->cur.usemap))
|
if ((obj->cur.map) && (obj->cur.usemap))
|
||||||
{
|
{
|
||||||
Evas_Object *eo_oo;
|
Evas_Object *eo_oo;
|
||||||
|
Evas_Object_Protected_Data *oo;
|
||||||
|
|
||||||
eo_oo = eo_obj;
|
eo_oo = eo_obj;
|
||||||
Evas_Object_Protected_Data *oo = eo_data_get(eo_oo, EVAS_OBJ_CLASS);
|
oo = eo_data_get(eo_oo, EVAS_OBJ_CLASS);
|
||||||
while (oo->cur.clipper)
|
while (oo->cur.clipper)
|
||||||
{
|
{
|
||||||
Evas_Object_Protected_Data *oo_cur_clipper = eo_data_get(oo->cur.clipper, EVAS_OBJ_CLASS);
|
if ((oo->cur.clipper->cur.map_parent
|
||||||
if ((oo_cur_clipper->cur.map_parent
|
|
||||||
!= oo->cur.map_parent) &&
|
!= oo->cur.map_parent) &&
|
||||||
(!((oo->cur.map) && (oo->cur.usemap))))
|
(!((oo->cur.map) && (oo->cur.usemap))))
|
||||||
break;
|
break;
|
||||||
|
@ -1256,8 +1244,8 @@ _evas_render_cutout_add(Evas *eo_e, Evas_Object *eo_obj, int off_x, int off_y)
|
||||||
oo->cur.geometry.y,
|
oo->cur.geometry.y,
|
||||||
oo->cur.geometry.w,
|
oo->cur.geometry.w,
|
||||||
oo->cur.geometry.h);
|
oo->cur.geometry.h);
|
||||||
eo_oo = oo->cur.clipper;
|
eo_oo = oo->cur.eo_clipper;
|
||||||
oo = eo_data_get(eo_oo, EVAS_OBJ_CLASS);
|
oo = oo->cur.clipper;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
e->engine.func->context_cutout_add
|
e->engine.func->context_cutout_add
|
||||||
|
@ -1295,6 +1283,7 @@ evas_render_updates_internal(Evas *eo_e,
|
||||||
{
|
{
|
||||||
Evas_Object *eo_obj;
|
Evas_Object *eo_obj;
|
||||||
Evas_Object_Protected_Data *obj;
|
Evas_Object_Protected_Data *obj;
|
||||||
|
Evas_Public_Data *e;
|
||||||
Eina_List *updates = NULL;
|
Eina_List *updates = NULL;
|
||||||
Eina_List *ll;
|
Eina_List *ll;
|
||||||
void *surface;
|
void *surface;
|
||||||
|
@ -1310,7 +1299,8 @@ evas_render_updates_internal(Evas *eo_e,
|
||||||
MAGIC_CHECK(eo_e, Evas, MAGIC_EVAS);
|
MAGIC_CHECK(eo_e, Evas, MAGIC_EVAS);
|
||||||
return NULL;
|
return NULL;
|
||||||
MAGIC_CHECK_END();
|
MAGIC_CHECK_END();
|
||||||
Evas_Public_Data *e = eo_data_get(eo_e, EVAS_CLASS);
|
|
||||||
|
e = eo_data_get(eo_e, EVAS_CLASS);
|
||||||
if (!e->changed) return NULL;
|
if (!e->changed) return NULL;
|
||||||
|
|
||||||
#ifdef EVAS_CSERVE2
|
#ifdef EVAS_CSERVE2
|
||||||
|
@ -1329,7 +1319,7 @@ evas_render_updates_internal(Evas *eo_e,
|
||||||
|
|
||||||
/* phase 1. add extra updates for changed objects */
|
/* phase 1. add extra updates for changed objects */
|
||||||
if (e->invalidate || e->render_objects.count <= 0)
|
if (e->invalidate || e->render_objects.count <= 0)
|
||||||
clean_them = _evas_render_phase1_process(eo_e,
|
clean_them = _evas_render_phase1_process(e,
|
||||||
&e->active_objects,
|
&e->active_objects,
|
||||||
&e->restack_objects,
|
&e->restack_objects,
|
||||||
&e->delete_objects,
|
&e->delete_objects,
|
||||||
|
@ -1343,13 +1333,13 @@ evas_render_updates_internal(Evas *eo_e,
|
||||||
EINA_LIST_FOREACH(e->video_objects, ll, eo_obj)
|
EINA_LIST_FOREACH(e->video_objects, ll, eo_obj)
|
||||||
{
|
{
|
||||||
/* we need the surface to be transparent to display the underlying overlay */
|
/* we need the surface to be transparent to display the underlying overlay */
|
||||||
if (alpha && _evas_render_can_use_overlay(eo_e, eo_obj))
|
if (alpha && _evas_render_can_use_overlay(e, eo_obj))
|
||||||
_evas_object_image_video_overlay_show(eo_obj);
|
_evas_object_image_video_overlay_show(eo_obj);
|
||||||
else
|
else
|
||||||
_evas_object_image_video_overlay_hide(eo_obj);
|
_evas_object_image_video_overlay_hide(eo_obj);
|
||||||
}
|
}
|
||||||
/* phase 1.8. pre render for proxy */
|
/* phase 1.8. pre render for proxy */
|
||||||
_evas_render_phase1_direct(eo_e, &e->active_objects, &e->restack_objects,
|
_evas_render_phase1_direct(e, &e->active_objects, &e->restack_objects,
|
||||||
&e->delete_objects, &e->render_objects);
|
&e->delete_objects, &e->render_objects);
|
||||||
|
|
||||||
/* phase 2. force updates for restacks */
|
/* phase 2. force updates for restacks */
|
||||||
|
@ -1358,7 +1348,7 @@ evas_render_updates_internal(Evas *eo_e,
|
||||||
obj = eina_array_data_get(&e->restack_objects, i);
|
obj = eina_array_data_get(&e->restack_objects, i);
|
||||||
eo_obj = obj->object;
|
eo_obj = obj->object;
|
||||||
obj->func->render_pre(eo_obj, obj);
|
obj->func->render_pre(eo_obj, obj);
|
||||||
_evas_render_prev_cur_clip_cache_add(eo_e, eo_obj);
|
_evas_render_prev_cur_clip_cache_add(e, obj);
|
||||||
}
|
}
|
||||||
eina_array_clean(&e->restack_objects);
|
eina_array_clean(&e->restack_objects);
|
||||||
|
|
||||||
|
@ -1643,7 +1633,7 @@ evas_render_updates_internal(Evas *eo_e,
|
||||||
_evas_render_cutout_add(eo_e, obj2->object, off_x, off_y);
|
_evas_render_cutout_add(eo_e, obj2->object, off_x, off_y);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
clean_them |= evas_render_mapped(eo_e, eo_obj, obj, e->engine.data.context,
|
clean_them |= evas_render_mapped(e, eo_obj, obj, e->engine.data.context,
|
||||||
surface, off_x, off_y, 0,
|
surface, off_x, off_y, 0,
|
||||||
cx, cy, cw, ch
|
cx, cy, cw, ch
|
||||||
#ifdef REND_DBG
|
#ifdef REND_DBG
|
||||||
|
@ -1933,10 +1923,12 @@ _canvas_render_dump(Eo *eo_e EINA_UNUSED, void *_pd, va_list *list EINA_UNUSED)
|
||||||
void
|
void
|
||||||
evas_render_invalidate(Evas *eo_e)
|
evas_render_invalidate(Evas *eo_e)
|
||||||
{
|
{
|
||||||
|
Evas_Public_Data *e;
|
||||||
|
|
||||||
MAGIC_CHECK(eo_e, Evas, MAGIC_EVAS);
|
MAGIC_CHECK(eo_e, Evas, MAGIC_EVAS);
|
||||||
return;
|
return;
|
||||||
MAGIC_CHECK_END();
|
MAGIC_CHECK_END();
|
||||||
Evas_Public_Data *e = eo_data_get(eo_e, EVAS_CLASS);
|
e = eo_data_get(eo_e, EVAS_CLASS);
|
||||||
|
|
||||||
eina_array_clean(&e->active_objects);
|
eina_array_clean(&e->active_objects);
|
||||||
eina_array_clean(&e->render_objects);
|
eina_array_clean(&e->render_objects);
|
||||||
|
@ -1950,10 +1942,13 @@ evas_render_invalidate(Evas *eo_e)
|
||||||
void
|
void
|
||||||
evas_render_object_recalc(Evas_Object *eo_obj)
|
evas_render_object_recalc(Evas_Object *eo_obj)
|
||||||
{
|
{
|
||||||
|
Evas_Object_Protected_Data *obj;
|
||||||
|
|
||||||
MAGIC_CHECK(eo_obj, Evas_Object, MAGIC_OBJ);
|
MAGIC_CHECK(eo_obj, Evas_Object, MAGIC_OBJ);
|
||||||
return;
|
return;
|
||||||
MAGIC_CHECK_END();
|
MAGIC_CHECK_END();
|
||||||
Evas_Object_Protected_Data *obj = eo_data_get(eo_obj, EVAS_OBJ_CLASS);
|
|
||||||
|
obj = eo_data_get(eo_obj, EVAS_OBJ_CLASS);
|
||||||
if ((!obj->changed) && (obj->delete_me < 2))
|
if ((!obj->changed) && (obj->delete_me < 2))
|
||||||
{
|
{
|
||||||
Evas_Public_Data *e;
|
Evas_Public_Data *e;
|
||||||
|
|
|
@ -2,9 +2,8 @@
|
||||||
#define EVAS_INLINE_H
|
#define EVAS_INLINE_H
|
||||||
|
|
||||||
static inline Eina_Bool
|
static inline Eina_Bool
|
||||||
_evas_render_has_map(Evas_Object *eo_obj)
|
_evas_render_has_map(Evas_Object *eo_obj, Evas_Object_Protected_Data *obj)
|
||||||
{
|
{
|
||||||
Evas_Object_Protected_Data *obj = eo_data_get(eo_obj, EVAS_OBJ_CLASS);
|
|
||||||
return ((!((obj->func->can_map) && (obj->func->can_map(eo_obj)))) &&
|
return ((!((obj->func->can_map) && (obj->func->can_map(eo_obj)))) &&
|
||||||
((obj->cur.map) && (obj->cur.usemap)));
|
((obj->cur.map) && (obj->cur.usemap)));
|
||||||
// return ((obj->cur.map) && (obj->cur.usemap));
|
// return ((obj->cur.map) && (obj->cur.usemap));
|
||||||
|
@ -127,11 +126,10 @@ evas_object_clippers_is_visible(Evas_Object *eo_obj __UNUSED__, Evas_Object_Prot
|
||||||
{
|
{
|
||||||
if (obj->cur.visible)
|
if (obj->cur.visible)
|
||||||
{
|
{
|
||||||
Evas_Object_Protected_Data *clipper_pd = NULL;
|
|
||||||
if (obj->cur.clipper)
|
if (obj->cur.clipper)
|
||||||
{
|
{
|
||||||
clipper_pd = eo_data_get(obj->cur.clipper, EVAS_OBJ_CLASS);
|
return evas_object_clippers_is_visible(obj->cur.eo_clipper,
|
||||||
return evas_object_clippers_is_visible(obj->cur.clipper, clipper_pd);
|
obj->cur.clipper);
|
||||||
}
|
}
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
@ -205,13 +203,12 @@ evas_object_coords_recalc(Evas_Object *eo_obj, Evas_Object_Protected_Data *obj)
|
||||||
static inline void
|
static inline void
|
||||||
evas_object_clip_recalc(Evas_Object *eo_obj, Evas_Object_Protected_Data *obj)
|
evas_object_clip_recalc(Evas_Object *eo_obj, Evas_Object_Protected_Data *obj)
|
||||||
{
|
{
|
||||||
|
Evas_Object_Protected_Data *clipper = NULL;
|
||||||
int cx, cy, cw, ch, cr, cg, cb, ca;
|
int cx, cy, cw, ch, cr, cg, cb, ca;
|
||||||
int nx, ny, nw, nh, nr, ng, nb, na;
|
int nx, ny, nw, nh, nr, ng, nb, na;
|
||||||
Eina_Bool cvis, nvis;
|
Eina_Bool cvis, nvis;
|
||||||
|
|
||||||
Evas_Object_Protected_Data *clipper = NULL;
|
clipper = obj->cur.clipper;
|
||||||
if (obj->cur.clipper)
|
|
||||||
clipper = eo_data_get(obj->cur.clipper, EVAS_OBJ_CLASS);
|
|
||||||
|
|
||||||
if ((!obj->cur.cache.clip.dirty) &&
|
if ((!obj->cur.cache.clip.dirty) &&
|
||||||
!(!obj->cur.clipper || clipper->cur.cache.clip.dirty)) return;
|
!(!obj->cur.clipper || clipper->cur.cache.clip.dirty)) return;
|
||||||
|
@ -242,11 +239,11 @@ evas_object_clip_recalc(Evas_Object *eo_obj, Evas_Object_Protected_Data *obj)
|
||||||
cr = obj->cur.color.r; cg = obj->cur.color.g;
|
cr = obj->cur.color.r; cg = obj->cur.color.g;
|
||||||
cb = obj->cur.color.b; ca = obj->cur.color.a;
|
cb = obj->cur.color.b; ca = obj->cur.color.a;
|
||||||
|
|
||||||
if (obj->cur.clipper)
|
if (clipper)
|
||||||
{
|
{
|
||||||
// this causes problems... hmmm ?????
|
// this causes problems... hmmm ?????
|
||||||
if (clipper->cur.cache.clip.dirty)
|
if (clipper->cur.cache.clip.dirty)
|
||||||
evas_object_clip_recalc(obj->cur.clipper, clipper);
|
evas_object_clip_recalc(obj->cur.eo_clipper, clipper);
|
||||||
|
|
||||||
// I don't know why this test was here in the first place. As I have
|
// I don't know why this test was here in the first place. As I have
|
||||||
// no issue showing up due to this, I keep it and move color out of it.
|
// no issue showing up due to this, I keep it and move color out of it.
|
||||||
|
|
|
@ -528,7 +528,8 @@ struct _Evas_Object_Protected_Data
|
||||||
|
|
||||||
struct {
|
struct {
|
||||||
Evas_Map *map;
|
Evas_Map *map;
|
||||||
Evas_Object *clipper;
|
Evas_Object_Protected_Data *clipper;
|
||||||
|
Evas_Object *eo_clipper;
|
||||||
Evas_Object *mask;
|
Evas_Object *mask;
|
||||||
Evas_Object *map_parent;
|
Evas_Object *map_parent;
|
||||||
double scale;
|
double scale;
|
||||||
|
@ -1023,7 +1024,7 @@ void evas_object_smart_member_stack_below(Evas_Object *member, Evas_Object *othe
|
||||||
const Eina_Inlist *evas_object_smart_members_get_direct(const Evas_Object *obj);
|
const Eina_Inlist *evas_object_smart_members_get_direct(const Evas_Object *obj);
|
||||||
void _evas_object_smart_members_all_del(Evas_Object *obj);
|
void _evas_object_smart_members_all_del(Evas_Object *obj);
|
||||||
void evas_call_smarts_calculate(Evas *e);
|
void evas_call_smarts_calculate(Evas *e);
|
||||||
void evas_object_smart_bouding_box_update(Evas_Object *obj);
|
void evas_object_smart_bounding_box_update(Evas_Object *eo_obj, Evas_Object_Protected_Data *obj);
|
||||||
void evas_object_smart_need_bounding_box_update(Evas_Object *obj);
|
void evas_object_smart_need_bounding_box_update(Evas_Object *obj);
|
||||||
void *evas_mem_calloc(int size);
|
void *evas_mem_calloc(int size);
|
||||||
void _evas_post_event_callback_call(Evas *e, Evas_Public_Data* e_pd);
|
void _evas_post_event_callback_call(Evas *e, Evas_Public_Data* e_pd);
|
||||||
|
@ -1227,7 +1228,7 @@ void _evas_unwalk(Evas_Public_Data *e_pd);
|
||||||
EAPI int _evas_module_engine_inherit(Evas_Func *funcs, char *name);
|
EAPI int _evas_module_engine_inherit(Evas_Func *funcs, char *name);
|
||||||
EAPI const char *_evas_module_libdir_get(void);
|
EAPI const char *_evas_module_libdir_get(void);
|
||||||
|
|
||||||
Eina_Bool evas_render_mapped(Evas *e, Evas_Object *obj, Evas_Object_Protected_Data *source_pd,
|
Eina_Bool evas_render_mapped(Evas_Public_Data *e, Evas_Object *obj, Evas_Object_Protected_Data *source_pd,
|
||||||
void *context, void *surface,
|
void *context, void *surface,
|
||||||
int off_x, int off_y, int mapped,
|
int off_x, int off_y, int mapped,
|
||||||
int ecx, int ecy, int ecw, int ech
|
int ecx, int ecy, int ecw, int ech
|
||||||
|
|
Loading…
Reference in New Issue