summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/lib/evas/canvas/evas_filter_mixin.c2
-rw-r--r--src/lib/evas/canvas/evas_object_textblock.c86
-rw-r--r--src/lib/evas/filters/evas_filter.c11
-rw-r--r--src/lib/evas/filters/evas_filter_private.h1
-rw-r--r--src/lib/evas/include/evas_filter.h7
5 files changed, 69 insertions, 38 deletions
diff --git a/src/lib/evas/canvas/evas_filter_mixin.c b/src/lib/evas/canvas/evas_filter_mixin.c
index f4f2265ece..6f43129f60 100644
--- a/src/lib/evas/canvas/evas_filter_mixin.c
+++ b/src/lib/evas/canvas/evas_filter_mixin.c
@@ -278,7 +278,7 @@ evas_filter_object_render(Eo *eo_obj, Evas_Object_Protected_Data *obj,
278 _evas_filter_state_set_internal(pd->data->chain, pd); 278 _evas_filter_state_set_internal(pd->data->chain, pd);
279 } 279 }
280 280
281 filter = evas_filter_context_new(obj->layer->evas, do_async); 281 filter = evas_filter_context_new(obj->layer->evas, do_async, 0);
282 282
283 // Run script 283 // Run script
284 ok = evas_filter_context_program_use(filter, pd->data->chain); 284 ok = evas_filter_context_program_use(filter, pd->data->chain);
diff --git a/src/lib/evas/canvas/evas_object_textblock.c b/src/lib/evas/canvas/evas_object_textblock.c
index 50386490bf..f08bc98c04 100644
--- a/src/lib/evas/canvas/evas_object_textblock.c
+++ b/src/lib/evas/canvas/evas_object_textblock.c
@@ -430,7 +430,6 @@ struct _Evas_Object_Textblock_Item
430 Evas_Coord yoff; /**< y offset. */ 430 Evas_Coord yoff; /**< y offset. */
431 Eina_Bool merge : 1; /**< Indicates whether this item should merge to the previous item or not */ 431 Eina_Bool merge : 1; /**< Indicates whether this item should merge to the previous item or not */
432 Eina_Bool visually_deleted : 1; /**< Indicates whether this item is used in the visual layout or not. */ 432 Eina_Bool visually_deleted : 1; /**< Indicates whether this item is used in the visual layout or not. */
433 Eina_Bool has_gfx_filter : 1; /**< True if this item should be rendered with a gfx filter */
434}; 433};
435 434
436struct _Evas_Object_Textblock_Text_Item 435struct _Evas_Object_Textblock_Text_Item
@@ -439,6 +438,7 @@ struct _Evas_Object_Textblock_Text_Item
439 Evas_Text_Props text_props; /**< Props for this item. */ 438 Evas_Text_Props text_props; /**< Props for this item. */
440 Evas_Coord inset; /**< Inset of text item. */ 439 Evas_Coord inset; /**< Inset of text item. */
441 Evas_Coord x_adjustment; /**< Used to indicate by how much we adjusted sizes */ 440 Evas_Coord x_adjustment; /**< Used to indicate by how much we adjusted sizes */
441 int gfx_filter_id; /**< Index for the filter context in parent.format->gfx_filter */
442}; 442};
443 443
444struct _Evas_Object_Textblock_Format_Item 444struct _Evas_Object_Textblock_Format_Item
@@ -456,15 +456,15 @@ struct _Efl_Canvas_Text_Filter
456{ 456{
457 // FIXME: sources not handled! --> global to the textblock 457 // FIXME: sources not handled! --> global to the textblock
458 // FIXME: data not handled! --> global to the textblock 458 // FIXME: data not handled! --> global to the textblock
459 // FIXME: filters need names! --> global to the textblock
460 Eina_Stringshare *name; 459 Eina_Stringshare *name;
461 Evas_Filter_Context *ctx; 460 Eina_Array *contexts; /* contains Evas_Filter_Context items for each sub text item */
462 Evas_Object *eo_obj; 461 Evas_Object *eo_obj;
463 Evas_Public_Data *evas; 462 Evas_Public_Data *evas;
464 void *dc; /* draw context */ 463 void *dc; /* draw context - no clip, white, no colmul... */
465 struct { 464 struct {
466 int l, r, t, b; 465 int l, r, t, b;
467 } pad; 466 } pad;
467 int pending_ctx;
468 Eina_Bool invalid; 468 Eina_Bool invalid;
469 Eina_Bool async; 469 Eina_Bool async;
470}; 470};
@@ -472,7 +472,8 @@ struct _Efl_Canvas_Text_Filter
472struct _Efl_Canvas_Text_Filter_Post_Render 472struct _Efl_Canvas_Text_Filter_Post_Render
473{ 473{
474 Efl_Canvas_Text_Filter *filter; 474 Efl_Canvas_Text_Filter *filter;
475 Eina_Bool success; 475 int ctx_id;
476 Eina_Bool success;
476}; 477};
477 478
478struct _Efl_Canvas_Text_Filter_Program 479struct _Efl_Canvas_Text_Filter_Program
@@ -504,7 +505,7 @@ struct _Evas_Object_Textblock_Format
504 struct { 505 struct {
505 int l, r; 506 int l, r;
506 } margin; /**< Left and right margin width. */ 507 } margin; /**< Left and right margin width. */
507 Efl_Canvas_Text_Filter *gfx_filter; /**< Gfx Filter to apply to this node */ 508 Efl_Canvas_Text_Filter *gfx_filter; /**< Gfx Filter to apply to the children text items */
508 int ref; /**< Value of the ref. */ 509 int ref; /**< Value of the ref. */
509 int tabstops; /**< Value of the size of the tab character. */ 510 int tabstops; /**< Value of the size of the tab character. */
510 int linesize; /**< Value of the size of the line of the text. */ 511 int linesize; /**< Value of the size of the line of the text. */
@@ -12813,11 +12814,21 @@ evas_object_textblock_free(Evas_Object *eo_obj)
12813} 12814}
12814 12815
12815static void 12816static void
12816_filter_sync_end(Efl_Canvas_Text_Filter *filter, Eina_Bool success) 12817_filter_sync_end(Efl_Canvas_Text_Filter *filter, int id, Eina_Bool success)
12817{ 12818{
12818 evas_filter_context_destroy(filter->ctx); 12819 Evas_Filter_Context *ctx;
12820
12821 EINA_SAFETY_ON_NULL_RETURN(filter->contexts);
12822 ctx = eina_array_data_get(filter->contexts, id);
12823 eina_array_data_set(filter->contexts, id, NULL);
12824 evas_filter_context_destroy(ctx);
12819 filter->invalid = !success; 12825 filter->invalid = !success;
12820 filter->ctx = NULL; 12826
12827 if ((--filter->pending_ctx) == 0)
12828 {
12829 eina_array_free(filter->contexts);
12830 filter->contexts = NULL;
12831 }
12821} 12832}
12822 12833
12823static void 12834static void
@@ -12825,7 +12836,7 @@ _filter_post_render_cb(void *data)
12825{ 12836{
12826 Efl_Canvas_Text_Filter_Post_Render *post_data = data; 12837 Efl_Canvas_Text_Filter_Post_Render *post_data = data;
12827 12838
12828 _filter_sync_end(post_data->filter, post_data->success); 12839 _filter_sync_end(post_data->filter, post_data->ctx_id, post_data->success);
12829 free(post_data); 12840 free(post_data);
12830} 12841}
12831 12842
@@ -12834,18 +12845,20 @@ _filter_cb(Evas_Filter_Context *ctx, void *data, Eina_Bool success)
12834{ 12845{
12835 Efl_Canvas_Text_Filter_Post_Render *post_data; 12846 Efl_Canvas_Text_Filter_Post_Render *post_data;
12836 Efl_Canvas_Text_Filter *filter = data; 12847 Efl_Canvas_Text_Filter *filter = data;
12848 int ctx_id;
12837 12849
12838 EINA_SAFETY_ON_FALSE_RETURN(filter->ctx == ctx); 12850 ctx_id = evas_filter_context_id_get(ctx);
12839 12851
12840 if (!filter->async) 12852 if (!filter->async)
12841 { 12853 {
12842 _filter_sync_end(filter, success); 12854 _filter_sync_end(filter, ctx_id, success);
12843 return; 12855 return;
12844 } 12856 }
12845 12857
12846 post_data = calloc(1, sizeof(*post_data)); 12858 post_data = calloc(1, sizeof(*post_data));
12847 post_data->success = success; 12859 post_data->success = success;
12848 post_data->filter = filter; 12860 post_data->filter = filter;
12861 post_data->ctx_id = ctx_id;
12849 evas_post_render_job_add(filter->evas, _filter_post_render_cb, post_data); 12862 evas_post_render_job_add(filter->evas, _filter_post_render_cb, post_data);
12850} 12863}
12851 12864
@@ -13002,10 +13015,11 @@ evas_object_textblock_render(Evas_Object *eo_obj EINA_UNUSED,
13002 cr = nr; cg = ng; cb = nb; ca = na; \ 13015 cr = nr; cg = ng; cb = nb; ca = na; \
13003 } 13016 }
13004 13017
13005#define DRAW_TEXT_FILTER(gfx_f, ox, oy) do { \ 13018#define DRAW_TEXT_FILTER(gf, gf_id, ox, oy) do { \
13006 evas_filter_input_render(eo_obj, gfx_f->ctx, gfx_f->dc, ti, \ 13019 Evas_Filter_Context *ctx = eina_array_data_get(gf->contexts, gf_id); \
13007 gfx_f->pad.l, gfx_f->pad.r, \ 13020 evas_filter_input_render(eo_obj, ctx, gf->dc, ti, \
13008 gfx_f->pad.t, gfx_f->pad.b, do_async); \ 13021 gf->pad.l, gf->pad.r, \
13022 gf->pad.t, gf->pad.b, do_async); \
13009 } while (0) 13023 } while (0)
13010 13024
13011#define DRAW_TEXT_NOFILTER(ox, oy) do { \ 13025#define DRAW_TEXT_NOFILTER(ox, oy) do { \
@@ -13024,10 +13038,10 @@ evas_object_textblock_render(Evas_Object *eo_obj EINA_UNUSED,
13024#define DRAW_TEXT(ox, oy) do { \ 13038#define DRAW_TEXT(ox, oy) do { \
13025 if (ti->parent.format->font.font) \ 13039 if (ti->parent.format->font.font) \
13026 { \ 13040 { \
13027 if (EINA_LIKELY(!itr->has_gfx_filter)) \ 13041 if (EINA_LIKELY(!ti->gfx_filter_id)) \
13028 DRAW_TEXT_NOFILTER(ox, oy); \ 13042 DRAW_TEXT_NOFILTER(ox, oy); \
13029 else \ 13043 else \
13030 DRAW_TEXT_FILTER(ti->parent.format->gfx_filter, ox, oy); \ 13044 DRAW_TEXT_FILTER(ti->parent.format->gfx_filter, ti->gfx_filter_id - 1, ox, oy); \
13031 } } while(0) 13045 } } while(0)
13032 13046
13033 /* backing */ 13047 /* backing */
@@ -13172,12 +13186,13 @@ evas_object_textblock_render(Evas_Object *eo_obj EINA_UNUSED,
13172 Efl_Canvas_Text_Filter *filter; 13186 Efl_Canvas_Text_Filter *filter;
13173 Evas_Filter_Program *pgm; 13187 Evas_Filter_Program *pgm;
13174 Evas_Filter_Context *ctx; 13188 Evas_Filter_Context *ctx;
13189 int filter_id;
13175 Eina_Bool ok; 13190 Eina_Bool ok;
13176 13191
13177 filter = ti->parent.format->gfx_filter; 13192 filter = ti->parent.format->gfx_filter;
13178 if (!filter->name || filter->invalid) 13193 if (!filter->name || filter->invalid)
13179 { 13194 {
13180 itr->has_gfx_filter = EINA_FALSE; 13195 ti->gfx_filter_id = 0;
13181 continue; 13196 continue;
13182 } 13197 }
13183 13198
@@ -13185,7 +13200,7 @@ evas_object_textblock_render(Evas_Object *eo_obj EINA_UNUSED,
13185 if (!program) 13200 if (!program)
13186 { 13201 {
13187 WRN("Filter '%s' not found on this object", filter->name); 13202 WRN("Filter '%s' not found on this object", filter->name);
13188 itr->has_gfx_filter = EINA_FALSE; 13203 ti->gfx_filter_id = 0;
13189 continue; 13204 continue;
13190 } 13205 }
13191 13206
@@ -13199,18 +13214,22 @@ evas_object_textblock_render(Evas_Object *eo_obj EINA_UNUSED,
13199 { 13214 {
13200 evas_filter_program_del(pgm); 13215 evas_filter_program_del(pgm);
13201 filter->invalid = EINA_TRUE; 13216 filter->invalid = EINA_TRUE;
13202 itr->has_gfx_filter = EINA_FALSE; 13217 ti->gfx_filter_id = 0;
13203 continue; 13218 continue;
13204 } 13219 }
13205 program->pgm = pgm; 13220 program->pgm = pgm;
13206 } 13221 }
13207 13222
13208#ifdef DEBUG 13223#ifdef DEBUG
13209 if (filter->ctx) WRN("Previous filter context was not deleted"); 13224 if (filter->contexts) WRN("Previous filter context was not deleted");
13210#endif 13225#endif
13211 13226
13227 if (!filter->contexts)
13228 filter->contexts = eina_array_new(8);
13229 filter_id = eina_array_count(filter->contexts);
13230
13212 // TODO: sources set 13231 // TODO: sources set
13213 ctx = evas_filter_context_new(obj->layer->evas, do_async); 13232 ctx = evas_filter_context_new(obj->layer->evas, do_async, filter_id);
13214 evas_filter_state_prepare(eo_obj, &state, ti); 13233 evas_filter_state_prepare(eo_obj, &state, ti);
13215 evas_filter_program_state_set(pgm, &state); 13234 evas_filter_program_state_set(pgm, &state);
13216 ok = evas_filter_context_program_use(ctx, pgm); 13235 ok = evas_filter_context_program_use(ctx, pgm);
@@ -13218,10 +13237,12 @@ evas_object_textblock_render(Evas_Object *eo_obj EINA_UNUSED,
13218 { 13237 {
13219 evas_filter_context_destroy(ctx); 13238 evas_filter_context_destroy(ctx);
13220 filter->invalid = EINA_TRUE; 13239 filter->invalid = EINA_TRUE;
13221 itr->has_gfx_filter = EINA_FALSE; 13240 ti->gfx_filter_id = 0;
13222 continue; 13241 continue;
13223 } 13242 }
13224 filter->ctx = ctx; 13243
13244 eina_array_push(filter->contexts, ctx);
13245 ti->gfx_filter_id = filter_id + 1;
13225 13246
13226 ln = ti->parent.ln; 13247 ln = ti->parent.ln;
13227 ENFN->context_color_set(ENDT, context, 255, 255, 255, 255); 13248 ENFN->context_color_set(ENDT, context, 255, 255, 255, 255);
@@ -13243,8 +13264,7 @@ evas_object_textblock_render(Evas_Object *eo_obj EINA_UNUSED,
13243 filter->eo_obj = eo_obj; 13264 filter->eo_obj = eo_obj;
13244 filter->evas = obj->layer->evas; 13265 filter->evas = obj->layer->evas;
13245 filter->async = do_async; 13266 filter->async = do_async;
13246 13267 filter->pending_ctx++;
13247 itr->has_gfx_filter = EINA_TRUE;
13248 13268
13249 ENFN->context_multiplier_unset(ENDT, context); 13269 ENFN->context_multiplier_unset(ENDT, context);
13250 } 13270 }
@@ -13262,7 +13282,7 @@ evas_object_textblock_render(Evas_Object *eo_obj EINA_UNUSED,
13262 yoff = itr->yoff; 13282 yoff = itr->yoff;
13263 ln = itr->ln; 13283 ln = itr->ln;
13264 13284
13265 if (EINA_UNLIKELY(itr->has_gfx_filter)) 13285 if (EINA_UNLIKELY(ti->gfx_filter_id))
13266 context = ti->parent.format->gfx_filter->dc; 13286 context = ti->parent.format->gfx_filter->dc;
13267 13287
13268 shad_dst = shad_sz = dx = dy = haveshad = 0; 13288 shad_dst = shad_sz = dx = dy = haveshad = 0;
@@ -13377,7 +13397,7 @@ evas_object_textblock_render(Evas_Object *eo_obj EINA_UNUSED,
13377 yoff = itr->yoff; 13397 yoff = itr->yoff;
13378 ln = itr->ln; 13398 ln = itr->ln;
13379 13399
13380 if (EINA_UNLIKELY(itr->has_gfx_filter)) 13400 if (EINA_UNLIKELY(ti->gfx_filter_id))
13381 context = ti->parent.format->gfx_filter->dc; 13401 context = ti->parent.format->gfx_filter->dc;
13382 13402
13383 if ((ti->parent.format->style & EVAS_TEXT_STYLE_MASK_BASIC) == EVAS_TEXT_STYLE_GLOW) 13403 if ((ti->parent.format->style & EVAS_TEXT_STYLE_MASK_BASIC) == EVAS_TEXT_STYLE_GLOW)
@@ -13415,7 +13435,7 @@ evas_object_textblock_render(Evas_Object *eo_obj EINA_UNUSED,
13415 yoff = itr->yoff; 13435 yoff = itr->yoff;
13416 ln = itr->ln; 13436 ln = itr->ln;
13417 13437
13418 if (EINA_UNLIKELY(itr->has_gfx_filter)) 13438 if (EINA_UNLIKELY(ti->gfx_filter_id))
13419 context = ti->parent.format->gfx_filter->dc; 13439 context = ti->parent.format->gfx_filter->dc;
13420 13440
13421 if (((ti->parent.format->style & EVAS_TEXT_STYLE_MASK_BASIC) == EVAS_TEXT_STYLE_OUTLINE) || 13441 if (((ti->parent.format->style & EVAS_TEXT_STYLE_MASK_BASIC) == EVAS_TEXT_STYLE_OUTLINE) ||
@@ -13500,7 +13520,7 @@ evas_object_textblock_render(Evas_Object *eo_obj EINA_UNUSED,
13500 { 13520 {
13501 void *fi = _ITEM_TEXT(itr)->text_props.font_instance; 13521 void *fi = _ITEM_TEXT(itr)->text_props.font_instance;
13502 13522
13503 if (EINA_UNLIKELY(itr->has_gfx_filter)) 13523 if (EINA_UNLIKELY(ti->gfx_filter_id))
13504 context = ti->parent.format->gfx_filter->dc; 13524 context = ti->parent.format->gfx_filter->dc;
13505 13525
13506 COLOR_SET(normal); 13526 COLOR_SET(normal);
@@ -13510,10 +13530,10 @@ evas_object_textblock_render(Evas_Object *eo_obj EINA_UNUSED,
13510 13530
13511 context = context_save; 13531 context = context_save;
13512 13532
13513 if (EINA_UNLIKELY(itr->has_gfx_filter)) 13533 if (EINA_UNLIKELY(ti->gfx_filter_id))
13514 { 13534 {
13515 Efl_Canvas_Text_Filter *filter = ti->parent.format->gfx_filter; 13535 Efl_Canvas_Text_Filter *filter = ti->parent.format->gfx_filter;
13516 Evas_Filter_Context *ctx = filter->ctx; 13536 Evas_Filter_Context *ctx = eina_array_data_get(filter->contexts, ti->gfx_filter_id - 1);
13517 13537
13518 evas_filter_context_post_run_callback_set(ctx, _filter_cb, filter); 13538 evas_filter_context_post_run_callback_set(ctx, _filter_cb, filter);
13519 evas_filter_run(ctx); 13539 evas_filter_run(ctx);
diff --git a/src/lib/evas/filters/evas_filter.c b/src/lib/evas/filters/evas_filter.c
index e4008d5600..2b6fbae23c 100644
--- a/src/lib/evas/filters/evas_filter.c
+++ b/src/lib/evas/filters/evas_filter.c
@@ -49,7 +49,7 @@ _evas_image_get(Ector_Buffer *buf)
49/* Main functions */ 49/* Main functions */
50 50
51Evas_Filter_Context * 51Evas_Filter_Context *
52evas_filter_context_new(Evas_Public_Data *evas, Eina_Bool async) 52evas_filter_context_new(Evas_Public_Data *evas, Eina_Bool async, int id)
53{ 53{
54 Evas_Filter_Context *ctx; 54 Evas_Filter_Context *ctx;
55 55
@@ -60,10 +60,19 @@ evas_filter_context_new(Evas_Public_Data *evas, Eina_Bool async)
60 60
61 ctx->evas = evas; 61 ctx->evas = evas;
62 ctx->async = async; 62 ctx->async = async;
63 ctx->context_id = id;
63 64
64 return ctx; 65 return ctx;
65} 66}
66 67
68int
69evas_filter_context_id_get(Evas_Filter_Context *ctx)
70{
71 EINA_SAFETY_ON_NULL_RETURN_VAL(ctx, -1);
72
73 return ctx->context_id;
74}
75
67/* Private function to reset the filter context. Used from parser.c */ 76/* Private function to reset the filter context. Used from parser.c */
68void 77void
69evas_filter_context_clear(Evas_Filter_Context *ctx) 78evas_filter_context_clear(Evas_Filter_Context *ctx)
diff --git a/src/lib/evas/filters/evas_filter_private.h b/src/lib/evas/filters/evas_filter_private.h
index 5ebc981a57..4c54c9615a 100644
--- a/src/lib/evas/filters/evas_filter_private.h
+++ b/src/lib/evas/filters/evas_filter_private.h
@@ -116,6 +116,7 @@ struct _Evas_Filter_Context
116 Eina_List *buffers; // Evas_Filter_Buffer * 116 Eina_List *buffers; // Evas_Filter_Buffer *
117 int last_buffer_id; 117 int last_buffer_id;
118 int last_command_id; 118 int last_command_id;
119 int context_id; // used by textblock
119 120
120 // Variables changing at each run 121 // Variables changing at each run
121 int w, h; // Dimensions of the input/output buffers 122 int w, h; // Dimensions of the input/output buffers
diff --git a/src/lib/evas/include/evas_filter.h b/src/lib/evas/include/evas_filter.h
index 60d946fddc..75a80a92d7 100644
--- a/src/lib/evas/include/evas_filter.h
+++ b/src/lib/evas/include/evas_filter.h
@@ -132,15 +132,16 @@ EAPI Evas_Filter_Program *evas_filter_program_new(const char *name, Eina_Bool in
132EAPI Eina_Bool evas_filter_program_state_set(Evas_Filter_Program *pgm, const Efl_Canvas_Filter_State *state); 132EAPI Eina_Bool evas_filter_program_state_set(Evas_Filter_Program *pgm, const Efl_Canvas_Filter_State *state);
133EAPI Eina_Bool evas_filter_program_parse(Evas_Filter_Program *pgm, const char *str); 133EAPI Eina_Bool evas_filter_program_parse(Evas_Filter_Program *pgm, const char *str);
134EAPI void evas_filter_program_del(Evas_Filter_Program *pgm); 134EAPI void evas_filter_program_del(Evas_Filter_Program *pgm);
135Eina_Bool evas_filter_context_program_use(Evas_Filter_Context *ctx, Evas_Filter_Program *pgm);
136EAPI Eina_Bool evas_filter_program_padding_get(Evas_Filter_Program *pgm, int *l, int *r, int *t, int *b); 135EAPI Eina_Bool evas_filter_program_padding_get(Evas_Filter_Program *pgm, int *l, int *r, int *t, int *b);
137EAPI void evas_filter_program_source_set_all(Evas_Filter_Program *pgm, Eina_Hash *sources); 136EAPI void evas_filter_program_source_set_all(Evas_Filter_Program *pgm, Eina_Hash *sources);
138void evas_filter_context_proxy_render_all(Evas_Filter_Context *ctx, Eo *eo_obj, Eina_Bool do_async);
139void evas_filter_program_data_set_all(Evas_Filter_Program *pgm, Eina_Inlist *data); 137void evas_filter_program_data_set_all(Evas_Filter_Program *pgm, Eina_Inlist *data);
140 138
141/* Filter context (low level) */ 139/* Filter context (low level) */
142Evas_Filter_Context *evas_filter_context_new(Evas_Public_Data *evas, Eina_Bool async); 140Evas_Filter_Context *evas_filter_context_new(Evas_Public_Data *evas, Eina_Bool async, int id);
141int evas_filter_context_id_get(Evas_Filter_Context *ctx);
143void evas_filter_context_destroy(Evas_Filter_Context *ctx); 142void evas_filter_context_destroy(Evas_Filter_Context *ctx);
143Eina_Bool evas_filter_context_program_use(Evas_Filter_Context *ctx, Evas_Filter_Program *pgm);
144void evas_filter_context_proxy_render_all(Evas_Filter_Context *ctx, Eo *eo_obj, Eina_Bool do_async);
144void evas_filter_context_post_run_callback_set(Evas_Filter_Context *ctx, Evas_Filter_Cb cb, void *data); 145void evas_filter_context_post_run_callback_set(Evas_Filter_Context *ctx, Evas_Filter_Cb cb, void *data);
145#define evas_filter_context_autodestroy(ctx) evas_filter_context_post_run_callback_set(ctx, ((Evas_Filter_Cb) evas_filter_context_destroy), ctx) 146#define evas_filter_context_autodestroy(ctx) evas_filter_context_post_run_callback_set(ctx, ((Evas_Filter_Cb) evas_filter_context_destroy), ctx)
146Eina_Bool evas_filter_context_buffers_allocate_all(Evas_Filter_Context *ctx); 147Eina_Bool evas_filter_context_buffers_allocate_all(Evas_Filter_Context *ctx);