path: root/src/lib/evas/canvas/evas_layer.c
diff options
authorCarsten Haitzler (Rasterman) <raster@rasterman.com>2015-02-10 20:44:38 +0900
committerCarsten Haitzler (Rasterman) <raster@rasterman.com>2015-02-12 11:06:40 +0900
commit7c5f92d702e2534b7b664d2b20d060dcac5fa6e6 (patch)
tree79e7afb25d05574d63275dee05204f155eb38011 /src/lib/evas/canvas/evas_layer.c
parentecore-drm: Print error when taking control of a device fails (diff)
evas - render - have lock point to allow for async obj walk + update add
this adds a lock for when walking all the objects to generate render commands for an async render. this allows even the object tree walk plus update area caluclation to be moved off into async if every oject that can change canvas state actually does so correctly. this change adds all those lock block calls to synchronise with an async object tree walk.
Diffstat (limited to 'src/lib/evas/canvas/evas_layer.c')
1 files changed, 5 insertions, 0 deletions
diff --git a/src/lib/evas/canvas/evas_layer.c b/src/lib/evas/canvas/evas_layer.c
index 62b1c54c93..e1baf63d7b 100644
--- a/src/lib/evas/canvas/evas_layer.c
+++ b/src/lib/evas/canvas/evas_layer.c
@@ -7,10 +7,14 @@ void
evas_object_inject(Evas_Object *eo_obj, Evas_Object_Protected_Data *obj, Evas *e)
Evas_Layer *lay;
+ Evas_Public_Data *evas;
if (!obj) return;
if (!e) return;
if (obj->in_layer) return;
+ evas = eo_data_scope_get(e, EVAS_CANVAS_CLASS);
+ if (!evas) return;
+ evas_canvas_async_block(evas);
lay = evas_layer_find(e, obj->cur->layer);
if (!lay)
@@ -180,6 +184,7 @@ _evas_object_layer_set(Eo *eo_obj, Evas_Object_Protected_Data *obj EINA_UNUSED,
Evas *eo_e;
if (obj->delete_me) return;
+ evas_object_async_block(obj);
if (evas_object_intercept_call_layer_set(eo_obj, obj, l)) return;
if (obj->smart.parent) return;
if (obj->cur->layer == l)