summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCedric BAIL <cedric.bail@free.fr>2012-10-10 07:23:00 +0000
committerCedric BAIL <cedric.bail@free.fr>2012-10-10 07:23:00 +0000
commite0af0dca6d587dd2c81fa7b7f0bc80166107d232 (patch)
treea844d77c7ffae87ed44f7230c1cfa2cd92af8d81
parent3dbe48e4fed43682ed74d215af49ca44557f6563 (diff)
evas: remove as many call as easily possible to eo_data_get.
SVN revision: 77702
-rw-r--r--legacy/evas/src/lib/canvas/evas_clip.c65
-rw-r--r--legacy/evas/src/lib/canvas/evas_events.c2
-rw-r--r--legacy/evas/src/lib/canvas/evas_object_image.c16
-rw-r--r--legacy/evas/src/lib/canvas/evas_object_line.c5
-rw-r--r--legacy/evas/src/lib/canvas/evas_object_main.c52
-rw-r--r--legacy/evas/src/lib/canvas/evas_object_polygon.c5
-rw-r--r--legacy/evas/src/lib/canvas/evas_object_rectangle.c5
-rw-r--r--legacy/evas/src/lib/canvas/evas_object_smart.c9
-rw-r--r--legacy/evas/src/lib/canvas/evas_object_text.c23
-rw-r--r--legacy/evas/src/lib/canvas/evas_object_textblock.c5
-rw-r--r--legacy/evas/src/lib/canvas/evas_object_textgrid.c5
-rw-r--r--legacy/evas/src/lib/canvas/evas_render.c173
-rw-r--r--legacy/evas/src/lib/include/evas_inline.x17
-rw-r--r--legacy/evas/src/lib/include/evas_private.h7
14 files changed, 185 insertions, 204 deletions
diff --git a/legacy/evas/src/lib/canvas/evas_clip.c b/legacy/evas/src/lib/canvas/evas_clip.c
index d412e435fa..69e8efb89c 100644
--- a/legacy/evas/src/lib/canvas/evas_clip.c
+++ b/legacy/evas/src/lib/canvas/evas_clip.c
@@ -42,9 +42,7 @@ evas_object_clippers_was_visible(Evas_Object *eo_obj EINA_UNUSED, Evas_Object_Pr
42 { 42 {
43 if (obj->prev.clipper) 43 if (obj->prev.clipper)
44 { 44 {
45 Evas_Object_Protected_Data *prev_clipper = 45 return evas_object_clippers_is_visible(obj->prev.eo_clipper, obj->prev.clipper);
46 eo_data_get(obj->prev.clipper, EVAS_OBJ_CLASS);
47 return evas_object_clippers_is_visible(obj->prev.clipper, prev_clipper);
48 } 46 }
49 return 1; 47 return 1;
50 } 48 }
@@ -127,8 +125,7 @@ evas_object_clip_across_check(Evas_Object *eo_obj, Evas_Object_Protected_Data *o
127{ 125{
128#ifdef MAP_ACROSS 126#ifdef MAP_ACROSS
129 if (!obj->cur.clipper) return; 127 if (!obj->cur.clipper) return;
130 Evas_Object_Protected_Data *clipper = eo_data_get(obj->cur.clipper, EVAS_OBJ_CLASS); 128 if (obj->cur.clipper->cur.map_parent != obj->cur.map_parent)
131 if (clipper->cur.map_parent != obj->cur.map_parent)
132 evas_object_child_map_across_mark(eo_obj, obj, obj->cur.map_parent, 1); 129 evas_object_child_map_across_mark(eo_obj, obj, obj->cur.map_parent, 1);
133#endif 130#endif
134} 131}
@@ -198,18 +195,22 @@ evas_object_clip_set(
198void 195void
199_clip_set(Eo *eo_obj, void *_pd, va_list *list) 196_clip_set(Eo *eo_obj, void *_pd, va_list *list)
200{ 197{
198 Evas_Object_Protected_Data *clip;
201 Evas_Object *eo_clip = va_arg(*list, Evas_Object *); 199 Evas_Object *eo_clip = va_arg(*list, Evas_Object *);
202 Evas_Object_Protected_Data *obj = _pd; 200 Evas_Object_Protected_Data *obj = _pd;
201
203 if (!eo_clip) 202 if (!eo_clip)
204 { 203 {
205 evas_object_clip_unset(eo_obj); 204 evas_object_clip_unset(eo_obj);
206 return; 205 return;
207 } 206 }
207
208 MAGIC_CHECK(eo_clip, Evas_Object, MAGIC_OBJ); 208 MAGIC_CHECK(eo_clip, Evas_Object, MAGIC_OBJ);
209 return; 209 return;
210 MAGIC_CHECK_END(); 210 MAGIC_CHECK_END();
211 Evas_Object_Protected_Data *clip = eo_data_get(eo_clip, EVAS_OBJ_CLASS); 211
212 if (obj->cur.clipper == eo_clip) return; 212 clip = eo_data_get(eo_clip, EVAS_OBJ_CLASS);
213 if (obj->cur.eo_clipper == eo_clip) return;
213 if (eo_obj == eo_clip) 214 if (eo_obj == eo_clip)
214 { 215 {
215 CRIT("Setting clip %p on itself", eo_obj); 216 CRIT("Setting clip %p on itself", eo_obj);
@@ -255,21 +256,21 @@ _clip_set(Eo *eo_obj, void *_pd, va_list *list)
255 if (obj->cur.clipper) 256 if (obj->cur.clipper)
256 { 257 {
257 /* unclip */ 258 /* unclip */
258 Evas_Object_Protected_Data *cur_clipper = eo_data_get(obj->cur.clipper, EVAS_OBJ_CLASS); 259 obj->cur.clipper->clip.clipees = eina_list_remove(obj->cur.clipper->clip.clipees, eo_obj);
259 cur_clipper->clip.clipees = eina_list_remove(cur_clipper->clip.clipees, eo_obj); 260 if (!obj->cur.clipper->clip.clipees)
260 if (!cur_clipper->clip.clipees)
261 { 261 {
262 cur_clipper->cur.have_clipees = 0; 262 obj->cur.clipper->cur.have_clipees = 0;
263 if (cur_clipper->cur.visible) 263 if (obj->cur.clipper->cur.visible)
264 evas_damage_rectangle_add(cur_clipper->layer->evas->evas, 264 evas_damage_rectangle_add(obj->cur.clipper->layer->evas->evas,
265 cur_clipper->cur.geometry.x, 265 obj->cur.clipper->cur.geometry.x,
266 cur_clipper->cur.geometry.y, 266 obj->cur.clipper->cur.geometry.y,
267 cur_clipper->cur.geometry.w, 267 obj->cur.clipper->cur.geometry.w,
268 cur_clipper->cur.geometry.h); 268 obj->cur.clipper->cur.geometry.h);
269 } 269 }
270 evas_object_change(obj->cur.clipper, cur_clipper); 270 evas_object_change(obj->cur.eo_clipper, obj->cur.clipper);
271 evas_object_change(eo_obj, obj); 271 evas_object_change(eo_obj, obj);
272 obj->cur.clipper = NULL; 272 obj->cur.clipper = NULL;
273 obj->cur.eo_clipper = NULL;
273 } 274 }
274 /* clip me */ 275 /* clip me */
275 if ((!clip->clip.clipees) && (clip->cur.visible)) 276 if ((!clip->clip.clipees) && (clip->cur.visible))
@@ -281,7 +282,8 @@ _clip_set(Eo *eo_obj, void *_pd, va_list *list)
281 clip->cur.geometry.x, clip->cur.geometry.y, 282 clip->cur.geometry.x, clip->cur.geometry.y,
282 clip->cur.geometry.w, clip->cur.geometry.h); 283 clip->cur.geometry.w, clip->cur.geometry.h);
283 } 284 }
284 obj->cur.clipper = eo_clip; 285 obj->cur.eo_clipper = eo_clip;
286 obj->cur.clipper = clip;
285 clip->clip.clipees = eina_list_append(clip->clip.clipees, eo_obj); 287 clip->clip.clipees = eina_list_append(clip->clip.clipees, eo_obj);
286 if (clip->clip.clipees) 288 if (clip->clip.clipees)
287 { 289 {
@@ -339,7 +341,7 @@ _clip_get(Eo *eo_obj EINA_UNUSED, void *_pd, va_list *list)
339{ 341{
340 Evas_Object **clip = va_arg(*list, Evas_Object **); 342 Evas_Object **clip = va_arg(*list, Evas_Object **);
341 const Evas_Object_Protected_Data *obj = _pd; 343 const Evas_Object_Protected_Data *obj = _pd;
342 *clip = obj->cur.clipper; 344 *clip = obj->cur.eo_clipper;
343} 345}
344 346
345EAPI void 347EAPI void
@@ -355,6 +357,7 @@ void
355_clip_unset(Eo *eo_obj, void *_pd, va_list *list EINA_UNUSED) 357_clip_unset(Eo *eo_obj, void *_pd, va_list *list EINA_UNUSED)
356{ 358{
357 Evas_Object_Protected_Data *obj = _pd; 359 Evas_Object_Protected_Data *obj = _pd;
360
358 if (!obj->cur.clipper) return; 361 if (!obj->cur.clipper) return;
359 /* unclip */ 362 /* unclip */
360 if (evas_object_intercept_call_clip_unset(eo_obj)) return; 363 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)
364 } 367 }
365 if (obj->cur.clipper) 368 if (obj->cur.clipper)
366 { 369 {
367 Evas_Object_Protected_Data *cur_clipper = eo_data_get(obj->cur.clipper, EVAS_OBJ_CLASS); 370 obj->cur.clipper->clip.clipees = eina_list_remove(obj->cur.clipper->clip.clipees, eo_obj);
368 cur_clipper->clip.clipees = eina_list_remove(cur_clipper->clip.clipees, eo_obj); 371 if (!obj->cur.clipper->clip.clipees)
369 if (!cur_clipper->clip.clipees)
370 { 372 {
371 cur_clipper->cur.have_clipees = 0; 373 obj->cur.clipper->cur.have_clipees = 0;
372 if (cur_clipper->cur.visible) 374 if (obj->cur.clipper->cur.visible)
373 evas_damage_rectangle_add(cur_clipper->layer->evas->evas, 375 evas_damage_rectangle_add(obj->cur.clipper->layer->evas->evas,
374 cur_clipper->cur.geometry.x, 376 obj->cur.clipper->cur.geometry.x,
375 cur_clipper->cur.geometry.y, 377 obj->cur.clipper->cur.geometry.y,
376 cur_clipper->cur.geometry.w, 378 obj->cur.clipper->cur.geometry.w,
377 cur_clipper->cur.geometry.h); 379 obj->cur.clipper->cur.geometry.h);
378 } 380 }
379 evas_object_change(obj->cur.clipper, cur_clipper); 381 evas_object_change(obj->cur.eo_clipper, obj->cur.clipper);
380 } 382 }
381 obj->cur.clipper = NULL; 383 obj->cur.clipper = NULL;
384 obj->cur.eo_clipper = NULL;
382 evas_object_change(eo_obj, obj); 385 evas_object_change(eo_obj, obj);
383 evas_object_clip_dirty(eo_obj, obj); 386 evas_object_clip_dirty(eo_obj, obj);
384 evas_object_recalc_clippees(eo_obj, obj); 387 evas_object_recalc_clippees(eo_obj, obj);
diff --git a/legacy/evas/src/lib/canvas/evas_events.c b/legacy/evas/src/lib/canvas/evas_events.c
index 09d642d96c..549e028e78 100644
--- a/legacy/evas/src/lib/canvas/evas_events.c
+++ b/legacy/evas/src/lib/canvas/evas_events.c
@@ -95,7 +95,7 @@ _evas_event_object_list_raw_in_get(Evas *eo_e, Eina_List *in,
95 else 95 else
96 { 96 {
97 if (!obj->child_has_map) 97 if (!obj->child_has_map)
98 evas_object_smart_bouding_box_update(eo_obj); 98 evas_object_smart_bounding_box_update(eo_obj, obj);
99 if (obj->child_has_map || 99 if (obj->child_has_map ||
100 (obj->cur.bounding_box.x <= x && 100 (obj->cur.bounding_box.x <= x &&
101 obj->cur.bounding_box.x + obj->cur.bounding_box.w >= x && 101 obj->cur.bounding_box.x + obj->cur.bounding_box.w >= x &&
diff --git a/legacy/evas/src/lib/canvas/evas_object_image.c b/legacy/evas/src/lib/canvas/evas_object_image.c
index 0063f1be62..a63675bf3b 100644
--- a/legacy/evas/src/lib/canvas/evas_object_image.c
+++ b/legacy/evas/src/lib/canvas/evas_object_image.c
@@ -2703,7 +2703,7 @@ _proxy_subrender(Evas *eo_e, Evas_Object *eo_source)
2703 e->engine.func->context_free(e->engine.data.output, ctx); 2703 e->engine.func->context_free(e->engine.data.output, ctx);
2704 2704
2705 ctx = e->engine.func->context_new(e->engine.data.output); 2705 ctx = e->engine.func->context_new(e->engine.data.output);
2706 evas_render_mapped(eo_e, eo_source, source, ctx, source->proxy.surface, 2706 evas_render_mapped(e, eo_source, source, ctx, source->proxy.surface,
2707 -source->cur.geometry.x, 2707 -source->cur.geometry.x,
2708 -source->cur.geometry.y, 2708 -source->cur.geometry.y,
2709 1, 0, 0, e->output.w, e->output.h 2709 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
3556 /* if someone is clipping this obj - go calculate the clipper */ 3556 /* if someone is clipping this obj - go calculate the clipper */
3557 if (obj->cur.clipper) 3557 if (obj->cur.clipper)
3558 { 3558 {
3559 Evas_Object_Protected_Data *clipper = eo_data_get(obj->cur.clipper, EVAS_OBJ_CLASS);
3560 if (obj->cur.cache.clip.dirty) 3559 if (obj->cur.cache.clip.dirty)
3561 evas_object_clip_recalc(obj->cur.clipper, clipper); 3560 evas_object_clip_recalc(obj->cur.eo_clipper, obj->cur.clipper);
3562 clipper->func->render_pre(obj->cur.clipper, clipper); 3561 obj->cur.clipper->func->render_pre(obj->cur.eo_clipper, obj->cur.clipper);
3563 } 3562 }
3564 /* Proxy: Do it early */ 3563 /* Proxy: Do it early */
3565 if (o->cur.source) 3564 if (o->cur.source)
@@ -3797,12 +3796,11 @@ evas_object_image_render_pre(Evas_Object *eo_obj, Evas_Object_Protected_Data *ob
3797 h = obj->cur.cache.clip.h; 3796 h = obj->cur.cache.clip.h;
3798 if (obj->cur.clipper) 3797 if (obj->cur.clipper)
3799 { 3798 {
3800 Evas_Object_Protected_Data *cur_clipper = eo_data_get(obj->cur.clipper, EVAS_OBJ_CLASS);
3801 RECTS_CLIP_TO_RECT(x, y, w, h, 3799 RECTS_CLIP_TO_RECT(x, y, w, h,
3802 cur_clipper->cur.cache.clip.x, 3800 obj->cur.clipper->cur.cache.clip.x,
3803 cur_clipper->cur.cache.clip.y, 3801 obj->cur.clipper->cur.cache.clip.y,
3804 cur_clipper->cur.cache.clip.w, 3802 obj->cur.clipper->cur.cache.clip.w,
3805 cur_clipper->cur.cache.clip.h); 3803 obj->cur.clipper->cur.cache.clip.h);
3806 } 3804 }
3807 e->engine.func->output_redraws_rect_del(e->engine.data.output, 3805 e->engine.func->output_redraws_rect_del(e->engine.data.output,
3808 x, y, w, h); 3806 x, y, w, h);
diff --git a/legacy/evas/src/lib/canvas/evas_object_line.c b/legacy/evas/src/lib/canvas/evas_object_line.c
index 8f7ed6eef7..538488a4a9 100644
--- a/legacy/evas/src/lib/canvas/evas_object_line.c
+++ b/legacy/evas/src/lib/canvas/evas_object_line.c
@@ -296,10 +296,9 @@ evas_object_line_render_pre(Evas_Object *eo_obj, Evas_Object_Protected_Data *obj
296 /* if someone is clipping this obj - go calculate the clipper */ 296 /* if someone is clipping this obj - go calculate the clipper */
297 if (obj->cur.clipper) 297 if (obj->cur.clipper)
298 { 298 {
299 Evas_Object_Protected_Data *cur_clipper = eo_data_get(obj->cur.clipper, EVAS_OBJ_CLASS);
300 if (obj->cur.cache.clip.dirty) 299 if (obj->cur.cache.clip.dirty)
301 evas_object_clip_recalc(obj->cur.clipper, cur_clipper); 300 evas_object_clip_recalc(obj->cur.eo_clipper, obj->cur.clipper);
302 cur_clipper->func->render_pre(obj->cur.clipper, cur_clipper); 301 obj->cur.clipper->func->render_pre(obj->cur.eo_clipper, obj->cur.clipper);
303 } 302 }
304 /* now figure what changed and add draw rects */ 303 /* now figure what changed and add draw rects */
305 /* if it just became visible or invisible */ 304 /* if it just became visible or invisible */
diff --git a/legacy/evas/src/lib/canvas/evas_object_main.c b/legacy/evas/src/lib/canvas/evas_object_main.c
index 6ee429a0bf..25ce68a3e5 100644
--- a/legacy/evas/src/lib/canvas/evas_object_main.c
+++ b/legacy/evas/src/lib/canvas/evas_object_main.c
@@ -204,26 +204,20 @@ evas_object_render_pre_clipper_change(Eina_Array *rects, Evas_Object *eo_obj)
204{ 204{
205 Evas_Object_Protected_Data *obj = eo_data_get(eo_obj, MY_CLASS); 205 Evas_Object_Protected_Data *obj = eo_data_get(eo_obj, MY_CLASS);
206 206
207 Evas_Object_Protected_Data *cur_clipper = NULL;
208 Evas_Object_Protected_Data *prev_clipper = NULL;
209 if (obj->is_smart) return; 207 if (obj->is_smart) return;
210 if (obj->cur.clipper == obj->prev.clipper) return; 208 if (obj->cur.clipper == obj->prev.clipper) return;
211 if (obj->cur.clipper)
212 cur_clipper = eo_data_get(obj->cur.clipper, MY_CLASS);
213 if (obj->prev.clipper)
214 prev_clipper = eo_data_get(obj->prev.clipper, MY_CLASS);
215 if ((obj->cur.clipper) && (obj->prev.clipper)) 209 if ((obj->cur.clipper) && (obj->prev.clipper))
216 { 210 {
217 /* get difference rects between clippers */ 211 /* get difference rects between clippers */
218 evas_rects_return_difference_rects(rects, 212 evas_rects_return_difference_rects(rects,
219 cur_clipper->cur.cache.clip.x, 213 obj->cur.clipper->cur.cache.clip.x,
220 cur_clipper->cur.cache.clip.y, 214 obj->cur.clipper->cur.cache.clip.y,
221 cur_clipper->cur.cache.clip.w, 215 obj->cur.clipper->cur.cache.clip.w,
222 cur_clipper->cur.cache.clip.h, 216 obj->cur.clipper->cur.cache.clip.h,
223 prev_clipper->prev.cache.clip.x, 217 obj->prev.clipper->prev.cache.clip.x,
224 prev_clipper->prev.cache.clip.y, 218 obj->prev.clipper->prev.cache.clip.y,
225 prev_clipper->prev.cache.clip.w, 219 obj->prev.clipper->prev.cache.clip.w,
226 prev_clipper->prev.cache.clip.h); 220 obj->prev.clipper->prev.cache.clip.h);
227 } 221 }
228 else if (obj->cur.clipper) 222 else if (obj->cur.clipper)
229 { 223 {
@@ -236,10 +230,10 @@ evas_object_render_pre_clipper_change(Eina_Array *rects, Evas_Object *eo_obj)
236//// obj->cur.cache.geometry.y, 230//// obj->cur.cache.geometry.y,
237//// obj->cur.cache.geometry.w, 231//// obj->cur.cache.geometry.w,
238//// obj->cur.cache.geometry.h, 232//// obj->cur.cache.geometry.h,
239 cur_clipper->cur.cache.clip.x, 233 obj->cur.clipper->cur.cache.clip.x,
240 cur_clipper->cur.cache.clip.y, 234 obj->cur.clipper->cur.cache.clip.y,
241 cur_clipper->cur.cache.clip.w, 235 obj->cur.clipper->cur.cache.clip.w,
242 cur_clipper->cur.cache.clip.h); 236 obj->cur.clipper->cur.cache.clip.h);
243 } 237 }
244 else if (obj->prev.clipper) 238 else if (obj->prev.clipper)
245 { 239 {
@@ -252,10 +246,10 @@ evas_object_render_pre_clipper_change(Eina_Array *rects, Evas_Object *eo_obj)
252//// obj->prev.cache.geometry.y, 246//// obj->prev.cache.geometry.y,
253//// obj->prev.cache.geometry.w, 247//// obj->prev.cache.geometry.w,
254//// obj->prev.cache.geometry.h, 248//// obj->prev.cache.geometry.h,
255 prev_clipper->prev.cache.clip.x, 249 obj->prev.clipper->prev.cache.clip.x,
256 prev_clipper->prev.cache.clip.y, 250 obj->prev.clipper->prev.cache.clip.y,
257 prev_clipper->prev.cache.clip.w, 251 obj->prev.clipper->prev.cache.clip.w,
258 prev_clipper->prev.cache.clip.h); 252 obj->prev.clipper->prev.cache.clip.h);
259 } 253 }
260} 254}
261 255
@@ -312,15 +306,14 @@ void
312evas_object_render_pre_effect_updates(Eina_Array *rects, Evas_Object *eo_obj, int is_v, int was_v EINA_UNUSED) 306evas_object_render_pre_effect_updates(Eina_Array *rects, Evas_Object *eo_obj, int is_v, int was_v EINA_UNUSED)
313{ 307{
314 Evas_Object_Protected_Data *obj = eo_data_get(eo_obj, MY_CLASS); 308 Evas_Object_Protected_Data *obj = eo_data_get(eo_obj, MY_CLASS);
315 if (!obj) return;
316
317 Eina_Rectangle *r; 309 Eina_Rectangle *r;
318 Evas_Object *eo_clipper;
319 Eina_List *l; 310 Eina_List *l;
320 unsigned int i; 311 unsigned int i;
321 Eina_Array_Iterator it; 312 Eina_Array_Iterator it;
322 int x, y, w, h; 313 int x, y, w, h;
323 314
315 if (!obj) return;
316
324 if (obj->is_smart) goto end; 317 if (obj->is_smart) goto end;
325 /* FIXME: was_v isn't used... why? */ 318 /* FIXME: was_v isn't used... why? */
326 if (!obj->clip.clipees) 319 if (!obj->clip.clipees)
@@ -357,10 +350,11 @@ evas_object_render_pre_effect_updates(Eina_Array *rects, Evas_Object *eo_obj, in
357 /* if the object is actually visible, take any parent clip changes */ 350 /* if the object is actually visible, take any parent clip changes */
358 if (is_v) 351 if (is_v)
359 { 352 {
360 eo_clipper = obj->cur.clipper; 353 Evas_Object_Protected_Data *clipper;
361 while (eo_clipper) 354
355 clipper = obj->cur.clipper;
356 while (clipper)
362 { 357 {
363 Evas_Object_Protected_Data *clipper = eo_data_get(eo_clipper, MY_CLASS);
364 EINA_LIST_FOREACH(clipper->clip.changes, l, r) 358 EINA_LIST_FOREACH(clipper->clip.changes, l, r)
365 { 359 {
366 /* get updates and clip to current clip */ 360 /* 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
384 obj->layer->evas->engine.func->output_redraws_rect_add(obj->layer->evas->engine.data.output, 378 obj->layer->evas->engine.func->output_redraws_rect_add(obj->layer->evas->engine.data.output,
385 x, y, w, h); 379 x, y, w, h);
386 } 380 }
387 eo_clipper = clipper->cur.clipper; 381 clipper = clipper->cur.clipper;
388 } 382 }
389 } 383 }
390 } 384 }
diff --git a/legacy/evas/src/lib/canvas/evas_object_polygon.c b/legacy/evas/src/lib/canvas/evas_object_polygon.c
index b3df079f89..3f94317ed0 100644
--- a/legacy/evas/src/lib/canvas/evas_object_polygon.c
+++ b/legacy/evas/src/lib/canvas/evas_object_polygon.c
@@ -353,10 +353,9 @@ evas_object_polygon_render_pre(Evas_Object *eo_obj, Evas_Object_Protected_Data *
353 /* if someone is clipping this obj - go calculate the clipper */ 353 /* if someone is clipping this obj - go calculate the clipper */
354 if (obj->cur.clipper) 354 if (obj->cur.clipper)
355 { 355 {
356 Evas_Object_Protected_Data *cur_clipper = eo_data_get(obj->cur.clipper, EVAS_OBJ_CLASS);
357 if (obj->cur.cache.clip.dirty) 356 if (obj->cur.cache.clip.dirty)
358 evas_object_clip_recalc(obj->cur.clipper, cur_clipper); 357 evas_object_clip_recalc(obj->cur.eo_clipper, obj->cur.clipper);
359 cur_clipper->func->render_pre(obj->cur.clipper, cur_clipper); 358 obj->cur.clipper->func->render_pre(obj->cur.eo_clipper, obj->cur.clipper);
360 } 359 }
361 /* now figure what changed and add draw rects */ 360 /* now figure what changed and add draw rects */
362 /* if it just became visible or invisible */ 361 /* if it just became visible or invisible */
diff --git a/legacy/evas/src/lib/canvas/evas_object_rectangle.c b/legacy/evas/src/lib/canvas/evas_object_rectangle.c
index 07a720f613..b04b4fdfd6 100644
--- a/legacy/evas/src/lib/canvas/evas_object_rectangle.c
+++ b/legacy/evas/src/lib/canvas/evas_object_rectangle.c
@@ -164,10 +164,9 @@ evas_object_rectangle_render_pre(Evas_Object *eo_obj, Evas_Object_Protected_Data
164 /* if someone is clipping this obj - go calculate the clipper */ 164 /* if someone is clipping this obj - go calculate the clipper */
165 if (obj->cur.clipper) 165 if (obj->cur.clipper)
166 { 166 {
167 Evas_Object_Protected_Data *cur_clipper_obj = eo_data_get(obj->cur.clipper, EVAS_OBJ_CLASS);
168 if (obj->cur.cache.clip.dirty) 167 if (obj->cur.cache.clip.dirty)
169 evas_object_clip_recalc(obj->cur.clipper, cur_clipper_obj); 168 evas_object_clip_recalc(obj->cur.eo_clipper, obj->cur.clipper);
170 cur_clipper_obj->func->render_pre(obj->cur.clipper, cur_clipper_obj); 169 obj->cur.clipper->func->render_pre(obj->cur.eo_clipper, obj->cur.clipper);
171 } 170 }
172 /* now figure what changed and add draw rects */ 171 /* now figure what changed and add draw rects */
173 /* if it just became visible or invisible */ 172 /* if it just became visible or invisible */
diff --git a/legacy/evas/src/lib/canvas/evas_object_smart.c b/legacy/evas/src/lib/canvas/evas_object_smart.c
index 338847ce04..a1c73f821a 100644
--- a/legacy/evas/src/lib/canvas/evas_object_smart.c
+++ b/legacy/evas/src/lib/canvas/evas_object_smart.c
@@ -1216,8 +1216,9 @@ evas_object_smart_need_bounding_box_update(Evas_Object *eo_obj)
1216} 1216}
1217 1217
1218void 1218void
1219evas_object_smart_bouding_box_update(Evas_Object *eo_obj) 1219evas_object_smart_bounding_box_update(Evas_Object *eo_obj, Evas_Object_Protected_Data *obj)
1220{ 1220{
1221 Evas_Object_Smart *os;
1221 Eina_Inlist *list; 1222 Eina_Inlist *list;
1222 Evas_Object_Protected_Data *o; 1223 Evas_Object_Protected_Data *o;
1223 Evas_Coord minx; 1224 Evas_Coord minx;
@@ -1228,8 +1229,8 @@ evas_object_smart_bouding_box_update(Evas_Object *eo_obj)
1228 MAGIC_CHECK(eo_obj, Evas_Object, MAGIC_OBJ); 1229 MAGIC_CHECK(eo_obj, Evas_Object, MAGIC_OBJ);
1229 return; 1230 return;
1230 MAGIC_CHECK_END(); 1231 MAGIC_CHECK_END();
1231 Evas_Object_Protected_Data *obj = eo_data_get(eo_obj, EVAS_OBJ_CLASS); 1232
1232 Evas_Object_Smart *os = eo_data_get(eo_obj, MY_CLASS); 1233 os = eo_data_get(eo_obj, MY_CLASS);
1233 1234
1234 if (!os->update_boundingbox_needed) return ; 1235 if (!os->update_boundingbox_needed) return ;
1235 os->update_boundingbox_needed = EINA_FALSE; 1236 os->update_boundingbox_needed = EINA_FALSE;
@@ -1250,7 +1251,7 @@ evas_object_smart_bouding_box_update(Evas_Object *eo_obj)
1250 1251
1251 if (eo_isa(o->object, EVAS_OBJ_SMART_CLASS)) 1252 if (eo_isa(o->object, EVAS_OBJ_SMART_CLASS))
1252 { 1253 {
1253 evas_object_smart_bouding_box_update(o->object); 1254 evas_object_smart_bounding_box_update(o->object, o);
1254 1255
1255 tx = o->cur.bounding_box.x; 1256 tx = o->cur.bounding_box.x;
1256 ty = o->cur.bounding_box.y; 1257 ty = o->cur.bounding_box.y;
diff --git a/legacy/evas/src/lib/canvas/evas_object_text.c b/legacy/evas/src/lib/canvas/evas_object_text.c
index 8e436b9036..66637190f8 100644
--- a/legacy/evas/src/lib/canvas/evas_object_text.c
+++ b/legacy/evas/src/lib/canvas/evas_object_text.c
@@ -1617,12 +1617,11 @@ evas_object_text_render(Evas_Object *eo_obj, Evas_Object_Protected_Data *obj, vo
1617#define COLOR_SET(object, sub, col) \ 1617#define COLOR_SET(object, sub, col) \
1618 if (obj->cur.clipper)\ 1618 if (obj->cur.clipper)\
1619 { \ 1619 { \
1620 Evas_Object_Protected_Data *cur_clipper = eo_data_get(obj->cur.clipper, EVAS_OBJ_CLASS); \
1621 ENFN->context_color_set(output, context, \ 1620 ENFN->context_color_set(output, context, \
1622 ((int)object->sub.col.r * ((int)cur_clipper->cur.cache.clip.r + 1)) >> 8, \ 1621 ((int)object->sub.col.r * ((int)obj->cur.clipper->cur.cache.clip.r + 1)) >> 8, \
1623 ((int)object->sub.col.g * ((int)cur_clipper->cur.cache.clip.g + 1)) >> 8, \ 1622 ((int)object->sub.col.g * ((int)obj->cur.clipper->cur.cache.clip.g + 1)) >> 8, \
1624 ((int)object->sub.col.b * ((int)cur_clipper->cur.cache.clip.b + 1)) >> 8, \ 1623 ((int)object->sub.col.b * ((int)obj->cur.clipper->cur.cache.clip.b + 1)) >> 8, \
1625 ((int)object->sub.col.a * ((int)cur_clipper->cur.cache.clip.a + 1)) >> 8); \ 1624 ((int)object->sub.col.a * ((int)obj->cur.clipper->cur.cache.clip.a + 1)) >> 8); \
1626 } \ 1625 } \
1627 else\ 1626 else\
1628 ENFN->context_color_set(output, context, \ 1627 ENFN->context_color_set(output, context, \
@@ -1634,12 +1633,11 @@ evas_object_text_render(Evas_Object *eo_obj, Evas_Object_Protected_Data *obj, vo
1634#define COLOR_SET_AMUL(object, sub, col, amul) \ 1633#define COLOR_SET_AMUL(object, sub, col, amul) \
1635 if (obj->cur.clipper) \ 1634 if (obj->cur.clipper) \
1636 { \ 1635 { \
1637 Evas_Object_Protected_Data *cur_clipper = eo_data_get(obj->cur.clipper, EVAS_OBJ_CLASS); \
1638 ENFN->context_color_set(output, context, \ 1636 ENFN->context_color_set(output, context, \
1639 (((int)object->sub.col.r) * ((int)cur_clipper->cur.cache.clip.r) * (amul)) / 65025, \ 1637 (((int)object->sub.col.r) * ((int)obj->cur.clipper->cur.cache.clip.r) * (amul)) / 65025, \
1640 (((int)object->sub.col.g) * ((int)cur_clipper->cur.cache.clip.g) * (amul)) / 65025, \ 1638 (((int)object->sub.col.g) * ((int)obj->cur.clipper->cur.cache.clip.g) * (amul)) / 65025, \
1641 (((int)object->sub.col.b) * ((int)cur_clipper->cur.cache.clip.b) * (amul)) / 65025, \ 1639 (((int)object->sub.col.b) * ((int)obj->cur.clipper->cur.cache.clip.b) * (amul)) / 65025, \
1642 (((int)object->sub.col.a) * ((int)cur_clipper->cur.cache.clip.a) * (amul)) / 65025); \ 1640 (((int)object->sub.col.a) * ((int)obj->cur.clipper->cur.cache.clip.a) * (amul)) / 65025); \
1643 } \ 1641 } \
1644 else \ 1642 else \
1645 ENFN->context_color_set(output, context, \ 1643 ENFN->context_color_set(output, context, \
@@ -1834,10 +1832,9 @@ evas_object_text_render_pre(Evas_Object *eo_obj, Evas_Object_Protected_Data *obj
1834 /* if someone is clipping this obj - go calculate the clipper */ 1832 /* if someone is clipping this obj - go calculate the clipper */
1835 if (obj->cur.clipper) 1833 if (obj->cur.clipper)
1836 { 1834 {
1837 Evas_Object_Protected_Data *clipper = eo_data_get(obj->cur.clipper, EVAS_OBJ_CLASS);
1838 if (obj->cur.cache.clip.dirty) 1835 if (obj->cur.cache.clip.dirty)
1839 evas_object_clip_recalc(obj->cur.clipper, clipper); 1836 evas_object_clip_recalc(obj->cur.eo_clipper, obj->cur.clipper);
1840 clipper->func->render_pre(obj->cur.clipper, clipper); 1837 obj->cur.clipper->func->render_pre(obj->cur.eo_clipper, obj->cur.clipper);
1841 } 1838 }
1842 /* now figure what changed and add draw rects 1839 /* now figure what changed and add draw rects
1843 if it just became visible or invisible */ 1840 if it just became visible or invisible */
diff --git a/legacy/evas/src/lib/canvas/evas_object_textblock.c b/legacy/evas/src/lib/canvas/evas_object_textblock.c
index 0496a6f50d..f8a59bda57 100644
--- a/legacy/evas/src/lib/canvas/evas_object_textblock.c
+++ b/legacy/evas/src/lib/canvas/evas_object_textblock.c
@@ -10070,10 +10070,9 @@ evas_object_textblock_render_pre(Evas_Object *eo_obj, Evas_Object_Protected_Data
10070 /* if someone is clipping this obj - go calculate the clipper */ 10070 /* if someone is clipping this obj - go calculate the clipper */
10071 if (obj->cur.clipper) 10071 if (obj->cur.clipper)
10072 { 10072 {
10073 Evas_Object_Protected_Data *cur_clipper_obj = eo_data_get(obj->cur.clipper, EVAS_OBJ_CLASS);
10074 if (obj->cur.cache.clip.dirty) 10073 if (obj->cur.cache.clip.dirty)
10075 evas_object_clip_recalc(obj->cur.clipper, cur_clipper_obj); 10074 evas_object_clip_recalc(obj->cur.eo_clipper, obj->cur.clipper);
10076 cur_clipper_obj->func->render_pre(obj->cur.clipper, cur_clipper_obj); 10075 obj->cur.clipper->func->render_pre(obj->cur.eo_clipper, obj->cur.clipper);
10077 } 10076 }
10078 /* now figure what changed and add draw rects */ 10077 /* now figure what changed and add draw rects */
10079 /* if it just became visible or invisible */ 10078 /* if it just became visible or invisible */
diff --git a/legacy/evas/src/lib/canvas/evas_object_textgrid.c b/legacy/evas/src/lib/canvas/evas_object_textgrid.c
index 78fa7322a0..40b22a78c7 100644
--- a/legacy/evas/src/lib/canvas/evas_object_textgrid.c
+++ b/legacy/evas/src/lib/canvas/evas_object_textgrid.c
@@ -709,10 +709,9 @@ evas_object_textgrid_render_pre(Evas_Object *eo_obj, Evas_Object_Protected_Data
709 /* if someone is clipping this obj - go calculate the clipper */ 709 /* if someone is clipping this obj - go calculate the clipper */
710 if (obj->cur.clipper) 710 if (obj->cur.clipper)
711 { 711 {
712 Evas_Object_Protected_Data *cur_clipper = eo_data_get(obj->cur.clipper, EVAS_OBJ_CLASS);
713 if (obj->cur.cache.clip.dirty) 712 if (obj->cur.cache.clip.dirty)
714 evas_object_clip_recalc(obj->cur.clipper, cur_clipper); 713 evas_object_clip_recalc(obj->cur.eo_clipper, obj->cur.clipper);
715 cur_clipper->func->render_pre(obj->cur.clipper, cur_clipper); 714 obj->cur.clipper->func->render_pre(obj->cur.eo_clipper, obj->cur.clipper);
716 } 715 }
717 /* now figure what changed and add draw rects */ 716 /* now figure what changed and add draw rects */
718 /* if it just became visible or invisible */ 717 /* if it just became visible or invisible */
diff --git a/legacy/evas/src/lib/canvas/evas_render.c b/legacy/evas/src/lib/canvas/evas_render.c
index 6409699666..1f6bff970d 100644
--- a/legacy/evas/src/lib/canvas/evas_render.c
+++ b/legacy/evas/src/lib/canvas/evas_render.c
@@ -125,9 +125,8 @@ _canvas_obscured_clear(Eo *eo_e EINA_UNUSED, void *_pd, va_list *list EINA_UNUSE
125} 125}
126 126
127static Eina_Bool 127static Eina_Bool
128_evas_render_had_map(Evas_Object *eo_obj) 128_evas_render_had_map(Evas_Object_Protected_Data *obj)
129{ 129{
130 Evas_Object_Protected_Data *obj = eo_data_get(eo_obj, EVAS_OBJ_CLASS);
131 return ((obj->prev.map) && (obj->prev.usemap)); 130 return ((obj->prev.map) && (obj->prev.usemap));
132 // return ((!obj->cur.map) && (obj->prev.usemap)); 131 // return ((!obj->cur.map) && (obj->prev.usemap));
133} 132}
@@ -141,17 +140,14 @@ _evas_render_is_relevant(Evas_Object *eo_obj)
141} 140}
142 141
143static Eina_Bool 142static Eina_Bool
144_evas_render_can_render(Evas_Object *eo_obj) 143_evas_render_can_render(Evas_Object *eo_obj, Evas_Object_Protected_Data *obj)
145{ 144{
146 Evas_Object_Protected_Data *obj = eo_data_get(eo_obj, EVAS_OBJ_CLASS);
147 return (evas_object_is_visible(eo_obj, obj) && (!obj->cur.have_clipees)); 145 return (evas_object_is_visible(eo_obj, obj) && (!obj->cur.have_clipees));
148} 146}
149 147
150static void 148static void
151_evas_render_prev_cur_clip_cache_add(Evas *eo_e, Evas_Object *eo_obj) 149_evas_render_prev_cur_clip_cache_add(Evas_Public_Data *e, Evas_Object_Protected_Data *obj)
152{ 150{
153 Evas_Public_Data *e = eo_data_get(eo_e, EVAS_CLASS);
154 Evas_Object_Protected_Data *obj = eo_data_get(eo_obj, EVAS_OBJ_CLASS);
155 e->engine.func->output_redraws_rect_add(e->engine.data.output, 151 e->engine.func->output_redraws_rect_add(e->engine.data.output,
156 obj->prev.cache.clip.x, 152 obj->prev.cache.clip.x,
157 obj->prev.cache.clip.y, 153 obj->prev.cache.clip.y,
@@ -165,10 +161,8 @@ _evas_render_prev_cur_clip_cache_add(Evas *eo_e, Evas_Object *eo_obj)
165} 161}
166 162
167static void 163static void
168_evas_render_cur_clip_cache_del(Evas *eo_e, Evas_Object *eo_obj) 164_evas_render_cur_clip_cache_del(Evas_Public_Data *e, Evas_Object_Protected_Data *obj)
169{ 165{
170 Evas_Object_Protected_Data *obj = eo_data_get(eo_obj, EVAS_OBJ_CLASS);
171 Evas_Public_Data *e = eo_data_get(eo_e, EVAS_CLASS);
172 Evas_Coord x, y, w, h; 166 Evas_Coord x, y, w, h;
173 167
174 x = obj->cur.cache.clip.x; 168 x = obj->cur.cache.clip.x;
@@ -177,19 +171,18 @@ _evas_render_cur_clip_cache_del(Evas *eo_e, Evas_Object *eo_obj)
177 h = obj->cur.cache.clip.h; 171 h = obj->cur.cache.clip.h;
178 if (obj->cur.clipper) 172 if (obj->cur.clipper)
179 { 173 {
180 Evas_Object_Protected_Data *cur_clipper = eo_data_get(obj->cur.clipper, EVAS_OBJ_CLASS);
181 RECTS_CLIP_TO_RECT(x, y, w, h, 174 RECTS_CLIP_TO_RECT(x, y, w, h,
182 cur_clipper->cur.cache.clip.x, 175 obj->cur.clipper->cur.cache.clip.x,
183 cur_clipper->cur.cache.clip.y, 176 obj->cur.clipper->cur.cache.clip.y,
184 cur_clipper->cur.cache.clip.w, 177 obj->cur.clipper->cur.cache.clip.w,
185 cur_clipper->cur.cache.clip.h); 178 obj->cur.clipper->cur.cache.clip.h);
186 } 179 }
187 e->engine.func->output_redraws_rect_del(e->engine.data.output, 180 e->engine.func->output_redraws_rect_del(e->engine.data.output,
188 x, y, w, h); 181 x, y, w, h);
189} 182}
190 183
191static void 184static void
192_evas_render_phase1_direct(Evas *eo_e, 185_evas_render_phase1_direct(Evas_Public_Data *e,
193 Eina_Array *active_objects, 186 Eina_Array *active_objects,
194 Eina_Array *restack_objects EINA_UNUSED, 187 Eina_Array *restack_objects EINA_UNUSED,
195 Eina_Array *delete_objects EINA_UNUSED, 188 Eina_Array *delete_objects EINA_UNUSED,
@@ -230,7 +223,7 @@ _evas_render_phase1_direct(Evas *eo_e,
230 evas_object_clip_recalc(eo_obj, obj); 223 evas_object_clip_recalc(eo_obj, obj);
231 obj->func->render_pre(eo_obj, obj); 224 obj->func->render_pre(eo_obj, obj);
232 if (obj->proxy.redraw) 225 if (obj->proxy.redraw)
233 _evas_render_prev_cur_clip_cache_add(eo_e, eo_obj); 226 _evas_render_prev_cur_clip_cache_add(e, obj);
234 if (obj->proxy.proxies) 227 if (obj->proxy.proxies)
235 { 228 {
236 obj->proxy.redraw = EINA_TRUE; 229 obj->proxy.redraw = EINA_TRUE;
@@ -238,7 +231,7 @@ _evas_render_phase1_direct(Evas *eo_e,
238 { 231 {
239 Evas_Object_Protected_Data *proxy = eo_data_get(eo_proxy, EVAS_OBJ_CLASS); 232 Evas_Object_Protected_Data *proxy = eo_data_get(eo_proxy, EVAS_OBJ_CLASS);
240 proxy->func->render_pre(eo_proxy, proxy); 233 proxy->func->render_pre(eo_proxy, proxy);
241 _evas_render_prev_cur_clip_cache_add(eo_e, eo_proxy); 234 _evas_render_prev_cur_clip_cache_add(e, proxy);
242 } 235 }
243 } 236 }
244 237
@@ -247,13 +240,13 @@ _evas_render_phase1_direct(Evas *eo_e,
247 evas_object_smart_members_get_direct(eo_obj), 240 evas_object_smart_members_get_direct(eo_obj),
248 obj->cur.map, obj->cur.usemap, 241 obj->cur.map, obj->cur.usemap,
249 obj->prev.map, obj->prev.usemap, 242 obj->prev.map, obj->prev.usemap,
250 _evas_render_has_map(eo_obj), 243 _evas_render_has_map(eo_obj, obj),
251 _evas_render_had_map(eo_obj)); 244 _evas_render_had_map(obj));
252 if ((obj->is_smart) && 245 if ((obj->is_smart) &&
253 (_evas_render_has_map(eo_obj))) 246 (_evas_render_has_map(eo_obj, obj)))
254 { 247 {
255 RD(" has map + smart\n"); 248 RD(" has map + smart\n");
256 _evas_render_prev_cur_clip_cache_add(eo_e, eo_obj); 249 _evas_render_prev_cur_clip_cache_add(e, obj);
257 } 250 }
258 } 251 }
259 else 252 else
@@ -266,7 +259,7 @@ _evas_render_phase1_direct(Evas *eo_e,
266 (evas_object_is_opaque(eo_obj, obj) && evas_object_is_visible(eo_obj, obj))) 259 (evas_object_is_opaque(eo_obj, obj) && evas_object_is_visible(eo_obj, obj)))
267 { 260 {
268 RD(" rect del\n"); 261 RD(" rect del\n");
269 _evas_render_cur_clip_cache_del(eo_e, eo_obj); 262 _evas_render_cur_clip_cache_del(e, obj);
270 } 263 }
271 } 264 }
272 } 265 }
@@ -274,7 +267,7 @@ _evas_render_phase1_direct(Evas *eo_e,
274} 267}
275 268
276static Eina_Bool 269static Eina_Bool
277_evas_render_phase1_object_process(Evas *eo_e, Evas_Object *eo_obj, 270_evas_render_phase1_object_process(Evas_Public_Data *e, Evas_Object *eo_obj,
278 Eina_Array *active_objects, 271 Eina_Array *active_objects,
279 Eina_Array *restack_objects, 272 Eina_Array *restack_objects,
280 Eina_Array *delete_objects, 273 Eina_Array *delete_objects,
@@ -287,7 +280,6 @@ _evas_render_phase1_object_process(Evas *eo_e, Evas_Object *eo_obj,
287#endif 280#endif
288 ) 281 )
289{ 282{
290 Evas_Public_Data *e = eo_data_get(eo_e, EVAS_CLASS);
291 Eina_Bool clean_them = EINA_FALSE; 283 Eina_Bool clean_them = EINA_FALSE;
292 int is_active; 284 int is_active;
293 Eina_Bool map, hmap; 285 Eina_Bool map, hmap;
@@ -325,8 +317,8 @@ _evas_render_phase1_object_process(Evas *eo_e, Evas_Object *eo_obj,
325 } 317 }
326#endif 318#endif
327 319
328 map = _evas_render_has_map(eo_obj); 320 map = _evas_render_has_map(eo_obj, obj);
329 hmap = _evas_render_had_map(eo_obj); 321 hmap = _evas_render_had_map(obj);
330 322
331 if ((restack) && (!map)) 323 if ((restack) && (!map))
332 { 324 {
@@ -352,7 +344,7 @@ _evas_render_phase1_object_process(Evas *eo_e, Evas_Object *eo_obj,
352 (evas_object_was_visible(eo_obj, obj) && (!obj->prev.have_clipees)))) 344 (evas_object_was_visible(eo_obj, obj) && (!obj->prev.have_clipees))))
353 { 345 {
354 eina_array_push(render_objects, obj); 346 eina_array_push(render_objects, obj);
355 _evas_render_prev_cur_clip_cache_add(eo_e, eo_obj); 347 _evas_render_prev_cur_clip_cache_add(e, obj);
356 obj->render_pre = EINA_TRUE; 348 obj->render_pre = EINA_TRUE;
357 349
358 if (obj->is_smart) 350 if (obj->is_smart)
@@ -360,7 +352,7 @@ _evas_render_phase1_object_process(Evas *eo_e, Evas_Object *eo_obj,
360 Evas_Object_Protected_Data *obj2; 352 Evas_Object_Protected_Data *obj2;
361 EINA_INLIST_FOREACH(evas_object_smart_members_get_direct(eo_obj), obj2) 353 EINA_INLIST_FOREACH(evas_object_smart_members_get_direct(eo_obj), obj2)
362 { 354 {
363 _evas_render_phase1_object_process(eo_e, obj2->object, 355 _evas_render_phase1_object_process(e, obj2->object,
364 active_objects, 356 active_objects,
365 restack_objects, 357 restack_objects,
366 delete_objects, 358 delete_objects,
@@ -383,7 +375,7 @@ _evas_render_phase1_object_process(Evas *eo_e, Evas_Object *eo_obj,
383 RDI(level); 375 RDI(level);
384 RD(" had map - restack objs\n"); 376 RD(" had map - restack objs\n");
385 // eina_array_push(restack_objects, obj); 377 // eina_array_push(restack_objects, obj);
386 _evas_render_prev_cur_clip_cache_add(eo_e, eo_obj); 378 _evas_render_prev_cur_clip_cache_add(e, obj);
387 if (obj->changed) 379 if (obj->changed)
388 { 380 {
389 if (!map) 381 if (!map)
@@ -410,7 +402,7 @@ _evas_render_phase1_object_process(Evas *eo_e, Evas_Object *eo_obj,
410 EINA_INLIST_FOREACH(evas_object_smart_members_get_direct(eo_obj), 402 EINA_INLIST_FOREACH(evas_object_smart_members_get_direct(eo_obj),
411 obj2) 403 obj2)
412 { 404 {
413 _evas_render_phase1_object_process(eo_e, obj2->object, 405 _evas_render_phase1_object_process(e, obj2->object,
414 active_objects, 406 active_objects,
415 restack_objects, 407 restack_objects,
416 delete_objects, 408 delete_objects,
@@ -454,7 +446,7 @@ _evas_render_phase1_object_process(Evas *eo_e, Evas_Object *eo_obj,
454 obj->cur.cache.clip.a, evas_object_was_visible(eo_obj, obj)); 446 obj->cur.cache.clip.a, evas_object_was_visible(eo_obj, obj));
455 447
456 if ((!obj->clip.clipees) && (obj->delete_me == 0) && 448 if ((!obj->clip.clipees) && (obj->delete_me == 0) &&
457 (_evas_render_can_render(eo_obj) || 449 (_evas_render_can_render(eo_obj, obj) ||
458 (evas_object_was_visible(eo_obj, obj) && (!obj->prev.have_clipees)))) 450 (evas_object_was_visible(eo_obj, obj) && (!obj->prev.have_clipees))))
459 { 451 {
460 if (obj->is_smart) 452 if (obj->is_smart)
@@ -467,7 +459,7 @@ _evas_render_phase1_object_process(Evas *eo_e, Evas_Object *eo_obj,
467 EINA_INLIST_FOREACH 459 EINA_INLIST_FOREACH
468 (evas_object_smart_members_get_direct(eo_obj), obj2) 460 (evas_object_smart_members_get_direct(eo_obj), obj2)
469 { 461 {
470 _evas_render_phase1_object_process(eo_e, obj2->object, 462 _evas_render_phase1_object_process(e, obj2->object,
471 active_objects, 463 active_objects,
472 restack_objects, 464 restack_objects,
473 delete_objects, 465 delete_objects,
@@ -514,7 +506,7 @@ _evas_render_phase1_object_process(Evas *eo_e, Evas_Object *eo_obj,
514 EINA_INLIST_FOREACH (evas_object_smart_members_get_direct(eo_obj), 506 EINA_INLIST_FOREACH (evas_object_smart_members_get_direct(eo_obj),
515 obj2) 507 obj2)
516 { 508 {
517 _evas_render_phase1_object_process(eo_e, obj2, 509 _evas_render_phase1_object_process(e, obj2,
518 active_objects, 510 active_objects,
519 restack_objects, 511 restack_objects,
520 delete_objects, 512 delete_objects,
@@ -536,14 +528,13 @@ _evas_render_phase1_object_process(Evas *eo_e, Evas_Object *eo_obj,
536} 528}
537 529
538static Eina_Bool 530static Eina_Bool
539_evas_render_phase1_process(Evas *eo_e, 531_evas_render_phase1_process(Evas_Public_Data *e,
540 Eina_Array *active_objects, 532 Eina_Array *active_objects,
541 Eina_Array *restack_objects, 533 Eina_Array *restack_objects,
542 Eina_Array *delete_objects, 534 Eina_Array *delete_objects,
543 Eina_Array *render_objects, 535 Eina_Array *render_objects,
544 int *redraw_all) 536 int *redraw_all)
545{ 537{
546 Evas_Public_Data *e = eo_data_get(eo_e, EVAS_CLASS);
547 Evas_Layer *lay; 538 Evas_Layer *lay;
548 Eina_Bool clean_them = EINA_FALSE; 539 Eina_Bool clean_them = EINA_FALSE;
549 540
@@ -555,7 +546,7 @@ _evas_render_phase1_process(Evas *eo_e,
555 EINA_INLIST_FOREACH(lay->objects, obj) 546 EINA_INLIST_FOREACH(lay->objects, obj)
556 { 547 {
557 clean_them |= _evas_render_phase1_object_process 548 clean_them |= _evas_render_phase1_object_process
558 (eo_e, obj->object, active_objects, restack_objects, delete_objects, 549 (e, obj->object, active_objects, restack_objects, delete_objects,
559 render_objects, 0, redraw_all, EINA_FALSE 550 render_objects, 0, redraw_all, EINA_FALSE
560#ifdef REND_DBG 551#ifdef REND_DBG
561 , 1 552 , 1
@@ -584,7 +575,7 @@ _evas_render_check_pending_objects(Eina_Array *pending_objects, Evas *eo_e EINA_
584 if (!obj->layer) goto clean_stuff; 575 if (!obj->layer) goto clean_stuff;
585 576
586 //If the children are in active objects, They should be cleaned up. 577 //If the children are in active objects, They should be cleaned up.
587 if (obj->changed_map && _evas_render_has_map(eo_obj)) 578 if (obj->changed_map && _evas_render_has_map(eo_obj, obj))
588 goto clean_stuff; 579 goto clean_stuff;
589 580
590 evas_object_clip_recalc(eo_obj, obj); 581 evas_object_clip_recalc(eo_obj, obj);
@@ -607,7 +598,7 @@ _evas_render_check_pending_objects(Eina_Array *pending_objects, Evas *eo_e EINA_
607 } 598 }
608 else 599 else
609 if ((is_active) && (obj->restack) && (!obj->clip.clipees) && 600 if ((is_active) && (obj->restack) && (!obj->clip.clipees) &&
610 (_evas_render_can_render(eo_obj) || 601 (_evas_render_can_render(eo_obj, obj) ||
611 (evas_object_was_visible(eo_obj, obj) && (!obj->prev.have_clipees)))) 602 (evas_object_was_visible(eo_obj, obj) && (!obj->prev.have_clipees))))
612 { 603 {
613 if (!(obj->render_pre || obj->rect_del)) 604 if (!(obj->render_pre || obj->rect_del))
@@ -615,7 +606,7 @@ _evas_render_check_pending_objects(Eina_Array *pending_objects, Evas *eo_e EINA_
615 } 606 }
616 else 607 else
617 if (is_active && (!obj->clip.clipees) && 608 if (is_active && (!obj->clip.clipees) &&
618 (_evas_render_can_render(eo_obj) || 609 (_evas_render_can_render(eo_obj, obj) ||
619 (evas_object_was_visible(eo_obj, obj) && (!obj->prev.have_clipees)))) 610 (evas_object_was_visible(eo_obj, obj) && (!obj->prev.have_clipees))))
620 { 611 {
621 if (obj->render_pre || obj->rect_del) ok = EINA_TRUE; 612 if (obj->render_pre || obj->rect_del) ok = EINA_TRUE;
@@ -664,9 +655,8 @@ pending_change(void *data, void *gdata EINA_UNUSED)
664} 655}
665 656
666static Eina_Bool 657static Eina_Bool
667_evas_render_can_use_overlay(Evas *eo_e, Evas_Object *eo_obj) 658_evas_render_can_use_overlay(Evas_Public_Data *e, Evas_Object *eo_obj)
668{ 659{
669 Evas_Public_Data *e = eo_data_get(eo_e, EVAS_CLASS);
670 Eina_Rectangle *r; 660 Eina_Rectangle *r;
671 Evas_Object *eo_tmp; 661 Evas_Object *eo_tmp;
672 Eina_List *alphas = NULL; 662 Eina_List *alphas = NULL;
@@ -676,20 +666,21 @@ _evas_render_can_use_overlay(Evas *eo_e, Evas_Object *eo_obj)
676 Evas_Coord xc1, yc1, xc2, yc2; 666 Evas_Coord xc1, yc1, xc2, yc2;
677 unsigned int i; 667 unsigned int i;
678 Eina_Bool nooverlay; 668 Eina_Bool nooverlay;
669 Evas_Object_Protected_Data *obj = eo_data_get(eo_obj, EVAS_OBJ_CLASS);
670 Evas_Object_Protected_Data *tmp = NULL;
679 671
680 video_parent = _evas_object_image_video_parent_get(eo_obj); 672 video_parent = _evas_object_image_video_parent_get(eo_obj);
681 673
682 /* Check if any one is the stack make this object mapped */ 674 /* Check if any one is the stack make this object mapped */
683 eo_tmp = eo_obj; 675 eo_tmp = eo_obj;
684 while (eo_tmp && !_evas_render_has_map(eo_tmp)) 676 while (tmp && !_evas_render_has_map(eo_tmp, tmp))
685 { 677 {
686 Evas_Object_Protected_Data *tmp = eo_data_get(eo_tmp, EVAS_OBJ_CLASS); 678 tmp = eo_data_get(eo_tmp, EVAS_OBJ_CLASS);
687 eo_tmp = tmp->smart.parent; 679 eo_tmp = tmp->smart.parent;
688 } 680 }
689 681
690 if (eo_tmp && _evas_render_has_map(eo_tmp)) return EINA_FALSE; /* we are mapped, we can't be an overlay */ 682 if (tmp && _evas_render_has_map(eo_tmp, tmp)) return EINA_FALSE; /* we are mapped, we can't be an overlay */
691 683
692 Evas_Object_Protected_Data *obj = eo_data_get(eo_obj, EVAS_OBJ_CLASS);
693 if (!evas_object_is_visible(eo_obj, obj)) return EINA_FALSE; /* no need to update the overlay if it's not visible */ 684 if (!evas_object_is_visible(eo_obj, obj)) return EINA_FALSE; /* no need to update the overlay if it's not visible */
694 685
695 /* If any recoloring of the surface is needed, n overlay to */ 686 /* 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)
864} 855}
865 856
866Eina_Bool 857Eina_Bool
867evas_render_mapped(Evas *eo_e, Evas_Object *eo_obj, Evas_Object_Protected_Data *obj, 858evas_render_mapped(Evas_Public_Data *e, Evas_Object *eo_obj, Evas_Object_Protected_Data *obj,
868 void *context, void *surface, 859 void *context, void *surface,
869 int off_x, int off_y, int mapped, 860 int off_x, int off_y, int mapped,
870 int ecx, int ecy, int ecw, int ech 861 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 *
873#endif 864#endif
874 ) 865 )
875{ 866{
876 Evas_Public_Data *e = eo_data_get(eo_e, EVAS_CLASS);
877 void *ctx; 867 void *ctx;
878 Evas_Object_Protected_Data *obj2; 868 Evas_Object_Protected_Data *obj2;
879 Eina_Bool clean_them = EINA_FALSE; 869 Eina_Bool clean_them = EINA_FALSE;
@@ -893,7 +883,7 @@ evas_render_mapped(Evas *eo_e, Evas_Object *eo_obj, Evas_Object_Protected_Data *
893 } 883 }
894 } 884 }
895 else if (!(((evas_object_is_active(eo_obj, obj) && (!obj->clip.clipees) && 885 else if (!(((evas_object_is_active(eo_obj, obj) && (!obj->clip.clipees) &&
896 (_evas_render_can_render(eo_obj)))) 886 (_evas_render_can_render(eo_obj, obj))))
897 )) 887 ))
898 { 888 {
899 RDI(level); 889 RDI(level);
@@ -906,8 +896,8 @@ evas_render_mapped(Evas *eo_e, Evas_Object *eo_obj, Evas_Object_Protected_Data *
906 RD(" Hasmap: %p (%d) %p %d -> %d\n",obj->func->can_map, 896 RD(" Hasmap: %p (%d) %p %d -> %d\n",obj->func->can_map,
907 obj->func->can_map ? obj->func->can_map(eo_obj): -1, 897 obj->func->can_map ? obj->func->can_map(eo_obj): -1,
908 obj->cur.map, obj->cur.usemap, 898 obj->cur.map, obj->cur.usemap,
909 _evas_render_has_map(eo_obj)); 899 _evas_render_has_map(eo_obj, obj));
910 if (_evas_render_has_map(eo_obj)) 900 if (_evas_render_has_map(eo_obj, obj))
911 { 901 {
912 int sw, sh; 902 int sw, sh;
913 Eina_Bool changed = EINA_FALSE, rendered = EINA_FALSE; 903 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 *
1017 EINA_INLIST_FOREACH 1007 EINA_INLIST_FOREACH
1018 (evas_object_smart_members_get_direct(eo_obj), obj2) 1008 (evas_object_smart_members_get_direct(eo_obj), obj2)
1019 { 1009 {
1020 clean_them |= evas_render_mapped(eo_e, obj2->object, obj2, ctx, 1010 clean_them |= evas_render_mapped(e, obj2->object, obj2, ctx,
1021 obj->map.surface, 1011 obj->map.surface,
1022 off_x2, off_y2, 1, 1012 off_x2, off_y2, 1,
1023 ecx, ecy, ecw, ech 1013 ecx, ecy, ecw, ech
@@ -1064,8 +1054,8 @@ evas_render_mapped(Evas *eo_e, Evas_Object *eo_obj, Evas_Object_Protected_Data *
1064 { 1054 {
1065 if (obj->cur.clipper) 1055 if (obj->cur.clipper)
1066 { 1056 {
1067 Evas_Object_Protected_Data *cur_clipper = eo_data_get(obj->cur.clipper, EVAS_OBJ_CLASS);
1068 int x, y, w, h; 1057 int x, y, w, h;
1058
1069 evas_object_clip_recalc(eo_obj, obj); 1059 evas_object_clip_recalc(eo_obj, obj);
1070 x = obj->cur.cache.clip.x; 1060 x = obj->cur.cache.clip.x;
1071 y = obj->cur.cache.clip.y; 1061 y = obj->cur.cache.clip.y;
@@ -1078,15 +1068,15 @@ evas_render_mapped(Evas *eo_e, Evas_Object *eo_obj, Evas_Object_Protected_Data *
1078 1068
1079 obj->cur.cache.clip.dirty = EINA_TRUE; 1069 obj->cur.cache.clip.dirty = EINA_TRUE;
1080 tobj = obj->cur.map_parent; 1070 tobj = obj->cur.map_parent;
1081 obj->cur.map_parent = cur_clipper->cur.map_parent; 1071 obj->cur.map_parent = obj->cur.clipper->cur.map_parent;
1082 obj->cur.map_parent = tobj; 1072 obj->cur.map_parent = tobj;
1083 } 1073 }
1084 1074
1085 RECTS_CLIP_TO_RECT(x, y, w, h, 1075 RECTS_CLIP_TO_RECT(x, y, w, h,
1086 cur_clipper->cur.cache.clip.x, 1076 obj->cur.clipper->cur.cache.clip.x,
1087 cur_clipper->cur.cache.clip.y, 1077 obj->cur.clipper->cur.cache.clip.y,
1088 cur_clipper->cur.cache.clip.w, 1078 obj->cur.clipper->cur.cache.clip.w,
1089 cur_clipper->cur.cache.clip.h); 1079 obj->cur.clipper->cur.cache.clip.h);
1090 1080
1091 e->engine.func->context_clip_set(e->engine.data.output, 1081 e->engine.func->context_clip_set(e->engine.data.output,
1092 context, 1082 context,
@@ -1129,7 +1119,7 @@ evas_render_mapped(Evas *eo_e, Evas_Object *eo_obj, Evas_Object_Protected_Data *
1129 EINA_INLIST_FOREACH 1119 EINA_INLIST_FOREACH
1130 (evas_object_smart_members_get_direct(eo_obj), obj2) 1120 (evas_object_smart_members_get_direct(eo_obj), obj2)
1131 { 1121 {
1132 clean_them |= evas_render_mapped(eo_e, obj2->object, obj2, ctx, 1122 clean_them |= evas_render_mapped(e, obj2->object, obj2, ctx,
1133 surface, 1123 surface,
1134 off_x, off_y, 1, 1124 off_x, off_y, 1,
1135 ecx, ecy, ecw, ech 1125 ecx, ecy, ecw, ech
@@ -1155,16 +1145,15 @@ evas_render_mapped(Evas *eo_e, Evas_Object *eo_obj, Evas_Object_Protected_Data *
1155 obj->cur.geometry.w, 1145 obj->cur.geometry.w,
1156 obj->cur.geometry.h); 1146 obj->cur.geometry.h);
1157 1147
1158 Evas_Object_Protected_Data *cur_clipper = eo_data_get(obj->cur.clipper, EVAS_OBJ_CLASS);
1159 RD(" clipper: %i %i %ix%i\n", 1148 RD(" clipper: %i %i %ix%i\n",
1160 cur_clipper->cur.cache.clip.x + off_x, 1149 obj->cur.clipper->cur.cache.clip.x + off_x,
1161 cur_clipper->cur.cache.clip.y + off_y, 1150 obj->cur.clipper->cur.cache.clip.y + off_y,
1162 cur_clipper->cur.cache.clip.w, 1151 obj->cur.clipper->cur.cache.clip.w,
1163 cur_clipper->cur.cache.clip.h); 1152 obj->cur.clipper->cur.cache.clip.h);
1164 1153
1165 int x, y, w, h; 1154 int x, y, w, h;
1166 1155
1167 if (_evas_render_has_map(eo_obj)) 1156 if (_evas_render_has_map(eo_obj, obj))
1168 evas_object_clip_recalc(eo_obj, obj); 1157 evas_object_clip_recalc(eo_obj, obj);
1169 1158
1170 x = obj->cur.cache.clip.x + off_x; 1159 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 *
1173 h = obj->cur.cache.clip.h; 1162 h = obj->cur.cache.clip.h;
1174 1163
1175 RECTS_CLIP_TO_RECT(x, y, w, h, 1164 RECTS_CLIP_TO_RECT(x, y, w, h,
1176 cur_clipper->cur.cache.clip.x + off_x, 1165 obj->cur.clipper->cur.cache.clip.x + off_x,
1177 cur_clipper->cur.cache.clip.y + off_y, 1166 obj->cur.clipper->cur.cache.clip.y + off_y,
1178 cur_clipper->cur.cache.clip.w, 1167 obj->cur.clipper->cur.cache.clip.w,
1179 cur_clipper->cur.cache.clip.h); 1168 obj->cur.clipper->cur.cache.clip.h);
1180 1169
1181 e->engine.func->context_clip_set(e->engine.data.output, 1170 e->engine.func->context_clip_set(e->engine.data.output,
1182 ctx, x, y, w, h); 1171 ctx, x, y, w, h);
@@ -1190,20 +1179,19 @@ evas_render_mapped(Evas *eo_e, Evas_Object *eo_obj, Evas_Object_Protected_Data *
1190 { 1179 {
1191 if (obj->cur.clipper) 1180 if (obj->cur.clipper)
1192 { 1181 {
1193 Evas_Object_Protected_Data *cur_clipper = eo_data_get(obj->cur.clipper, EVAS_OBJ_CLASS);
1194 int x, y, w, h; 1182 int x, y, w, h;
1195 1183
1196 if (_evas_render_has_map(eo_obj)) 1184 if (_evas_render_has_map(eo_obj, obj))
1197 evas_object_clip_recalc(eo_obj, obj); 1185 evas_object_clip_recalc(eo_obj, obj);
1198 x = obj->cur.cache.clip.x; 1186 x = obj->cur.cache.clip.x;
1199 y = obj->cur.cache.clip.y; 1187 y = obj->cur.cache.clip.y;
1200 w = obj->cur.cache.clip.w; 1188 w = obj->cur.cache.clip.w;
1201 h = obj->cur.cache.clip.h; 1189 h = obj->cur.cache.clip.h;
1202 RECTS_CLIP_TO_RECT(x, y, w, h, 1190 RECTS_CLIP_TO_RECT(x, y, w, h,
1203 cur_clipper->cur.cache.clip.x, 1191 obj->cur.clipper->cur.cache.clip.x,
1204 cur_clipper->cur.cache.clip.y, 1192 obj->cur.clipper->cur.cache.clip.y,
1205 cur_clipper->cur.cache.clip.w, 1193 obj->cur.clipper->cur.cache.clip.w,
1206 cur_clipper->cur.cache.clip.h); 1194 obj->cur.clipper->cur.cache.clip.h);
1207 e->engine.func->context_clip_set(e->engine.data.output, 1195 e->engine.func->context_clip_set(e->engine.data.output,
1208 context, 1196 context,
1209 x + off_x, y + off_y, w, h); 1197 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)
1241 if ((obj->cur.map) && (obj->cur.usemap)) 1229 if ((obj->cur.map) && (obj->cur.usemap))
1242 { 1230 {
1243 Evas_Object *eo_oo; 1231 Evas_Object *eo_oo;
1232 Evas_Object_Protected_Data *oo;
1244 1233
1245 eo_oo = eo_obj; 1234 eo_oo = eo_obj;
1246 Evas_Object_Protected_Data *oo = eo_data_get(eo_oo, EVAS_OBJ_CLASS); 1235 oo = eo_data_get(eo_oo, EVAS_OBJ_CLASS);
1247 while (oo->cur.clipper) 1236 while (oo->cur.clipper)
1248 { 1237 {
1249 Evas_Object_Protected_Data *oo_cur_clipper = eo_data_get(oo->cur.clipper, EVAS_OBJ_CLASS); 1238 if ((oo->cur.clipper->cur.map_parent
1250 if ((oo_cur_clipper->cur.map_parent
1251 != oo->cur.map_parent) && 1239 != oo->cur.map_parent) &&
1252 (!((oo->cur.map) && (oo->cur.usemap)))) 1240 (!((oo->cur.map) && (oo->cur.usemap))))
1253 break; 1241 break;
@@ -1256,8 +1244,8 @@ _evas_render_cutout_add(Evas *eo_e, Evas_Object *eo_obj, int off_x, int off_y)
1256 oo->cur.geometry.y, 1244 oo->cur.geometry.y,
1257 oo->cur.geometry.w, 1245 oo->cur.geometry.w,
1258 oo->cur.geometry.h); 1246 oo->cur.geometry.h);
1259 eo_oo = oo->cur.clipper; 1247 eo_oo = oo->cur.eo_clipper;
1260 oo = eo_data_get(eo_oo, EVAS_OBJ_CLASS); 1248 oo = oo->cur.clipper;
1261 } 1249 }
1262 } 1250 }
1263 e->engine.func->context_cutout_add 1251 e->engine.func->context_cutout_add
@@ -1295,6 +1283,7 @@ evas_render_updates_internal(Evas *eo_e,
1295{ 1283{
1296 Evas_Object *eo_obj; 1284 Evas_Object *eo_obj;
1297 Evas_Object_Protected_Data *obj; 1285 Evas_Object_Protected_Data *obj;
1286 Evas_Public_Data *e;
1298 Eina_List *updates = NULL; 1287 Eina_List *updates = NULL;
1299 Eina_List *ll; 1288 Eina_List *ll;
1300 void *surface; 1289 void *surface;
@@ -1310,7 +1299,8 @@ evas_render_updates_internal(Evas *eo_e,
1310 MAGIC_CHECK(eo_e, Evas, MAGIC_EVAS); 1299 MAGIC_CHECK(eo_e, Evas, MAGIC_EVAS);
1311 return NULL; 1300 return NULL;
1312 MAGIC_CHECK_END(); 1301 MAGIC_CHECK_END();
1313 Evas_Public_Data *e = eo_data_get(eo_e, EVAS_CLASS); 1302
1303 e = eo_data_get(eo_e, EVAS_CLASS);
1314 if (!e->changed) return NULL; 1304 if (!e->changed) return NULL;
1315 1305
1316#ifdef EVAS_CSERVE2 1306#ifdef EVAS_CSERVE2
@@ -1329,7 +1319,7 @@ evas_render_updates_internal(Evas *eo_e,
1329 1319
1330 /* phase 1. add extra updates for changed objects */ 1320 /* phase 1. add extra updates for changed objects */
1331 if (e->invalidate || e->render_objects.count <= 0) 1321 if (e->invalidate || e->render_objects.count <= 0)
1332 clean_them = _evas_render_phase1_process(eo_e, 1322 clean_them = _evas_render_phase1_process(e,
1333 &e->active_objects, 1323 &e->active_objects,
1334 &e->restack_objects, 1324 &e->restack_objects,
1335 &e->delete_objects, 1325 &e->delete_objects,
@@ -1343,13 +1333,13 @@ evas_render_updates_internal(Evas *eo_e,
1343 EINA_LIST_FOREACH(e->video_objects, ll, eo_obj) 1333 EINA_LIST_FOREACH(e->video_objects, ll, eo_obj)
1344 { 1334 {
1345 /* we need the surface to be transparent to display the underlying overlay */ 1335 /* we need the surface to be transparent to display the underlying overlay */
1346 if (alpha && _evas_render_can_use_overlay(eo_e, eo_obj)) 1336 if (alpha && _evas_render_can_use_overlay(e, eo_obj))
1347 _evas_object_image_video_overlay_show(eo_obj); 1337 _evas_object_image_video_overlay_show(eo_obj);
1348 else 1338 else
1349 _evas_object_image_video_overlay_hide(eo_obj); 1339 _evas_object_image_video_overlay_hide(eo_obj);
1350 } 1340 }
1351 /* phase 1.8. pre render for proxy */ 1341 /* phase 1.8. pre render for proxy */
1352 _evas_render_phase1_direct(eo_e, &e->active_objects, &e->restack_objects, 1342 _evas_render_phase1_direct(e, &e->active_objects, &e->restack_objects,
1353 &e->delete_objects, &e->render_objects); 1343 &e->delete_objects, &e->render_objects);
1354 1344
1355 /* phase 2. force updates for restacks */ 1345 /* phase 2. force updates for restacks */
@@ -1358,7 +1348,7 @@ evas_render_updates_internal(Evas *eo_e,
1358 obj = eina_array_data_get(&e->restack_objects, i); 1348 obj = eina_array_data_get(&e->restack_objects, i);
1359 eo_obj = obj->object; 1349 eo_obj = obj->object;
1360 obj->func->render_pre(eo_obj, obj); 1350 obj->func->render_pre(eo_obj, obj);
1361 _evas_render_prev_cur_clip_cache_add(eo_e, eo_obj); 1351 _evas_render_prev_cur_clip_cache_add(e, obj);
1362 } 1352 }
1363 eina_array_clean(&e->restack_objects); 1353 eina_array_clean(&e->restack_objects);
1364 1354
@@ -1643,7 +1633,7 @@ evas_render_updates_internal(Evas *eo_e,
1643 _evas_render_cutout_add(eo_e, obj2->object, off_x, off_y); 1633 _evas_render_cutout_add(eo_e, obj2->object, off_x, off_y);
1644 } 1634 }
1645#endif 1635#endif
1646 clean_them |= evas_render_mapped(eo_e, eo_obj, obj, e->engine.data.context, 1636 clean_them |= evas_render_mapped(e, eo_obj, obj, e->engine.data.context,
1647 surface, off_x, off_y, 0, 1637 surface, off_x, off_y, 0,
1648 cx, cy, cw, ch 1638 cx, cy, cw, ch
1649#ifdef REND_DBG 1639#ifdef REND_DBG
@@ -1933,10 +1923,12 @@ _canvas_render_dump(Eo *eo_e EINA_UNUSED, void *_pd, va_list *list EINA_UNUSED)
1933void 1923void
1934evas_render_invalidate(Evas *eo_e) 1924evas_render_invalidate(Evas *eo_e)
1935{ 1925{
1926 Evas_Public_Data *e;
1927
1936 MAGIC_CHECK(eo_e, Evas, MAGIC_EVAS); 1928 MAGIC_CHECK(eo_e, Evas, MAGIC_EVAS);
1937 return; 1929 return;
1938 MAGIC_CHECK_END(); 1930 MAGIC_CHECK_END();
1939 Evas_Public_Data *e = eo_data_get(eo_e, EVAS_CLASS); 1931 e = eo_data_get(eo_e, EVAS_CLASS);
1940 1932
1941 eina_array_clean(&e->active_objects); 1933 eina_array_clean(&e->active_objects);
1942 eina_array_clean(&e->render_objects); 1934 eina_array_clean(&e->render_objects);
@@ -1950,10 +1942,13 @@ evas_render_invalidate(Evas *eo_e)
1950void 1942void
1951evas_render_object_recalc(Evas_Object *eo_obj) 1943evas_render_object_recalc(Evas_Object *eo_obj)
1952{ 1944{
1945 Evas_Object_Protected_Data *obj;
1946
1953 MAGIC_CHECK(eo_obj, Evas_Object, MAGIC_OBJ); 1947 MAGIC_CHECK(eo_obj, Evas_Object, MAGIC_OBJ);
1954 return; 1948 return;
1955 MAGIC_CHECK_END(); 1949 MAGIC_CHECK_END();
1956 Evas_Object_Protected_Data *obj = eo_data_get(eo_obj, EVAS_OBJ_CLASS); 1950
1951 obj = eo_data_get(eo_obj, EVAS_OBJ_CLASS);
1957 if ((!obj->changed) && (obj->delete_me < 2)) 1952 if ((!obj->changed) && (obj->delete_me < 2))
1958 { 1953 {
1959 Evas_Public_Data *e; 1954 Evas_Public_Data *e;
diff --git a/legacy/evas/src/lib/include/evas_inline.x b/legacy/evas/src/lib/include/evas_inline.x
index b9ae608af6..e40fdd2d6e 100644
--- a/legacy/evas/src/lib/include/evas_inline.x
+++ b/legacy/evas/src/lib/include/evas_inline.x
@@ -2,9 +2,8 @@
2#define EVAS_INLINE_H 2#define EVAS_INLINE_H
3 3
4static inline Eina_Bool 4static inline Eina_Bool
5_evas_render_has_map(Evas_Object *eo_obj) 5_evas_render_has_map(Evas_Object *eo_obj, Evas_Object_Protected_Data *obj)
6{ 6{
7 Evas_Object_Protected_Data *obj = eo_data_get(eo_obj, EVAS_OBJ_CLASS);
8 return ((!((obj->func->can_map) && (obj->func->can_map(eo_obj)))) && 7 return ((!((obj->func->can_map) && (obj->func->can_map(eo_obj)))) &&
9 ((obj->cur.map) && (obj->cur.usemap))); 8 ((obj->cur.map) && (obj->cur.usemap)));
10 // return ((obj->cur.map) && (obj->cur.usemap)); 9 // return ((obj->cur.map) && (obj->cur.usemap));
@@ -127,11 +126,10 @@ evas_object_clippers_is_visible(Evas_Object *eo_obj __UNUSED__, Evas_Object_Prot
127{ 126{
128 if (obj->cur.visible) 127 if (obj->cur.visible)
129 { 128 {
130 Evas_Object_Protected_Data *clipper_pd = NULL;
131 if (obj->cur.clipper) 129 if (obj->cur.clipper)
132 { 130 {
133 clipper_pd = eo_data_get(obj->cur.clipper, EVAS_OBJ_CLASS); 131 return evas_object_clippers_is_visible(obj->cur.eo_clipper,
134 return evas_object_clippers_is_visible(obj->cur.clipper, clipper_pd); 132 obj->cur.clipper);
135 } 133 }
136 return 1; 134 return 1;
137 } 135 }
@@ -205,13 +203,12 @@ evas_object_coords_recalc(Evas_Object *eo_obj, Evas_Object_Protected_Data *obj)
205static inline void 203static inline void
206evas_object_clip_recalc(Evas_Object *eo_obj, Evas_Object_Protected_Data *obj) 204evas_object_clip_recalc(Evas_Object *eo_obj, Evas_Object_Protected_Data *obj)
207{ 205{
206 Evas_Object_Protected_Data *clipper = NULL;
208 int cx, cy, cw, ch, cr, cg, cb, ca; 207 int cx, cy, cw, ch, cr, cg, cb, ca;
209 int nx, ny, nw, nh, nr, ng, nb, na; 208 int nx, ny, nw, nh, nr, ng, nb, na;
210 Eina_Bool cvis, nvis; 209 Eina_Bool cvis, nvis;
211 210
212 Evas_Object_Protected_Data *clipper = NULL; 211 clipper = obj->cur.clipper;
213 if (obj->cur.clipper)
214 clipper = eo_data_get(obj->cur.clipper, EVAS_OBJ_CLASS);
215 212
216 if ((!obj->cur.cache.clip.dirty) && 213 if ((!obj->cur.cache.clip.dirty) &&
217 !(!obj->cur.clipper || clipper->cur.cache.clip.dirty)) return; 214 !(!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)
242 cr = obj->cur.color.r; cg = obj->cur.color.g; 239 cr = obj->cur.color.r; cg = obj->cur.color.g;
243 cb = obj->cur.color.b; ca = obj->cur.color.a; 240 cb = obj->cur.color.b; ca = obj->cur.color.a;
244 241
245 if (obj->cur.clipper) 242 if (clipper)
246 { 243 {
247 // this causes problems... hmmm ????? 244 // this causes problems... hmmm ?????
248 if (clipper->cur.cache.clip.dirty) 245 if (clipper->cur.cache.clip.dirty)
249 evas_object_clip_recalc(obj->cur.clipper, clipper); 246 evas_object_clip_recalc(obj->cur.eo_clipper, clipper);
250 247
251 // I don't know why this test was here in the first place. As I have 248 // I don't know why this test was here in the first place. As I have
252 // no issue showing up due to this, I keep it and move color out of it. 249 // no issue showing up due to this, I keep it and move color out of it.
diff --git a/legacy/evas/src/lib/include/evas_private.h b/legacy/evas/src/lib/include/evas_private.h
index 6f27fe3f97..62e7ec3b11 100644
--- a/legacy/evas/src/lib/include/evas_private.h
+++ b/legacy/evas/src/lib/include/evas_private.h
@@ -528,7 +528,8 @@ struct _Evas_Object_Protected_Data
528 528
529 struct { 529 struct {
530 Evas_Map *map; 530 Evas_Map *map;
531 Evas_Object *clipper; 531 Evas_Object_Protected_Data *clipper;
532 Evas_Object *eo_clipper;
532 Evas_Object *mask; 533 Evas_Object *mask;
533 Evas_Object *map_parent; 534 Evas_Object *map_parent;
534 double scale; 535 double scale;
@@ -1023,7 +1024,7 @@ void evas_object_smart_member_stack_below(Evas_Object *member, Evas_Object *othe
1023const Eina_Inlist *evas_object_smart_members_get_direct(const Evas_Object *obj); 1024const Eina_Inlist *evas_object_smart_members_get_direct(const Evas_Object *obj);
1024void _evas_object_smart_members_all_del(Evas_Object *obj); 1025void _evas_object_smart_members_all_del(Evas_Object *obj);
1025void evas_call_smarts_calculate(Evas *e); 1026void evas_call_smarts_calculate(Evas *e);
1026void evas_object_smart_bouding_box_update(Evas_Object *obj); 1027void evas_object_smart_bounding_box_update(Evas_Object *eo_obj, Evas_Object_Protected_Data *obj);
1027void evas_object_smart_need_bounding_box_update(Evas_Object *obj); 1028void evas_object_smart_need_bounding_box_update(Evas_Object *obj);
1028void *evas_mem_calloc(int size); 1029void *evas_mem_calloc(int size);
1029void _evas_post_event_callback_call(Evas *e, Evas_Public_Data* e_pd); 1030void _evas_post_event_callback_call(Evas *e, Evas_Public_Data* e_pd);
@@ -1227,7 +1228,7 @@ void _evas_unwalk(Evas_Public_Data *e_pd);
1227EAPI int _evas_module_engine_inherit(Evas_Func *funcs, char *name); 1228EAPI int _evas_module_engine_inherit(Evas_Func *funcs, char *name);
1228EAPI const char *_evas_module_libdir_get(void); 1229EAPI const char *_evas_module_libdir_get(void);
1229 1230
1230Eina_Bool evas_render_mapped(Evas *e, Evas_Object *obj, Evas_Object_Protected_Data *source_pd, 1231Eina_Bool evas_render_mapped(Evas_Public_Data *e, Evas_Object *obj, Evas_Object_Protected_Data *source_pd,
1231 void *context, void *surface, 1232 void *context, void *surface,
1232 int off_x, int off_y, int mapped, 1233 int off_x, int off_y, int mapped,
1233 int ecx, int ecy, int ecw, int ech 1234 int ecx, int ecy, int ecw, int ech