summaryrefslogtreecommitdiff
path: root/src/lib/evas/canvas/evas_render.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/evas/canvas/evas_render.c')
-rw-r--r--src/lib/evas/canvas/evas_render.c31
1 files changed, 20 insertions, 11 deletions
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,