summaryrefslogtreecommitdiff
path: root/src/lib
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib')
-rw-r--r--src/lib/evas/canvas/evas_object_image.c59
-rw-r--r--src/lib/evas/canvas/evas_object_line.c7
-rw-r--r--src/lib/evas/canvas/evas_object_polygon.c7
-rw-r--r--src/lib/evas/canvas/evas_object_rectangle.c7
-rw-r--r--src/lib/evas/canvas/evas_object_smart.c4
-rw-r--r--src/lib/evas/canvas/evas_object_text.c7
-rw-r--r--src/lib/evas/canvas/evas_object_textblock.c9
-rw-r--r--src/lib/evas/canvas/evas_object_textgrid.c13
-rw-r--r--src/lib/evas/canvas/evas_render.c31
-rw-r--r--src/lib/evas/include/evas_common.h3
-rw-r--r--src/lib/evas/include/evas_private.h14
11 files changed, 95 insertions, 66 deletions
diff --git a/src/lib/evas/canvas/evas_object_image.c b/src/lib/evas/canvas/evas_object_image.c
index 5f2f02c..5913f36 100644
--- a/src/lib/evas/canvas/evas_object_image.c
+++ b/src/lib/evas/canvas/evas_object_image.c
@@ -111,7 +111,7 @@ static Evas_Coord evas_object_image_figure_y_fill(Evas_Object *eo_obj, Evas_Obje
111 111
112static void evas_object_image_init(Evas_Object *eo_obj); 112static void evas_object_image_init(Evas_Object *eo_obj);
113static void evas_object_image_new(Evas_Object *eo_obj); 113static void evas_object_image_new(Evas_Object *eo_obj);
114static void evas_object_image_render(Evas_Object *eo_obj, Evas_Object_Protected_Data *obj, void *output, void *context, void *surface, int x, int y); 114static void evas_object_image_render(Evas_Object *eo_obj, Evas_Object_Protected_Data *obj, void *output, void *context, void *surface, int x, int y, Eina_Bool do_async);
115static void evas_object_image_free(Evas_Object *eo_obj, Evas_Object_Protected_Data *obj); 115static void evas_object_image_free(Evas_Object *eo_obj, Evas_Object_Protected_Data *obj);
116static void evas_object_image_render_pre(Evas_Object *eo_obj, Evas_Object_Protected_Data *obj); 116static void evas_object_image_render_pre(Evas_Object *eo_obj, Evas_Object_Protected_Data *obj);
117static void evas_object_image_render_post(Evas_Object *eo_obj, Evas_Object_Protected_Data *obj); 117static void evas_object_image_render_post(Evas_Object *eo_obj, Evas_Object_Protected_Data *obj);
@@ -132,7 +132,7 @@ static void evas_object_image_filled_resize_listener(void *data, Evas *eo_e, Eva
132 132
133static void _proxy_unset(Evas_Object *proxy); 133static void _proxy_unset(Evas_Object *proxy);
134static void _proxy_set(Evas_Object *proxy, Evas_Object *src); 134static void _proxy_set(Evas_Object *proxy, Evas_Object *src);
135static void _proxy_error(Evas_Object *proxy, void *context, void *output, void *surface, int x, int y); 135static void _proxy_error(Evas_Object *proxy, void *context, void *output, void *surface, int x, int y, Eina_Bool do_async);
136 136
137static void _cleanup_tmpf(Evas_Object *eo_obj); 137static void _cleanup_tmpf(Evas_Object *eo_obj);
138 138
@@ -1272,6 +1272,9 @@ _image_data_get(Eo *eo_obj, void *_pd, va_list *list)
1272 } 1272 }
1273 1273
1274 Evas_Object_Protected_Data *obj = eo_data_get(eo_obj, EVAS_OBJ_CLASS); 1274 Evas_Object_Protected_Data *obj = eo_data_get(eo_obj, EVAS_OBJ_CLASS);
1275
1276 if (for_writing) evas_render_rendering_wait(obj->layer->evas);
1277
1275 data = NULL; 1278 data = NULL;
1276 if (obj->layer->evas->engine.func->image_scale_hint_set) 1279 if (obj->layer->evas->engine.func->image_scale_hint_set)
1277 obj->layer->evas->engine.func->image_scale_hint_set 1280 obj->layer->evas->engine.func->image_scale_hint_set
@@ -2744,7 +2747,7 @@ _proxy_set(Evas_Object *eo_proxy, Evas_Object *eo_src)
2744 */ 2747 */
2745static void 2748static void
2746_proxy_error(Evas_Object *eo_proxy, void *context, void *output, void *surface, 2749_proxy_error(Evas_Object *eo_proxy, void *context, void *output, void *surface,
2747 int x, int y) 2750 int x, int y, Eina_Bool do_async)
2748{ 2751{
2749 Evas_Func *func; 2752 Evas_Func *func;
2750 int r = rand() % 255; 2753 int r = rand() % 255;
@@ -2763,7 +2766,8 @@ _proxy_error(Evas_Object *eo_proxy, void *context, void *output, void *surface,
2763 func->rectangle_draw(output, context, surface, proxy->cur.geometry.x + x, 2766 func->rectangle_draw(output, context, surface, proxy->cur.geometry.x + x,
2764 proxy->cur.geometry.y + y, 2767 proxy->cur.geometry.y + y,
2765 proxy->cur.geometry.w, 2768 proxy->cur.geometry.w,
2766 proxy->cur.geometry.h); 2769 proxy->cur.geometry.h,
2770 do_async);
2767 return; 2771 return;
2768} 2772}
2769 2773
@@ -2808,7 +2812,7 @@ _proxy_subrender_recurse(Evas_Object *eo_obj, Evas_Object *clip, void *output, v
2808 * Used to force a draw if necessary, else just makes sures it's available. 2812 * Used to force a draw if necessary, else just makes sures it's available.
2809 */ 2813 */
2810static void 2814static void
2811_proxy_subrender(Evas *eo_e, Evas_Object *eo_source) 2815_proxy_subrender(Evas *eo_e, Evas_Object *eo_source, Eina_Bool do_async)
2812{ 2816{
2813 Evas_Public_Data *e = eo_data_get(eo_e, EVAS_CLASS); 2817 Evas_Public_Data *e = eo_data_get(eo_e, EVAS_CLASS);
2814 void *ctx; 2818 void *ctx;
@@ -2848,7 +2852,8 @@ _proxy_subrender(Evas *eo_e, Evas_Object *eo_source)
2848 e->engine.func->context_color_set(e->engine.data.output, ctx, 0, 0, 0, 0); 2852 e->engine.func->context_color_set(e->engine.data.output, ctx, 0, 0, 0, 0);
2849 e->engine.func->context_render_op_set(e->engine.data.output, ctx, EVAS_RENDER_COPY); 2853 e->engine.func->context_render_op_set(e->engine.data.output, ctx, EVAS_RENDER_COPY);
2850 e->engine.func->rectangle_draw(e->engine.data.output, ctx, 2854 e->engine.func->rectangle_draw(e->engine.data.output, ctx,
2851 source->proxy.surface, 0, 0, w, h); 2855 source->proxy.surface, 0, 0, w, h,
2856 do_async);
2852 e->engine.func->context_free(e->engine.data.output, ctx); 2857 e->engine.func->context_free(e->engine.data.output, ctx);
2853 2858
2854 ctx = e->engine.func->context_new(e->engine.data.output); 2859 ctx = e->engine.func->context_new(e->engine.data.output);
@@ -2859,7 +2864,7 @@ _proxy_subrender(Evas *eo_e, Evas_Object *eo_source)
2859#ifdef REND_DBG 2864#ifdef REND_DBG
2860 , 1 2865 , 1
2861#endif 2866#endif
2862 ); 2867 , do_async);
2863 2868
2864 e->engine.func->context_free(e->engine.data.output, ctx); 2869 e->engine.func->context_free(e->engine.data.output, ctx);
2865 source->proxy.surface = e->engine.func->image_dirty_region 2870 source->proxy.surface = e->engine.func->image_dirty_region
@@ -3130,7 +3135,7 @@ evas_object_image_free(Evas_Object *eo_obj, Evas_Object_Protected_Data *obj)
3130} 3135}
3131 3136
3132static void 3137static void
3133evas_object_image_render(Evas_Object *eo_obj, Evas_Object_Protected_Data *obj, void *output, void *context, void *surface, int x, int y) 3138evas_object_image_render(Evas_Object *eo_obj, Evas_Object_Protected_Data *obj, void *output, void *context, void *surface, int x, int y, Eina_Bool do_async)
3134{ 3139{
3135 Evas_Object_Image *o = eo_data_get(eo_obj, MY_CLASS); 3140 Evas_Object_Image *o = eo_data_get(eo_obj, MY_CLASS);
3136 int imagew, imageh, uvw, uvh; 3141 int imagew, imageh, uvw, uvh;
@@ -3142,7 +3147,7 @@ evas_object_image_render(Evas_Object *eo_obj, Evas_Object_Protected_Data *obj, v
3142 /* Proxy sanity */ 3147 /* Proxy sanity */
3143 if (o->proxyrendering) 3148 if (o->proxyrendering)
3144 { 3149 {
3145 _proxy_error(eo_obj, context, output, surface, x, y); 3150 _proxy_error(eo_obj, context, output, surface, x, y, EINA_FALSE);
3146 return; 3151 return;
3147 } 3152 }
3148 3153
@@ -3163,9 +3168,10 @@ evas_object_image_render(Evas_Object *eo_obj, Evas_Object_Protected_Data *obj, v
3163 obj->cur.geometry.x + x, 3168 obj->cur.geometry.x + x,
3164 obj->cur.geometry.y + y, 3169 obj->cur.geometry.y + y,
3165 obj->cur.geometry.w, 3170 obj->cur.geometry.w,
3166 obj->cur.geometry.h); 3171 obj->cur.geometry.h,
3172 do_async);
3167 3173
3168 return ; 3174 return;
3169 } 3175 }
3170 3176
3171 obj->layer->evas->engine.func->context_color_set(output, 3177 obj->layer->evas->engine.func->context_color_set(output,
@@ -3225,7 +3231,7 @@ evas_object_image_render(Evas_Object *eo_obj, Evas_Object_Protected_Data *obj, v
3225 else 3231 else
3226 { 3232 {
3227 o->proxyrendering = EINA_TRUE; 3233 o->proxyrendering = EINA_TRUE;
3228 _proxy_subrender(obj->layer->evas->evas, o->cur.source); 3234 _proxy_subrender(obj->layer->evas->evas, o->cur.source, EINA_FALSE);
3229 pixels = source->proxy.surface; 3235 pixels = source->proxy.surface;
3230 imagew = source->proxy.w; 3236 imagew = source->proxy.w;
3231 imageh = source->proxy.h; 3237 imageh = source->proxy.h;
@@ -3278,7 +3284,8 @@ evas_object_image_render(Evas_Object *eo_obj, Evas_Object_Protected_Data *obj, v
3278 3284
3279 obj->layer->evas->engine.func->image_map_draw 3285 obj->layer->evas->engine.func->image_map_draw
3280 (output, context, surface, pixels, obj->spans, 3286 (output, context, surface, pixels, obj->spans,
3281 o->cur.smooth_scale | obj->cur.map->smooth, 0); 3287 o->cur.smooth_scale | obj->cur.map->smooth, 0,
3288 do_async);
3282 } 3289 }
3283 else 3290 else
3284 { 3291 {
@@ -3357,7 +3364,8 @@ evas_object_image_render(Evas_Object *eo_obj, Evas_Object_Protected_Data *obj, v
3357 obj->cur.geometry.x + ix + x, 3364 obj->cur.geometry.x + ix + x,
3358 obj->cur.geometry.y + iy + y, 3365 obj->cur.geometry.y + iy + y,
3359 iw, ih, 3366 iw, ih,
3360 o->cur.smooth_scale); 3367 o->cur.smooth_scale,
3368 do_async);
3361 } 3369 }
3362 else 3370 else
3363#endif 3371#endif
@@ -3369,7 +3377,8 @@ evas_object_image_render(Evas_Object *eo_obj, Evas_Object_Protected_Data *obj, v
3369 obj->cur.geometry.x + ix + x, 3377 obj->cur.geometry.x + ix + x,
3370 obj->cur.geometry.y + iy + y, 3378 obj->cur.geometry.y + iy + y,
3371 iw, ih, 3379 iw, ih,
3372 o->cur.smooth_scale); 3380 o->cur.smooth_scale,
3381 do_async);
3373 } 3382 }
3374 } 3383 }
3375 else 3384 else
@@ -3423,28 +3432,28 @@ evas_object_image_render(Evas_Object *eo_obj, Evas_Object_Protected_Data *obj, v
3423 inw = bl; inh = bt; 3432 inw = bl; inh = bt;
3424 outx = ox; outy = oy; 3433 outx = ox; outy = oy;
3425 outw = bsl; outh = bst; 3434 outw = bsl; outh = bst;
3426 obj->layer->evas->engine.func->image_draw(output, context, surface, pixels, inx, iny, inw, inh, outx, outy, outw, outh, o->cur.smooth_scale); 3435 obj->layer->evas->engine.func->image_draw(output, context, surface, pixels, inx, iny, inw, inh, outx, outy, outw, outh, o->cur.smooth_scale, do_async);
3427 // .## 3436 // .##
3428 // | 3437 // |
3429 inx = bl; iny = 0; 3438 inx = bl; iny = 0;
3430 inw = imw - bl - br; inh = bt; 3439 inw = imw - bl - br; inh = bt;
3431 outx = ox + bsl; outy = oy; 3440 outx = ox + bsl; outy = oy;
3432 outw = iw - bsl - bsr; outh = bst; 3441 outw = iw - bsl - bsr; outh = bst;
3433 obj->layer->evas->engine.func->image_draw(output, context, surface, pixels, inx, iny, inw, inh, outx, outy, outw, outh, o->cur.smooth_scale); 3442 obj->layer->evas->engine.func->image_draw(output, context, surface, pixels, inx, iny, inw, inh, outx, outy, outw, outh, o->cur.smooth_scale, do_async);
3434 // --# 3443 // --#
3435 // | 3444 // |
3436 inx = imw - br; iny = 0; 3445 inx = imw - br; iny = 0;
3437 inw = br; inh = bt; 3446 inw = br; inh = bt;
3438 outx = ox + iw - bsr; outy = oy; 3447 outx = ox + iw - bsr; outy = oy;
3439 outw = bsr; outh = bst; 3448 outw = bsr; outh = bst;
3440 obj->layer->evas->engine.func->image_draw(output, context, surface, pixels, inx, iny, inw, inh, outx, outy, outw, outh, o->cur.smooth_scale); 3449 obj->layer->evas->engine.func->image_draw(output, context, surface, pixels, inx, iny, inw, inh, outx, outy, outw, outh, o->cur.smooth_scale, do_async);
3441 // .-- 3450 // .--
3442 // # 3451 // #
3443 inx = 0; iny = bt; 3452 inx = 0; iny = bt;
3444 inw = bl; inh = imh - bt - bb; 3453 inw = bl; inh = imh - bt - bb;
3445 outx = ox; outy = oy + bst; 3454 outx = ox; outy = oy + bst;
3446 outw = bsl; outh = ih - bst - bsb; 3455 outw = bsl; outh = ih - bst - bsb;
3447 obj->layer->evas->engine.func->image_draw(output, context, surface, pixels, inx, iny, inw, inh, outx, outy, outw, outh, o->cur.smooth_scale); 3456 obj->layer->evas->engine.func->image_draw(output, context, surface, pixels, inx, iny, inw, inh, outx, outy, outw, outh, o->cur.smooth_scale, do_async);
3448 // .--. 3457 // .--.
3449 // |##| 3458 // |##|
3450 if (o->cur.border.fill > EVAS_BORDER_FILL_NONE) 3459 if (o->cur.border.fill > EVAS_BORDER_FILL_NONE)
@@ -3459,12 +3468,12 @@ evas_object_image_render(Evas_Object *eo_obj, Evas_Object_Protected_Data *obj, v
3459 { 3468 {
3460 obj->layer->evas->engine.func->context_render_op_set(output, context, 3469 obj->layer->evas->engine.func->context_render_op_set(output, context,
3461 EVAS_RENDER_COPY); 3470 EVAS_RENDER_COPY);
3462 obj->layer->evas->engine.func->image_draw(output, context, surface, pixels, inx, iny, inw, inh, outx, outy, outw, outh, o->cur.smooth_scale); 3471 obj->layer->evas->engine.func->image_draw(output, context, surface, pixels, inx, iny, inw, inh, outx, outy, outw, outh, o->cur.smooth_scale, do_async);
3463 obj->layer->evas->engine.func->context_render_op_set(output, context, 3472 obj->layer->evas->engine.func->context_render_op_set(output, context,
3464 obj->cur.render_op); 3473 obj->cur.render_op);
3465 } 3474 }
3466 else 3475 else
3467 obj->layer->evas->engine.func->image_draw(output, context, surface, pixels, inx, iny, inw, inh, outx, outy, outw, outh, o->cur.smooth_scale); 3476 obj->layer->evas->engine.func->image_draw(output, context, surface, pixels, inx, iny, inw, inh, outx, outy, outw, outh, o->cur.smooth_scale, do_async);
3468 } 3477 }
3469 // --. 3478 // --.
3470 // # 3479 // #
@@ -3472,28 +3481,28 @@ evas_object_image_render(Evas_Object *eo_obj, Evas_Object_Protected_Data *obj, v
3472 inw = br; inh = imh - bt - bb; 3481 inw = br; inh = imh - bt - bb;
3473 outx = ox + iw - bsr; outy = oy + bst; 3482 outx = ox + iw - bsr; outy = oy + bst;
3474 outw = bsr; outh = ih - bst - bsb; 3483 outw = bsr; outh = ih - bst - bsb;
3475 obj->layer->evas->engine.func->image_draw(output, context, surface, pixels, inx, iny, inw, inh, outx, outy, outw, outh, o->cur.smooth_scale); 3484 obj->layer->evas->engine.func->image_draw(output, context, surface, pixels, inx, iny, inw, inh, outx, outy, outw, outh, o->cur.smooth_scale, do_async);
3476 // | 3485 // |
3477 // #-- 3486 // #--
3478 inx = 0; iny = imh - bb; 3487 inx = 0; iny = imh - bb;
3479 inw = bl; inh = bb; 3488 inw = bl; inh = bb;
3480 outx = ox; outy = oy + ih - bsb; 3489 outx = ox; outy = oy + ih - bsb;
3481 outw = bsl; outh = bsb; 3490 outw = bsl; outh = bsb;
3482 obj->layer->evas->engine.func->image_draw(output, context, surface, pixels, inx, iny, inw, inh, outx, outy, outw, outh, o->cur.smooth_scale); 3491 obj->layer->evas->engine.func->image_draw(output, context, surface, pixels, inx, iny, inw, inh, outx, outy, outw, outh, o->cur.smooth_scale, do_async);
3483 // | 3492 // |
3484 // .## 3493 // .##
3485 inx = bl; iny = imh - bb; 3494 inx = bl; iny = imh - bb;
3486 inw = imw - bl - br; inh = bb; 3495 inw = imw - bl - br; inh = bb;
3487 outx = ox + bsl; outy = oy + ih - bsb; 3496 outx = ox + bsl; outy = oy + ih - bsb;
3488 outw = iw - bsl - bsr; outh = bsb; 3497 outw = iw - bsl - bsr; outh = bsb;
3489 obj->layer->evas->engine.func->image_draw(output, context, surface, pixels, inx, iny, inw, inh, outx, outy, outw, outh, o->cur.smooth_scale); 3498 obj->layer->evas->engine.func->image_draw(output, context, surface, pixels, inx, iny, inw, inh, outx, outy, outw, outh, o->cur.smooth_scale, do_async);
3490 // | 3499 // |
3491 // --# 3500 // --#
3492 inx = imw - br; iny = imh - bb; 3501 inx = imw - br; iny = imh - bb;
3493 inw = br; inh = bb; 3502 inw = br; inh = bb;
3494 outx = ox + iw - bsr; outy = oy + ih - bsb; 3503 outx = ox + iw - bsr; outy = oy + ih - bsb;
3495 outw = bsr; outh = bsb; 3504 outw = bsr; outh = bsb;
3496 obj->layer->evas->engine.func->image_draw(output, context, surface, pixels, inx, iny, inw, inh, outx, outy, outw, outh, o->cur.smooth_scale); 3505 obj->layer->evas->engine.func->image_draw(output, context, surface, pixels, inx, iny, inw, inh, outx, outy, outw, outh, o->cur.smooth_scale, do_async);
3497 } 3506 }
3498 idy += idh; 3507 idy += idh;
3499 if (dobreak_h) break; 3508 if (dobreak_h) break;
diff --git a/src/lib/evas/canvas/evas_object_line.c b/src/lib/evas/canvas/evas_object_line.c
index 76a6263..ac39fce 100644
--- a/src/lib/evas/canvas/evas_object_line.c
+++ b/src/lib/evas/canvas/evas_object_line.c
@@ -31,7 +31,7 @@ struct _Evas_Object_Line
31 31
32/* private methods for line objects */ 32/* private methods for line objects */
33static void evas_object_line_init(Evas_Object *eo_obj); 33static void evas_object_line_init(Evas_Object *eo_obj);
34static void evas_object_line_render(Evas_Object *eo_obj, Evas_Object_Protected_Data *obj, void *output, void *context, void *surface, int x, int y); 34static void evas_object_line_render(Evas_Object *eo_obj, Evas_Object_Protected_Data *obj, void *output, void *context, void *surface, int x, int y, Eina_Bool do_async);
35static void evas_object_line_render_pre(Evas_Object *eo_obj, Evas_Object_Protected_Data *obj); 35static void evas_object_line_render_pre(Evas_Object *eo_obj, Evas_Object_Protected_Data *obj);
36static void evas_object_line_render_post(Evas_Object *eo_obj, Evas_Object_Protected_Data *obj); 36static void evas_object_line_render_post(Evas_Object *eo_obj, Evas_Object_Protected_Data *obj);
37 37
@@ -253,7 +253,7 @@ _destructor(Eo *eo_obj, void *_pd EINA_UNUSED, va_list *list EINA_UNUSED)
253} 253}
254 254
255static void 255static void
256evas_object_line_render(Evas_Object *eo_obj, Evas_Object_Protected_Data *obj, void *output, void *context, void *surface, int x, int y) 256evas_object_line_render(Evas_Object *eo_obj, Evas_Object_Protected_Data *obj, void *output, void *context, void *surface, int x, int y, Eina_Bool do_async)
257{ 257{
258 Evas_Object_Line *o = eo_data_get(eo_obj, MY_CLASS); 258 Evas_Object_Line *o = eo_data_get(eo_obj, MY_CLASS);
259 259
@@ -277,7 +277,8 @@ evas_object_line_render(Evas_Object *eo_obj, Evas_Object_Protected_Data *obj, vo
277 o->cur.cache.x1 + x, 277 o->cur.cache.x1 + x,
278 o->cur.cache.y1 + y, 278 o->cur.cache.y1 + y,
279 o->cur.cache.x2 + x, 279 o->cur.cache.x2 + x,
280 o->cur.cache.y2 + y); 280 o->cur.cache.y2 + y,
281 do_async);
281} 282}
282 283
283static void 284static void
diff --git a/src/lib/evas/canvas/evas_object_polygon.c b/src/lib/evas/canvas/evas_object_polygon.c
index 475c555..9e57b45 100644
--- a/src/lib/evas/canvas/evas_object_polygon.c
+++ b/src/lib/evas/canvas/evas_object_polygon.c
@@ -32,7 +32,7 @@ struct _Evas_Polygon_Point
32 32
33/* private methods for polygon objects */ 33/* private methods for polygon objects */
34static void evas_object_polygon_init(Evas_Object *eo_obj); 34static void evas_object_polygon_init(Evas_Object *eo_obj);
35static void evas_object_polygon_render(Evas_Object *eo_obj, Evas_Object_Protected_Data *obj, void *output, void *context, void *surface, int x, int y); 35static void evas_object_polygon_render(Evas_Object *eo_obj, Evas_Object_Protected_Data *obj, void *output, void *context, void *surface, int x, int y, Eina_Bool do_async);
36static void evas_object_polygon_free(Evas_Object *eo_obj, Evas_Object_Protected_Data *obj); 36static void evas_object_polygon_free(Evas_Object *eo_obj, Evas_Object_Protected_Data *obj);
37static void evas_object_polygon_render_pre(Evas_Object *eo_obj, Evas_Object_Protected_Data *obj); 37static void evas_object_polygon_render_pre(Evas_Object *eo_obj, Evas_Object_Protected_Data *obj);
38static void evas_object_polygon_render_post(Evas_Object *eo_obj, Evas_Object_Protected_Data *obj); 38static void evas_object_polygon_render_post(Evas_Object *eo_obj, Evas_Object_Protected_Data *obj);
@@ -297,7 +297,7 @@ evas_object_polygon_free(Evas_Object *eo_obj, Evas_Object_Protected_Data *obj)
297} 297}
298 298
299static void 299static void
300evas_object_polygon_render(Evas_Object *eo_obj, Evas_Object_Protected_Data *obj, void *output, void *context, void *surface, int x, int y) 300evas_object_polygon_render(Evas_Object *eo_obj, Evas_Object_Protected_Data *obj, void *output, void *context, void *surface, int x, int y, Eina_Bool do_async)
301{ 301{
302 Evas_Object_Polygon *o = eo_data_get(eo_obj, MY_CLASS); 302 Evas_Object_Polygon *o = eo_data_get(eo_obj, MY_CLASS);
303 Eina_List *l; 303 Eina_List *l;
@@ -335,7 +335,8 @@ evas_object_polygon_render(Evas_Object *eo_obj, Evas_Object_Protected_Data *obj,
335 context, 335 context,
336 surface, 336 surface,
337 o->engine_data, 337 o->engine_data,
338 o->offset.x + x, o->offset.y + y); 338 o->offset.x + x, o->offset.y + y,
339 do_async);
339} 340}
340 341
341static void 342static void
diff --git a/src/lib/evas/canvas/evas_object_rectangle.c b/src/lib/evas/canvas/evas_object_rectangle.c
index a90aeb7..1b132e5 100644
--- a/src/lib/evas/canvas/evas_object_rectangle.c
+++ b/src/lib/evas/canvas/evas_object_rectangle.c
@@ -22,7 +22,7 @@ struct _Evas_Object_Rectangle
22 22
23/* private methods for rectangle objects */ 23/* private methods for rectangle objects */
24static void evas_object_rectangle_init(Evas_Object *eo_obj); 24static void evas_object_rectangle_init(Evas_Object *eo_obj);
25static void evas_object_rectangle_render(Evas_Object *eo_obj, Evas_Object_Protected_Data *obj, void *output, void *context, void *surface, int x, int y); 25static void evas_object_rectangle_render(Evas_Object *eo_obj, Evas_Object_Protected_Data *obj, void *output, void *context, void *surface, int x, int y, Eina_Bool do_async);
26static void evas_object_rectangle_render_pre(Evas_Object *eo_obj, Evas_Object_Protected_Data *obj); 26static void evas_object_rectangle_render_pre(Evas_Object *eo_obj, Evas_Object_Protected_Data *obj);
27static void evas_object_rectangle_render_post(Evas_Object *eo_obj, Evas_Object_Protected_Data *obj); 27static void evas_object_rectangle_render_post(Evas_Object *eo_obj, Evas_Object_Protected_Data *obj);
28 28
@@ -122,7 +122,7 @@ _destructor(Eo *eo_obj, void *_obj EINA_UNUSED, va_list *list EINA_UNUSED)
122} 122}
123 123
124static void 124static void
125evas_object_rectangle_render(Evas_Object *eo_obj EINA_UNUSED, Evas_Object_Protected_Data *obj, void *output, void *context, void *surface, int x, int y) 125evas_object_rectangle_render(Evas_Object *eo_obj EINA_UNUSED, Evas_Object_Protected_Data *obj, void *output, void *context, void *surface, int x, int y, Eina_Bool do_async)
126{ 126{
127 /* render object to surface with context, and offxet by x,y */ 127 /* render object to surface with context, and offxet by x,y */
128 obj->layer->evas->engine.func->context_color_set(output, 128 obj->layer->evas->engine.func->context_color_set(output,
@@ -141,7 +141,8 @@ evas_object_rectangle_render(Evas_Object *eo_obj EINA_UNUSED, Evas_Object_Protec
141 obj->cur.geometry.x + x, 141 obj->cur.geometry.x + x,
142 obj->cur.geometry.y + y, 142 obj->cur.geometry.y + y,
143 obj->cur.geometry.w, 143 obj->cur.geometry.w,
144 obj->cur.geometry.h); 144 obj->cur.geometry.h,
145 do_async);
145//// obj->cur.cache.geometry.x + x, 146//// obj->cur.cache.geometry.x + x,
146//// obj->cur.cache.geometry.y + y, 147//// obj->cur.cache.geometry.y + y,
147//// obj->cur.cache.geometry.w, 148//// obj->cur.cache.geometry.w,
diff --git a/src/lib/evas/canvas/evas_object_smart.c b/src/lib/evas/canvas/evas_object_smart.c
index 9502aef..86a0f78 100644
--- a/src/lib/evas/canvas/evas_object_smart.c
+++ b/src/lib/evas/canvas/evas_object_smart.c
@@ -41,7 +41,7 @@ struct _Evas_Smart_Callback
41/* private methods for smart objects */ 41/* private methods for smart objects */
42static void evas_object_smart_callbacks_clear(Evas_Object *eo_obj); 42static void evas_object_smart_callbacks_clear(Evas_Object *eo_obj);
43static void evas_object_smart_init(Evas_Object *eo_obj); 43static void evas_object_smart_init(Evas_Object *eo_obj);
44static void evas_object_smart_render(Evas_Object *eo_obj, Evas_Object_Protected_Data *obj, void *output, void *context, void *surface, int x, int y); 44static void evas_object_smart_render(Evas_Object *eo_obj, Evas_Object_Protected_Data *obj, void *output, void *context, void *surface, int x, int y, Eina_Bool do_async);
45static void evas_object_smart_render_pre(Evas_Object *eo_obj, Evas_Object_Protected_Data *obj); 45static void evas_object_smart_render_pre(Evas_Object *eo_obj, Evas_Object_Protected_Data *obj);
46static void evas_object_smart_render_post(Evas_Object *eo_obj, Evas_Object_Protected_Data *obj); 46static void evas_object_smart_render_post(Evas_Object *eo_obj, Evas_Object_Protected_Data *obj);
47 47
@@ -1322,7 +1322,7 @@ evas_object_smart_init(Evas_Object *eo_obj)
1322} 1322}
1323 1323
1324static void 1324static void
1325evas_object_smart_render(Evas_Object *eo_obj EINA_UNUSED, Evas_Object_Protected_Data *obj EINA_UNUSED, void *output EINA_UNUSED, void *context EINA_UNUSED, void *surface EINA_UNUSED, int x EINA_UNUSED, int y EINA_UNUSED) 1325evas_object_smart_render(Evas_Object *eo_obj EINA_UNUSED, Evas_Object_Protected_Data *obj EINA_UNUSED, void *output EINA_UNUSED, void *context EINA_UNUSED, void *surface EINA_UNUSED, int x EINA_UNUSED, int y EINA_UNUSED, Eina_Bool do_async EINA_UNUSED)
1326{ 1326{
1327 return; 1327 return;
1328} 1328}
diff --git a/src/lib/evas/canvas/evas_object_text.c b/src/lib/evas/canvas/evas_object_text.c
index 0c410d1..2f0f229 100644
--- a/src/lib/evas/canvas/evas_object_text.c
+++ b/src/lib/evas/canvas/evas_object_text.c
@@ -66,7 +66,7 @@ struct _Evas_Object_Text_Item
66 66
67/* private methods for text objects */ 67/* private methods for text objects */
68static void evas_object_text_init(Evas_Object *eo_obj); 68static void evas_object_text_init(Evas_Object *eo_obj);
69static void evas_object_text_render(Evas_Object *eo_obj, Evas_Object_Protected_Data *obj, void *output, void *context, void *surface, int x, int y); 69static void evas_object_text_render(Evas_Object *eo_obj, Evas_Object_Protected_Data *obj, void *output, void *context, void *surface, int x, int y, Eina_Bool do_async);
70static void evas_object_text_free(Evas_Object *eo_obj, Evas_Object_Protected_Data *obj); 70static void evas_object_text_free(Evas_Object *eo_obj, Evas_Object_Protected_Data *obj);
71static void evas_object_text_render_pre(Evas_Object *eo_obj, Evas_Object_Protected_Data *obj); 71static void evas_object_text_render_pre(Evas_Object *eo_obj, Evas_Object_Protected_Data *obj);
72static void evas_object_text_render_post(Evas_Object *eo_obj, Evas_Object_Protected_Data *obj); 72static void evas_object_text_render_post(Evas_Object *eo_obj, Evas_Object_Protected_Data *obj);
@@ -1886,7 +1886,7 @@ evas_object_text_free(Evas_Object *eo_obj, Evas_Object_Protected_Data *obj)
1886} 1886}
1887 1887
1888static void 1888static void
1889evas_object_text_render(Evas_Object *eo_obj, Evas_Object_Protected_Data *obj, void *output, void *context, void *surface, int x, int y) 1889evas_object_text_render(Evas_Object *eo_obj, Evas_Object_Protected_Data *obj, void *output, void *context, void *surface, int x, int y, Eina_Bool do_async)
1890{ 1890{
1891 int i, j; 1891 int i, j;
1892 Evas_Object_Text *o = eo_data_get(eo_obj, MY_CLASS); 1892 Evas_Object_Text *o = eo_data_get(eo_obj, MY_CLASS);
@@ -1977,7 +1977,8 @@ evas_object_text_render(Evas_Object *eo_obj, Evas_Object_Protected_Data *obj, vo
1977 obj->cur.geometry.h, \ 1977 obj->cur.geometry.h, \
1978 obj->cur.geometry.w, \ 1978 obj->cur.geometry.w, \
1979 obj->cur.geometry.h, \ 1979 obj->cur.geometry.h, \
1980 &it->text_props); 1980 &it->text_props, \
1981 do_async);
1981 1982
1982 /* shadows */ 1983 /* shadows */
1983 shad_dst = shad_sz = dx = dy = haveshad = 0; 1984 shad_dst = shad_sz = dx = dy = haveshad = 0;
diff --git a/src/lib/evas/canvas/evas_object_textblock.c b/src/lib/evas/canvas/evas_object_textblock.c
index fa7cad7..8ce1a6d 100644
--- a/src/lib/evas/canvas/evas_object_textblock.c
+++ b/src/lib/evas/canvas/evas_object_textblock.c
@@ -506,7 +506,7 @@ struct _Evas_Object_Textblock
506 506
507/* private methods for textblock objects */ 507/* private methods for textblock objects */
508static void evas_object_textblock_init(Evas_Object *eo_obj); 508static void evas_object_textblock_init(Evas_Object *eo_obj);
509static void evas_object_textblock_render(Evas_Object *eo_obj, Evas_Object_Protected_Data *obj, void *output, void *context, void *surface, int x, int y); 509static void evas_object_textblock_render(Evas_Object *eo_obj, Evas_Object_Protected_Data *obj, void *output, void *context, void *surface, int x, int y, Eina_Bool do_async);
510static void evas_object_textblock_free(Evas_Object *eo_obj); 510static void evas_object_textblock_free(Evas_Object *eo_obj);
511static void evas_object_textblock_render_pre(Evas_Object *eo_obj, Evas_Object_Protected_Data *obj); 511static void evas_object_textblock_render_pre(Evas_Object *eo_obj, Evas_Object_Protected_Data *obj);
512static void evas_object_textblock_render_post(Evas_Object *eo_obj, Evas_Object_Protected_Data *obj); 512static void evas_object_textblock_render_post(Evas_Object *eo_obj, Evas_Object_Protected_Data *obj);
@@ -9608,7 +9608,7 @@ evas_object_textblock_free(Evas_Object *eo_obj)
9608 9608
9609 9609
9610static void 9610static void
9611evas_object_textblock_render(Evas_Object *eo_obj, Evas_Object_Protected_Data *obj, void *output, void *context, void *surface, int x, int y) 9611evas_object_textblock_render(Evas_Object *eo_obj, Evas_Object_Protected_Data *obj, void *output, void *context, void *surface, int x, int y, Eina_Bool do_async)
9612{ 9612{
9613 Evas_Object_Textblock_Paragraph *par, *start = NULL; 9613 Evas_Object_Textblock_Paragraph *par, *start = NULL;
9614 Evas_Object_Textblock_Line *ln; 9614 Evas_Object_Textblock_Line *ln;
@@ -9703,7 +9703,7 @@ evas_object_textblock_render(Evas_Object *eo_obj, Evas_Object_Protected_Data *ob
9703 obj->cur.geometry.x + ln->x + ti->parent.x + x + (ox), \ 9703 obj->cur.geometry.x + ln->x + ti->parent.x + x + (ox), \
9704 obj->cur.geometry.y + ln->par->y + ln->y + yoff + y + (oy), \ 9704 obj->cur.geometry.y + ln->par->y + ln->y + yoff + y + (oy), \
9705 ti->parent.w, ti->parent.h, ti->parent.w, ti->parent.h, \ 9705 ti->parent.w, ti->parent.h, ti->parent.w, ti->parent.h, \
9706 &ti->text_props); 9706 &ti->text_props, do_async);
9707 9707
9708 /* backing */ 9708 /* backing */
9709#define DRAW_RECT(ox, oy, ow, oh, or, og, ob, oa) \ 9709#define DRAW_RECT(ox, oy, ow, oh, or, og, ob, oa) \
@@ -9721,7 +9721,8 @@ evas_object_textblock_render(Evas_Object *eo_obj, Evas_Object_Protected_Data *ob
9721 obj->cur.geometry.x + ln->x + x + (ox), \ 9721 obj->cur.geometry.x + ln->x + x + (ox), \
9722 obj->cur.geometry.y + ln->par->y + ln->y + y + (oy), \ 9722 obj->cur.geometry.y + ln->par->y + ln->y + y + (oy), \
9723 (ow), \ 9723 (ow), \
9724 (oh)); \ 9724 (oh), \
9725 do_async); \
9725 } \ 9726 } \
9726 while (0) 9727 while (0)
9727 9728
diff --git a/src/lib/evas/canvas/evas_object_textgrid.c b/src/lib/evas/canvas/evas_object_textgrid.c
index fcb6892..c82122e 100644
--- a/src/lib/evas/canvas/evas_object_textgrid.c
+++ b/src/lib/evas/canvas/evas_object_textgrid.c
@@ -114,7 +114,7 @@ struct _Evas_Object_Textgrid_Line
114 114
115/* private methods for textgrid objects */ 115/* private methods for textgrid objects */
116static void evas_object_textgrid_init(Evas_Object *eo_obj); 116static void evas_object_textgrid_init(Evas_Object *eo_obj);
117static void evas_object_textgrid_render(Evas_Object *eo_obj, Evas_Object_Protected_Data *obj, void *output, void *context, void *surface, int x, int y); 117static void evas_object_textgrid_render(Evas_Object *eo_obj, Evas_Object_Protected_Data *obj, void *output, void *context, void *surface, int x, int y, Eina_Bool do_async);
118static void evas_object_textgrid_render_pre(Evas_Object *eo_obj, Evas_Object_Protected_Data *obj); 118static void evas_object_textgrid_render_pre(Evas_Object *eo_obj, Evas_Object_Protected_Data *obj);
119static void evas_object_textgrid_render_post(Evas_Object *eo_obj, Evas_Object_Protected_Data *obj); 119static void evas_object_textgrid_render_post(Evas_Object *eo_obj, Evas_Object_Protected_Data *obj);
120 120
@@ -551,7 +551,7 @@ evas_object_textgrid_row_line_append(Evas_Object_Textgrid_Row *row, int x, int w
551} 551}
552 552
553static void 553static void
554evas_object_textgrid_render(Evas_Object *eo_obj, Evas_Object_Protected_Data *obj, void *output, void *context, void *surface, int x, int y) 554evas_object_textgrid_render(Evas_Object *eo_obj, Evas_Object_Protected_Data *obj, void *output, void *context, void *surface, int x, int y, Eina_Bool do_async)
555{ 555{
556 Evas_Textgrid_Cell *cells; 556 Evas_Textgrid_Cell *cells;
557 Evas_Object_Textgrid_Color *c; 557 Evas_Object_Textgrid_Color *c;
@@ -670,7 +670,8 @@ evas_object_textgrid_render(Evas_Object *eo_obj, Evas_Object_Protected_Data *obj
670 row->rects[xx].b, row->rects[xx].a); 670 row->rects[xx].b, row->rects[xx].a);
671 ENFN->rectangle_draw(output, context, surface, 671 ENFN->rectangle_draw(output, context, surface,
672 xp + row->rects[xx].x, yp, 672 xp + row->rects[xx].x, yp,
673 row->rects[xx].w, h); 673 row->rects[xx].w, h,
674 do_async);
674 } 675 }
675 for (xx = 0; xx < row->texts_num; xx++) 676 for (xx = 0; xx < row->texts_num; xx++)
676 { 677 {
@@ -680,7 +681,8 @@ evas_object_textgrid_render(Evas_Object *eo_obj, Evas_Object_Protected_Data *obj
680 ENFN->font_draw(output, context, surface, o->font, 681 ENFN->font_draw(output, context, surface, o->font,
681 xp + row->texts[xx].x, yp + o->max_ascent, 682 xp + row->texts[xx].x, yp + o->max_ascent,
682 ww, hh, ww, hh, 683 ww, hh, ww, hh,
683 evas_object_textgrid_textprop_int_to(o, row->texts[xx].text_props)); 684 evas_object_textgrid_textprop_int_to(o, row->texts[xx].text_props),
685 do_async);
684 } 686 }
685 for (xx = 0; xx < row->lines_num; xx++) 687 for (xx = 0; xx < row->lines_num; xx++)
686 { 688 {
@@ -689,7 +691,8 @@ evas_object_textgrid_render(Evas_Object *eo_obj, Evas_Object_Protected_Data *obj
689 row->lines[xx].b, row->lines[xx].a); 691 row->lines[xx].b, row->lines[xx].a);
690 ENFN->rectangle_draw(output, context, surface, 692 ENFN->rectangle_draw(output, context, surface,
691 xp + row->lines[xx].x, yp + row->lines[xx].y, 693 xp + row->lines[xx].x, yp + row->lines[xx].y,
692 row->lines[xx].w, 1); 694 row->lines[xx].w, 1,
695 do_async);
693 } 696 }
694 yp += h; 697 yp += h;
695 } 698 }
diff --git a/src/lib/evas/canvas/evas_render.c b/src/lib/evas/canvas/evas_render.c
index eb4f823..7e1f80b 100644
--- a/src/lib/evas/canvas/evas_render.c
+++ b/src/lib/evas/canvas/evas_render.c
@@ -49,8 +49,15 @@ rend_dbg(const char *txt)
49#define RDI(x) 49#define RDI(x)
50#endif 50#endif
51 51
52static Eina_List * 52typedef struct _Render_Updates Render_Updates;
53evas_render_updates_internal(Evas *eo_e, unsigned char make_updates, unsigned char do_draw); 53struct _Render_Updates
54{
55 void *surface;
56 Eina_Rectangle *area;
57};
58
59static Eina_Bool
60evas_render_updates_internal(Evas *eo_e, unsigned char make_updates, unsigned char do_draw, Evas_Render_Done_Cb done_func, void *done_data, Eina_Bool do_async);
54 61
55EAPI void 62EAPI void
56evas_damage_rectangle_add(Evas *eo_e, int x, int y, int w, int h) 63evas_damage_rectangle_add(Evas *eo_e, int x, int y, int w, int h)
@@ -870,7 +877,7 @@ evas_render_mapped(Evas_Public_Data *e, Evas_Object *eo_obj,
870#ifdef REND_DBG 877#ifdef REND_DBG
871 , int level 878 , int level
872#endif 879#endif
873 ) 880 , Eina_Bool do_async)
874{ 881{
875 void *ctx; 882 void *ctx;
876 Evas_Object_Protected_Data *obj2; 883 Evas_Object_Protected_Data *obj2;
@@ -1007,7 +1014,8 @@ evas_render_mapped(Evas_Public_Data *e, Evas_Object *eo_obj,
1007 obj->map.surface, 1014 obj->map.surface,
1008 0, 0, 1015 0, 0,
1009 obj->map.surface_w, 1016 obj->map.surface_w,
1010 obj->map.surface_h); 1017 obj->map.surface_h,
1018 EINA_FALSE);
1011 e->engine.func->context_free(e->engine.data.output, ctx); 1019 e->engine.func->context_free(e->engine.data.output, ctx);
1012 } 1020 }
1013 ctx = e->engine.func->context_new(e->engine.data.output); 1021 ctx = e->engine.func->context_new(e->engine.data.output);
@@ -1027,7 +1035,7 @@ evas_render_mapped(Evas_Public_Data *e, Evas_Object *eo_obj,
1027#ifdef REND_DBG 1035#ifdef REND_DBG
1028 , level + 1 1036 , level + 1
1029#endif 1037#endif
1030 ); 1038 , do_async);
1031 } 1039 }
1032 } 1040 }
1033 else 1041 else
@@ -1045,7 +1053,8 @@ evas_render_mapped(Evas_Public_Data *e, Evas_Object *eo_obj,
1045 e->engine.func->context_clip_set(e->engine.data.output, 1053 e->engine.func->context_clip_set(e->engine.data.output,
1046 ctx, x, y, w, h); 1054 ctx, x, y, w, h);
1047 obj->func->render(eo_obj, obj, e->engine.data.output, ctx, 1055 obj->func->render(eo_obj, obj, e->engine.data.output, ctx,
1048 obj->map.surface, off_x2, off_y2); 1056 obj->map.surface, off_x2, off_y2,
1057 EINA_FALSE);
1049 } 1058 }
1050 e->engine.func->context_free(e->engine.data.output, ctx); 1059 e->engine.func->context_free(e->engine.data.output, ctx);
1051 rendered = EINA_TRUE; 1060 rendered = EINA_TRUE;
@@ -1107,7 +1116,7 @@ evas_render_mapped(Evas_Public_Data *e, Evas_Object *eo_obj,
1107 obj->layer->evas->engine.func->image_map_draw 1116 obj->layer->evas->engine.func->image_map_draw
1108 (e->engine.data.output, context, surface, 1117 (e->engine.data.output, context, surface,
1109 obj->map.surface, obj->spans, 1118 obj->map.surface, obj->spans,
1110 obj->cur.map->smooth, 0); 1119 obj->cur.map->smooth, 0, do_async);
1111 } 1120 }
1112 // FIXME: needs to cache these maps and 1121 // FIXME: needs to cache these maps and
1113 // keep them only rendering updates 1122 // keep them only rendering updates
@@ -1140,7 +1149,7 @@ evas_render_mapped(Evas_Public_Data *e, Evas_Object *eo_obj,
1140#ifdef REND_DBG 1149#ifdef REND_DBG
1141 , level + 1 1150 , level + 1
1142#endif 1151#endif
1143 ); 1152 , do_async);
1144 } 1153 }
1145 } 1154 }
1146 else 1155 else
@@ -1185,7 +1194,7 @@ evas_render_mapped(Evas_Public_Data *e, Evas_Object *eo_obj,
1185 ctx, x, y, w, h); 1194 ctx, x, y, w, h);
1186 } 1195 }
1187 obj->func->render(eo_obj, obj, e->engine.data.output, ctx, 1196 obj->func->render(eo_obj, obj, e->engine.data.output, ctx,
1188 surface, off_x, off_y); 1197 surface, off_x, off_y, EINA_FALSE);
1189 } 1198 }
1190 e->engine.func->context_free(e->engine.data.output, ctx); 1199 e->engine.func->context_free(e->engine.data.output, ctx);
1191 } 1200 }
@@ -1217,7 +1226,7 @@ evas_render_mapped(Evas_Public_Data *e, Evas_Object *eo_obj,
1217 RDI(level); 1226 RDI(level);
1218 RD(" draw normal obj\n"); 1227 RD(" draw normal obj\n");
1219 obj->func->render(eo_obj, obj, e->engine.data.output, context, surface, 1228 obj->func->render(eo_obj, obj, e->engine.data.output, context, surface,
1220 off_x, off_y); 1229 off_x, off_y, do_async);
1221 } 1230 }
1222 if (obj->changed_map) clean_them = EINA_TRUE; 1231 if (obj->changed_map) clean_them = EINA_TRUE;
1223 } 1232 }
@@ -1607,7 +1616,7 @@ evas_render_updates_internal(Evas *eo_e,
1607 e->engine.func->rectangle_draw(e->engine.data.output, 1616 e->engine.func->rectangle_draw(e->engine.data.output,
1608 e->engine.data.context, 1617 e->engine.data.context,
1609 surface, 1618 surface,
1610 cx, cy, cw, ch); 1619 cx, cy, cw, ch, do_async);
1611 e->engine.func->context_cutout_clear(e->engine.data.output, 1620 e->engine.func->context_cutout_clear(e->engine.data.output,
1612 e->engine.data.context); 1621 e->engine.data.context);
1613 e->engine.func->context_clip_unset(e->engine.data.output, 1622 e->engine.func->context_clip_unset(e->engine.data.output,
diff --git a/src/lib/evas/include/evas_common.h b/src/lib/evas/include/evas_common.h
index 5b231ac..15c1d3a 100644
--- a/src/lib/evas/include/evas_common.h
+++ b/src/lib/evas/include/evas_common.h
@@ -428,6 +428,9 @@ typedef void (*Gfx_Func_Copy) (DATA32 *src, DATA32 *dst, int len);
428 428
429typedef void (*Gfx_Func_Convert) (DATA32 *src, DATA8 *dst, int src_jump, int dst_jump, int w, int h, int dith_x, int dith_y, DATA8 *pal); 429typedef void (*Gfx_Func_Convert) (DATA32 *src, DATA8 *dst, int src_jump, int dst_jump, int w, int h, int dith_x, int dith_y, DATA8 *pal);
430 430
431
432typedef void (*Evas_Render_Done_Cb)(void *);
433
431#include "../cache/evas_cache.h" 434#include "../cache/evas_cache.h"
432#ifdef EVAS_CSERVE2 435#ifdef EVAS_CSERVE2
433#include "../cache2/evas_cache2.h" 436#include "../cache2/evas_cache2.h"
diff --git a/src/lib/evas/include/evas_private.h b/src/lib/evas/include/evas_private.h
index 8f68171..56ddc4c 100644
--- a/src/lib/evas/include/evas_private.h
+++ b/src/lib/evas/include/evas_private.h
@@ -795,13 +795,13 @@ struct _Evas_Func
795 void (*context_render_op_set) (void *data, void *context, int render_op); 795 void (*context_render_op_set) (void *data, void *context, int render_op);
796 int (*context_render_op_get) (void *data, void *context); 796 int (*context_render_op_get) (void *data, void *context);
797 797
798 void (*rectangle_draw) (void *data, void *context, void *surface, int x, int y, int w, int h); 798 void (*rectangle_draw) (void *data, void *context, void *surface, int x, int y, int w, int h, Eina_Bool do_async);
799 799
800 void (*line_draw) (void *data, void *context, void *surface, int x1, int y1, int x2, int y2); 800 void (*line_draw) (void *data, void *context, void *surface, int x1, int y1, int x2, int y2, Eina_Bool do_async);
801 801
802 void *(*polygon_point_add) (void *data, void *context, void *polygon, int x, int y); 802 void *(*polygon_point_add) (void *data, void *context, void *polygon, int x, int y);
803 void *(*polygon_points_clear) (void *data, void *context, void *polygon); 803 void *(*polygon_points_clear) (void *data, void *context, void *polygon);
804 void (*polygon_draw) (void *data, void *context, void *surface, void *polygon, int x, int y); 804 void (*polygon_draw) (void *data, void *context, void *surface, void *polygon, int x, int y, Eina_Bool do_async);
805 805
806 void *(*image_load) (void *data, const char *file, const char *key, int *error, Evas_Image_Load_Opts *lo); 806 void *(*image_load) (void *data, const char *file, const char *key, int *error, Evas_Image_Load_Opts *lo);
807 void *(*image_new_from_data) (void *data, int w, int h, DATA32 *image_data, int alpha, int cspace); 807 void *(*image_new_from_data) (void *data, int w, int h, DATA32 *image_data, int alpha, int cspace);
@@ -819,7 +819,7 @@ struct _Evas_Func
819 int (*image_alpha_get) (void *data, void *image); 819 int (*image_alpha_get) (void *data, void *image);
820 void *(*image_border_set) (void *data, void *image, int l, int r, int t, int b); 820 void *(*image_border_set) (void *data, void *image, int l, int r, int t, int b);
821 void (*image_border_get) (void *data, void *image, int *l, int *r, int *t, int *b); 821 void (*image_border_get) (void *data, void *image, int *l, int *r, int *t, int *b);
822 void (*image_draw) (void *data, void *context, void *surface, void *image, int src_x, int src_y, int src_w, int src_h, int dst_x, int dst_y, int dst_w, int dst_h, int smooth); 822 void (*image_draw) (void *data, void *context, void *surface, void *image, int src_x, int src_y, int src_w, int src_h, int dst_x, int dst_y, int dst_w, int dst_h, int smooth, Eina_Bool do_async);
823 char *(*image_comment_get) (void *data, void *image, char *key); 823 char *(*image_comment_get) (void *data, void *image, char *key);
824 char *(*image_format_get) (void *data, void *image); 824 char *(*image_format_get) (void *data, void *image);
825 void (*image_colorspace_set) (void *data, void *image, int cspace); 825 void (*image_colorspace_set) (void *data, void *image, int cspace);
@@ -847,7 +847,7 @@ struct _Evas_Func
847 int (*font_v_advance_get) (void *data, Evas_Font_Set *font, const Evas_Text_Props *intl_props); 847 int (*font_v_advance_get) (void *data, Evas_Font_Set *font, const Evas_Text_Props *intl_props);
848 int (*font_char_coords_get) (void *data, Evas_Font_Set *font, const Evas_Text_Props *intl_props, int pos, int *cx, int *cy, int *cw, int *ch); 848 int (*font_char_coords_get) (void *data, Evas_Font_Set *font, const Evas_Text_Props *intl_props, int pos, int *cx, int *cy, int *cw, int *ch);
849 int (*font_char_at_coords_get) (void *data, Evas_Font_Set *font, const Evas_Text_Props *intl_props, int x, int y, int *cx, int *cy, int *cw, int *ch); 849 int (*font_char_at_coords_get) (void *data, Evas_Font_Set *font, const Evas_Text_Props *intl_props, int x, int y, int *cx, int *cy, int *cw, int *ch);
850 void (*font_draw) (void *data, void *context, void *surface, Evas_Font_Set *font, int x, int y, int w, int h, int ow, int oh, Evas_Text_Props *intl_props); 850 void (*font_draw) (void *data, void *context, void *surface, Evas_Font_Set *font, int x, int y, int w, int h, int ow, int oh, Evas_Text_Props *intl_props, Eina_Bool do_async);
851 851
852 void (*font_cache_flush) (void *data); 852 void (*font_cache_flush) (void *data);
853 void (*font_cache_set) (void *data, int bytes); 853 void (*font_cache_set) (void *data, int bytes);
@@ -864,7 +864,7 @@ struct _Evas_Func
864 int (*image_scale_hint_get) (void *data, void *image); 864 int (*image_scale_hint_get) (void *data, void *image);
865 int (*font_last_up_to_pos) (void *data, Evas_Font_Set *font, const Evas_Text_Props *intl_props, int x, int y); 865 int (*font_last_up_to_pos) (void *data, Evas_Font_Set *font, const Evas_Text_Props *intl_props, int x, int y);
866 866
867 void (*image_map_draw) (void *data, void *context, void *surface, void *image, RGBA_Map *m, int smooth, int level); 867 void (*image_map_draw) (void *data, void *context, void *surface, void *image, RGBA_Map *m, int smooth, int level, Eina_Bool do_async);
868 void *(*image_map_surface_new) (void *data, int w, int h, int alpha); 868 void *(*image_map_surface_new) (void *data, int w, int h, int alpha);
869 void (*image_map_surface_free) (void *data, void *surface); 869 void (*image_map_surface_free) (void *data, void *surface);
870 void (*image_map_clean) (void *data, RGBA_Map *m); 870 void (*image_map_clean) (void *data, RGBA_Map *m);
@@ -1207,7 +1207,7 @@ Eina_Bool evas_render_mapped(Evas_Public_Data *e, Evas_Object *obj,
1207#ifdef REND_DBG 1207#ifdef REND_DBG
1208 , int level 1208 , int level
1209#endif 1209#endif
1210 ); 1210 , Eina_Bool do_async);
1211void evas_render_invalidate(Evas *e); 1211void evas_render_invalidate(Evas *e);
1212void evas_render_object_recalc(Evas_Object *obj); 1212void evas_render_object_recalc(Evas_Object *obj);
1213 1213