diff options
Diffstat (limited to 'src/lib')
-rw-r--r-- | src/lib/evas/canvas/evas_object_image.c | 59 | ||||
-rw-r--r-- | src/lib/evas/canvas/evas_object_line.c | 7 | ||||
-rw-r--r-- | src/lib/evas/canvas/evas_object_polygon.c | 7 | ||||
-rw-r--r-- | src/lib/evas/canvas/evas_object_rectangle.c | 7 | ||||
-rw-r--r-- | src/lib/evas/canvas/evas_object_smart.c | 4 | ||||
-rw-r--r-- | src/lib/evas/canvas/evas_object_text.c | 7 | ||||
-rw-r--r-- | src/lib/evas/canvas/evas_object_textblock.c | 9 | ||||
-rw-r--r-- | src/lib/evas/canvas/evas_object_textgrid.c | 13 | ||||
-rw-r--r-- | src/lib/evas/canvas/evas_render.c | 31 | ||||
-rw-r--r-- | src/lib/evas/include/evas_common.h | 3 | ||||
-rw-r--r-- | src/lib/evas/include/evas_private.h | 14 |
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 | ||
112 | static void evas_object_image_init(Evas_Object *eo_obj); | 112 | static void evas_object_image_init(Evas_Object *eo_obj); |
113 | static void evas_object_image_new(Evas_Object *eo_obj); | 113 | static void evas_object_image_new(Evas_Object *eo_obj); |
114 | static void evas_object_image_render(Evas_Object *eo_obj, Evas_Object_Protected_Data *obj, void *output, void *context, void *surface, int x, int y); | 114 | static 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); |
115 | static void evas_object_image_free(Evas_Object *eo_obj, Evas_Object_Protected_Data *obj); | 115 | static void evas_object_image_free(Evas_Object *eo_obj, Evas_Object_Protected_Data *obj); |
116 | static void evas_object_image_render_pre(Evas_Object *eo_obj, Evas_Object_Protected_Data *obj); | 116 | static void evas_object_image_render_pre(Evas_Object *eo_obj, Evas_Object_Protected_Data *obj); |
117 | static void evas_object_image_render_post(Evas_Object *eo_obj, Evas_Object_Protected_Data *obj); | 117 | static 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 | ||
133 | static void _proxy_unset(Evas_Object *proxy); | 133 | static void _proxy_unset(Evas_Object *proxy); |
134 | static void _proxy_set(Evas_Object *proxy, Evas_Object *src); | 134 | static void _proxy_set(Evas_Object *proxy, Evas_Object *src); |
135 | static void _proxy_error(Evas_Object *proxy, void *context, void *output, void *surface, int x, int y); | 135 | static void _proxy_error(Evas_Object *proxy, void *context, void *output, void *surface, int x, int y, Eina_Bool do_async); |
136 | 136 | ||
137 | static void _cleanup_tmpf(Evas_Object *eo_obj); | 137 | static 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 | */ |
2745 | static void | 2748 | static 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 | */ |
2810 | static void | 2814 | static 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 | ||
3132 | static void | 3137 | static void |
3133 | evas_object_image_render(Evas_Object *eo_obj, Evas_Object_Protected_Data *obj, void *output, void *context, void *surface, int x, int y) | 3138 | 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) |
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 */ |
33 | static void evas_object_line_init(Evas_Object *eo_obj); | 33 | static void evas_object_line_init(Evas_Object *eo_obj); |
34 | static void evas_object_line_render(Evas_Object *eo_obj, Evas_Object_Protected_Data *obj, void *output, void *context, void *surface, int x, int y); | 34 | static 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); |
35 | static void evas_object_line_render_pre(Evas_Object *eo_obj, Evas_Object_Protected_Data *obj); | 35 | static void evas_object_line_render_pre(Evas_Object *eo_obj, Evas_Object_Protected_Data *obj); |
36 | static void evas_object_line_render_post(Evas_Object *eo_obj, Evas_Object_Protected_Data *obj); | 36 | static 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 | ||
255 | static void | 255 | static void |
256 | evas_object_line_render(Evas_Object *eo_obj, Evas_Object_Protected_Data *obj, void *output, void *context, void *surface, int x, int y) | 256 | 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) |
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 | ||
283 | static void | 284 | static 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 */ |
34 | static void evas_object_polygon_init(Evas_Object *eo_obj); | 34 | static void evas_object_polygon_init(Evas_Object *eo_obj); |
35 | static void evas_object_polygon_render(Evas_Object *eo_obj, Evas_Object_Protected_Data *obj, void *output, void *context, void *surface, int x, int y); | 35 | static 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); |
36 | static void evas_object_polygon_free(Evas_Object *eo_obj, Evas_Object_Protected_Data *obj); | 36 | static void evas_object_polygon_free(Evas_Object *eo_obj, Evas_Object_Protected_Data *obj); |
37 | static void evas_object_polygon_render_pre(Evas_Object *eo_obj, Evas_Object_Protected_Data *obj); | 37 | static void evas_object_polygon_render_pre(Evas_Object *eo_obj, Evas_Object_Protected_Data *obj); |
38 | static void evas_object_polygon_render_post(Evas_Object *eo_obj, Evas_Object_Protected_Data *obj); | 38 | static 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 | ||
299 | static void | 299 | static void |
300 | evas_object_polygon_render(Evas_Object *eo_obj, Evas_Object_Protected_Data *obj, void *output, void *context, void *surface, int x, int y) | 300 | 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) |
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 | ||
341 | static void | 342 | static 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 */ |
24 | static void evas_object_rectangle_init(Evas_Object *eo_obj); | 24 | static void evas_object_rectangle_init(Evas_Object *eo_obj); |
25 | static void evas_object_rectangle_render(Evas_Object *eo_obj, Evas_Object_Protected_Data *obj, void *output, void *context, void *surface, int x, int y); | 25 | static 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); |
26 | static void evas_object_rectangle_render_pre(Evas_Object *eo_obj, Evas_Object_Protected_Data *obj); | 26 | static void evas_object_rectangle_render_pre(Evas_Object *eo_obj, Evas_Object_Protected_Data *obj); |
27 | static void evas_object_rectangle_render_post(Evas_Object *eo_obj, Evas_Object_Protected_Data *obj); | 27 | static 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 | ||
124 | static void | 124 | static void |
125 | evas_object_rectangle_render(Evas_Object *eo_obj EINA_UNUSED, Evas_Object_Protected_Data *obj, void *output, void *context, void *surface, int x, int y) | 125 | evas_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 */ |
42 | static void evas_object_smart_callbacks_clear(Evas_Object *eo_obj); | 42 | static void evas_object_smart_callbacks_clear(Evas_Object *eo_obj); |
43 | static void evas_object_smart_init(Evas_Object *eo_obj); | 43 | static void evas_object_smart_init(Evas_Object *eo_obj); |
44 | static void evas_object_smart_render(Evas_Object *eo_obj, Evas_Object_Protected_Data *obj, void *output, void *context, void *surface, int x, int y); | 44 | static 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); |
45 | static void evas_object_smart_render_pre(Evas_Object *eo_obj, Evas_Object_Protected_Data *obj); | 45 | static void evas_object_smart_render_pre(Evas_Object *eo_obj, Evas_Object_Protected_Data *obj); |
46 | static void evas_object_smart_render_post(Evas_Object *eo_obj, Evas_Object_Protected_Data *obj); | 46 | static 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 | ||
1324 | static void | 1324 | static void |
1325 | evas_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) | 1325 | evas_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 */ |
68 | static void evas_object_text_init(Evas_Object *eo_obj); | 68 | static void evas_object_text_init(Evas_Object *eo_obj); |
69 | static void evas_object_text_render(Evas_Object *eo_obj, Evas_Object_Protected_Data *obj, void *output, void *context, void *surface, int x, int y); | 69 | static 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); |
70 | static void evas_object_text_free(Evas_Object *eo_obj, Evas_Object_Protected_Data *obj); | 70 | static void evas_object_text_free(Evas_Object *eo_obj, Evas_Object_Protected_Data *obj); |
71 | static void evas_object_text_render_pre(Evas_Object *eo_obj, Evas_Object_Protected_Data *obj); | 71 | static void evas_object_text_render_pre(Evas_Object *eo_obj, Evas_Object_Protected_Data *obj); |
72 | static void evas_object_text_render_post(Evas_Object *eo_obj, Evas_Object_Protected_Data *obj); | 72 | static 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 | ||
1888 | static void | 1888 | static void |
1889 | evas_object_text_render(Evas_Object *eo_obj, Evas_Object_Protected_Data *obj, void *output, void *context, void *surface, int x, int y) | 1889 | 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) |
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 */ |
508 | static void evas_object_textblock_init(Evas_Object *eo_obj); | 508 | static void evas_object_textblock_init(Evas_Object *eo_obj); |
509 | static void evas_object_textblock_render(Evas_Object *eo_obj, Evas_Object_Protected_Data *obj, void *output, void *context, void *surface, int x, int y); | 509 | static 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); |
510 | static void evas_object_textblock_free(Evas_Object *eo_obj); | 510 | static void evas_object_textblock_free(Evas_Object *eo_obj); |
511 | static void evas_object_textblock_render_pre(Evas_Object *eo_obj, Evas_Object_Protected_Data *obj); | 511 | static void evas_object_textblock_render_pre(Evas_Object *eo_obj, Evas_Object_Protected_Data *obj); |
512 | static void evas_object_textblock_render_post(Evas_Object *eo_obj, Evas_Object_Protected_Data *obj); | 512 | static 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 | ||
9610 | static void | 9610 | static void |
9611 | evas_object_textblock_render(Evas_Object *eo_obj, Evas_Object_Protected_Data *obj, void *output, void *context, void *surface, int x, int y) | 9611 | 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) |
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 */ |
116 | static void evas_object_textgrid_init(Evas_Object *eo_obj); | 116 | static void evas_object_textgrid_init(Evas_Object *eo_obj); |
117 | static void evas_object_textgrid_render(Evas_Object *eo_obj, Evas_Object_Protected_Data *obj, void *output, void *context, void *surface, int x, int y); | 117 | static 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); |
118 | static void evas_object_textgrid_render_pre(Evas_Object *eo_obj, Evas_Object_Protected_Data *obj); | 118 | static void evas_object_textgrid_render_pre(Evas_Object *eo_obj, Evas_Object_Protected_Data *obj); |
119 | static void evas_object_textgrid_render_post(Evas_Object *eo_obj, Evas_Object_Protected_Data *obj); | 119 | static 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 | ||
553 | static void | 553 | static void |
554 | evas_object_textgrid_render(Evas_Object *eo_obj, Evas_Object_Protected_Data *obj, void *output, void *context, void *surface, int x, int y) | 554 | 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) |
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 | ||
52 | static Eina_List * | 52 | typedef struct _Render_Updates Render_Updates; |
53 | evas_render_updates_internal(Evas *eo_e, unsigned char make_updates, unsigned char do_draw); | 53 | struct _Render_Updates |
54 | { | ||
55 | void *surface; | ||
56 | Eina_Rectangle *area; | ||
57 | }; | ||
58 | |||
59 | static Eina_Bool | ||
60 | evas_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 | ||
55 | EAPI void | 62 | EAPI void |
56 | evas_damage_rectangle_add(Evas *eo_e, int x, int y, int w, int h) | 63 | evas_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 | ||
429 | typedef 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); | 429 | typedef 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 | |||
432 | typedef 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); |
1211 | void evas_render_invalidate(Evas *e); | 1211 | void evas_render_invalidate(Evas *e); |
1212 | void evas_render_object_recalc(Evas_Object *obj); | 1212 | void evas_render_object_recalc(Evas_Object *obj); |
1213 | 1213 | ||