summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--src/lib/evas/canvas/evas_3d_camera.c6
-rw-r--r--src/lib/evas/canvas/evas_3d_light.c14
-rw-r--r--src/lib/evas/canvas/evas_3d_material.c13
-rw-r--r--src/lib/evas/canvas/evas_3d_mesh.c29
-rw-r--r--src/lib/evas/canvas/evas_3d_node.c20
-rw-r--r--src/lib/evas/canvas/evas_3d_object.c5
-rw-r--r--src/lib/evas/canvas/evas_3d_scene.c17
-rw-r--r--src/lib/evas/canvas/evas_3d_texture.c16
-rw-r--r--src/lib/evas/canvas/evas_clip.c8
-rw-r--r--src/lib/evas/canvas/evas_font_dir.c6
-rw-r--r--src/lib/evas/canvas/evas_layer.c5
-rw-r--r--src/lib/evas/canvas/evas_main.c15
-rw-r--r--src/lib/evas/canvas/evas_map.c3
-rw-r--r--src/lib/evas/canvas/evas_object_image.c91
-rw-r--r--src/lib/evas/canvas/evas_object_line.c1
-rw-r--r--src/lib/evas/canvas/evas_object_main.c19
-rw-r--r--src/lib/evas/canvas/evas_object_polygon.c3
-rw-r--r--src/lib/evas/canvas/evas_object_smart.c24
-rw-r--r--src/lib/evas/canvas/evas_object_text.c40
-rw-r--r--src/lib/evas/canvas/evas_object_textblock.c155
-rw-r--r--src/lib/evas/canvas/evas_object_textgrid.c15
-rw-r--r--src/lib/evas/canvas/evas_out.c18
-rw-r--r--src/lib/evas/canvas/evas_render.c13
-rw-r--r--src/lib/evas/canvas/evas_stack.c4
-rw-r--r--src/lib/evas/include/evas_inline.x20
-rw-r--r--src/lib/evas/include/evas_private.h3
26 files changed, 488 insertions, 75 deletions
diff --git a/src/lib/evas/canvas/evas_3d_camera.c b/src/lib/evas/canvas/evas_3d_camera.c
index c6da2d3..b72c173 100644
--- a/src/lib/evas/canvas/evas_3d_camera.c
+++ b/src/lib/evas/canvas/evas_3d_camera.c
@@ -15,6 +15,7 @@ _camera_node_change_notify(const Eina_Hash *hash EINA_UNUSED, const void *key,
15EOLIAN static void 15EOLIAN static void
16_evas_3d_camera_evas_3d_object_change_notify(Eo *obj,Evas_3D_Camera_Data *pd, Evas_3D_State state EINA_UNUSED, Evas_3D_Object *ref EINA_UNUSED) 16_evas_3d_camera_evas_3d_object_change_notify(Eo *obj,Evas_3D_Camera_Data *pd, Evas_3D_State state EINA_UNUSED, Evas_3D_Object *ref EINA_UNUSED)
17{ 17{
18 evas_object_async_block(eo_data_scope_get(obj, EVAS_OBJECT_CLASS));
18 if (pd->nodes) eina_hash_foreach(pd->nodes, _camera_node_change_notify, obj); 19 if (pd->nodes) eina_hash_foreach(pd->nodes, _camera_node_change_notify, obj);
19} 20}
20 21
@@ -74,6 +75,7 @@ EOLIAN static void
74_evas_3d_camera_eo_base_destructor(Eo *obj, 75_evas_3d_camera_eo_base_destructor(Eo *obj,
75 Evas_3D_Camera_Data *pd) 76 Evas_3D_Camera_Data *pd)
76{ 77{
78 evas_object_async_block(eo_data_scope_get(obj, EVAS_OBJECT_CLASS));
77 //evas_3d_object_unreference(&pd->base); 79 //evas_3d_object_unreference(&pd->base);
78 if (pd->nodes) eina_hash_free(pd->nodes); 80 if (pd->nodes) eina_hash_free(pd->nodes);
79 eo_do_super(obj, MY_CLASS, eo_destructor()); 81 eo_do_super(obj, MY_CLASS, eo_destructor());
@@ -93,6 +95,7 @@ EOLIAN static void
93_evas_3d_camera_projection_matrix_set(Eo *obj, Evas_3D_Camera_Data *pd, 95_evas_3d_camera_projection_matrix_set(Eo *obj, Evas_3D_Camera_Data *pd,
94 const Evas_Real *matrix) 96 const Evas_Real *matrix)
95{ 97{
98 evas_object_async_block(eo_data_scope_get(obj, EVAS_OBJECT_CLASS));
96 evas_mat4_array_set(&pd->projection, matrix); 99 evas_mat4_array_set(&pd->projection, matrix);
97 eo_do(obj, evas_3d_object_change(EVAS_3D_STATE_CAMERA_PROJECTION, NULL)); 100 eo_do(obj, evas_3d_object_change(EVAS_3D_STATE_CAMERA_PROJECTION, NULL));
98} 101}
@@ -116,6 +119,7 @@ _evas_3d_camera_projection_perspective_set(Eo *obj, Evas_3D_Camera_Data *pd,
116 ymax = dnear * (Evas_Real)tan((double)fovy * M_PI / 360.0); 119 ymax = dnear * (Evas_Real)tan((double)fovy * M_PI / 360.0);
117 xmax = ymax * aspect; 120 xmax = ymax * aspect;
118 121
122 evas_object_async_block(eo_data_scope_get(obj, EVAS_OBJECT_CLASS));
119 evas_mat4_frustum_set(&pd->projection, -xmax, xmax, -ymax, ymax, dnear, dfar); 123 evas_mat4_frustum_set(&pd->projection, -xmax, xmax, -ymax, ymax, dnear, dfar);
120 eo_do(obj, evas_3d_object_change(EVAS_3D_STATE_CAMERA_PROJECTION, NULL)); 124 eo_do(obj, evas_3d_object_change(EVAS_3D_STATE_CAMERA_PROJECTION, NULL));
121} 125}
@@ -126,6 +130,7 @@ _evas_3d_camera_projection_frustum_set(Eo *obj, Evas_3D_Camera_Data *pd,
126 Evas_Real bottom, Evas_Real top, 130 Evas_Real bottom, Evas_Real top,
127 Evas_Real dnear, Evas_Real dfar) 131 Evas_Real dnear, Evas_Real dfar)
128{ 132{
133 evas_object_async_block(eo_data_scope_get(obj, EVAS_OBJECT_CLASS));
129 evas_mat4_frustum_set(&pd->projection, left, right, bottom, top, dnear, dfar); 134 evas_mat4_frustum_set(&pd->projection, left, right, bottom, top, dnear, dfar);
130 eo_do(obj, evas_3d_object_change(EVAS_3D_STATE_CAMERA_PROJECTION, NULL)); 135 eo_do(obj, evas_3d_object_change(EVAS_3D_STATE_CAMERA_PROJECTION, NULL));
131} 136}
@@ -136,6 +141,7 @@ _evas_3d_camera_projection_ortho_set(Eo *obj, Evas_3D_Camera_Data *pd,
136 Evas_Real bottom, Evas_Real top, 141 Evas_Real bottom, Evas_Real top,
137 Evas_Real dnear, Evas_Real dfar) 142 Evas_Real dnear, Evas_Real dfar)
138{ 143{
144 evas_object_async_block(eo_data_scope_get(obj, EVAS_OBJECT_CLASS));
139 evas_mat4_ortho_set(&pd->projection, left, right, bottom, top, dnear, dfar); 145 evas_mat4_ortho_set(&pd->projection, left, right, bottom, top, dnear, dfar);
140 eo_do(obj, evas_3d_object_change(EVAS_3D_STATE_CAMERA_PROJECTION, NULL)); 146 eo_do(obj, evas_3d_object_change(EVAS_3D_STATE_CAMERA_PROJECTION, NULL));
141} 147}
diff --git a/src/lib/evas/canvas/evas_3d_light.c b/src/lib/evas/canvas/evas_3d_light.c
index f9ca75b..48abf0f 100644
--- a/src/lib/evas/canvas/evas_3d_light.c
+++ b/src/lib/evas/canvas/evas_3d_light.c
@@ -15,6 +15,7 @@ _light_node_change_notify(const Eina_Hash *hash EINA_UNUSED, const void *key,
15EOLIAN static void 15EOLIAN static void
16_evas_3d_light_evas_3d_object_change_notify(Eo *obj, Evas_3D_Light_Data *pd, Evas_3D_State state EINA_UNUSED, Evas_3D_Object *ref EINA_UNUSED) 16_evas_3d_light_evas_3d_object_change_notify(Eo *obj, Evas_3D_Light_Data *pd, Evas_3D_State state EINA_UNUSED, Evas_3D_Object *ref EINA_UNUSED)
17{ 17{
18 evas_object_async_block(eo_data_scope_get(obj, EVAS_OBJECT_CLASS));
18 if (pd->nodes) 19 if (pd->nodes)
19 eina_hash_foreach(pd->nodes, _light_node_change_notify, obj); 20 eina_hash_foreach(pd->nodes, _light_node_change_notify, obj);
20} 21}
@@ -97,6 +98,7 @@ _evas_3d_light_eo_base_constructor(Eo *obj, Evas_3D_Light_Data *pd)
97EOLIAN static void 98EOLIAN static void
98_evas_3d_light_eo_base_destructor(Eo *obj, Evas_3D_Light_Data *pd) 99_evas_3d_light_eo_base_destructor(Eo *obj, Evas_3D_Light_Data *pd)
99{ 100{
101 evas_object_async_block(eo_data_scope_get(obj, EVAS_OBJECT_CLASS));
100 if (pd->nodes) 102 if (pd->nodes)
101 eina_hash_free(pd->nodes); 103 eina_hash_free(pd->nodes);
102 eo_do_super(obj, MY_CLASS, eo_destructor()); 104 eo_do_super(obj, MY_CLASS, eo_destructor());
@@ -106,6 +108,7 @@ _evas_3d_light_eo_base_destructor(Eo *obj, Evas_3D_Light_Data *pd)
106EOLIAN static void 108EOLIAN static void
107_evas_3d_light_directional_set(Eo *obj, Evas_3D_Light_Data *pd, Eina_Bool directional) 109_evas_3d_light_directional_set(Eo *obj, Evas_3D_Light_Data *pd, Eina_Bool directional)
108{ 110{
111 evas_object_async_block(eo_data_scope_get(obj, EVAS_OBJECT_CLASS));
109 if (pd->directional != directional) 112 if (pd->directional != directional)
110 { 113 {
111 pd->directional = directional; 114 pd->directional = directional;
@@ -122,6 +125,7 @@ _evas_3d_light_directional_get(Eo *obj EINA_UNUSED, Evas_3D_Light_Data *pd)
122EOLIAN static void 125EOLIAN static void
123_evas_3d_light_ambient_set(Eo *obj, Evas_3D_Light_Data *pd, Evas_Real r, Evas_Real g, Evas_Real b, Evas_Real a) 126_evas_3d_light_ambient_set(Eo *obj, Evas_3D_Light_Data *pd, Evas_Real r, Evas_Real g, Evas_Real b, Evas_Real a)
124{ 127{
128 evas_object_async_block(eo_data_scope_get(obj, EVAS_OBJECT_CLASS));
125 pd->ambient.r = r; 129 pd->ambient.r = r;
126 pd->ambient.g = g; 130 pd->ambient.g = g;
127 pd->ambient.b = b; 131 pd->ambient.b = b;
@@ -142,6 +146,7 @@ _evas_3d_light_ambient_get(Eo *obj EINA_UNUSED, Evas_3D_Light_Data *pd, Evas_Rea
142EOLIAN static void 146EOLIAN static void
143_evas_3d_light_diffuse_set(Eo *obj, Evas_3D_Light_Data *pd, Evas_Real r, Evas_Real g, Evas_Real b, Evas_Real a) 147_evas_3d_light_diffuse_set(Eo *obj, Evas_3D_Light_Data *pd, Evas_Real r, Evas_Real g, Evas_Real b, Evas_Real a)
144{ 148{
149 evas_object_async_block(eo_data_scope_get(obj, EVAS_OBJECT_CLASS));
145 pd->diffuse.r = r; 150 pd->diffuse.r = r;
146 pd->diffuse.g = g; 151 pd->diffuse.g = g;
147 pd->diffuse.b = b; 152 pd->diffuse.b = b;
@@ -162,6 +167,7 @@ _evas_3d_light_diffuse_get(Eo *obj EINA_UNUSED, Evas_3D_Light_Data *pd, Evas_Rea
162EOLIAN static void 167EOLIAN static void
163_evas_3d_light_specular_set(Eo *obj, Evas_3D_Light_Data *pd, Evas_Real r, Evas_Real g, Evas_Real b, Evas_Real a) 168_evas_3d_light_specular_set(Eo *obj, Evas_3D_Light_Data *pd, Evas_Real r, Evas_Real g, Evas_Real b, Evas_Real a)
164{ 169{
170 evas_object_async_block(eo_data_scope_get(obj, EVAS_OBJECT_CLASS));
165 pd->specular.r = r; 171 pd->specular.r = r;
166 pd->specular.g = g; 172 pd->specular.g = g;
167 pd->specular.b = b; 173 pd->specular.b = b;
@@ -182,6 +188,7 @@ _evas_3d_light_specular_get(Eo *obj EINA_UNUSED, Evas_3D_Light_Data *pd, Evas_Re
182EOLIAN static void 188EOLIAN static void
183_evas_3d_light_spot_exponent_set(Eo *obj, Evas_3D_Light_Data *pd, Evas_Real exponent) 189_evas_3d_light_spot_exponent_set(Eo *obj, Evas_3D_Light_Data *pd, Evas_Real exponent)
184{ 190{
191 evas_object_async_block(eo_data_scope_get(obj, EVAS_OBJECT_CLASS));
185 pd->spot_exp = exponent; 192 pd->spot_exp = exponent;
186 eo_do(obj, evas_3d_object_change(EVAS_3D_STATE_LIGHT_SPOT_EXP, NULL)); 193 eo_do(obj, evas_3d_object_change(EVAS_3D_STATE_LIGHT_SPOT_EXP, NULL));
187} 194}
@@ -195,6 +202,7 @@ _evas_3d_light_spot_exponent_get(Eo *obj EINA_UNUSED, Evas_3D_Light_Data *pd)
195EOLIAN static void 202EOLIAN static void
196_evas_3d_light_spot_cutoff_set(Eo *obj, Evas_3D_Light_Data *pd, Evas_Real cutoff) 203_evas_3d_light_spot_cutoff_set(Eo *obj, Evas_3D_Light_Data *pd, Evas_Real cutoff)
197{ 204{
205 evas_object_async_block(eo_data_scope_get(obj, EVAS_OBJECT_CLASS));
198 pd->spot_cutoff = cutoff; 206 pd->spot_cutoff = cutoff;
199 pd->spot_cutoff_cos = cos(cutoff * M_PI / 180.0); 207 pd->spot_cutoff_cos = cos(cutoff * M_PI / 180.0);
200 eo_do(obj, evas_3d_object_change(EVAS_3D_STATE_LIGHT_SPOT_CUTOFF, NULL)); 208 eo_do(obj, evas_3d_object_change(EVAS_3D_STATE_LIGHT_SPOT_CUTOFF, NULL));
@@ -209,6 +217,7 @@ _evas_3d_light_spot_cutoff_get(Eo *obj EINA_UNUSED, Evas_3D_Light_Data *pd)
209EOLIAN static void 217EOLIAN static void
210_evas_3d_light_attenuation_set(Eo *obj, Evas_3D_Light_Data *pd, Evas_Real constant, Evas_Real linear, Evas_Real quadratic) 218_evas_3d_light_attenuation_set(Eo *obj, Evas_3D_Light_Data *pd, Evas_Real constant, Evas_Real linear, Evas_Real quadratic)
211{ 219{
220 evas_object_async_block(eo_data_scope_get(obj, EVAS_OBJECT_CLASS));
212 pd->atten_const = constant; 221 pd->atten_const = constant;
213 pd->atten_linear = linear; 222 pd->atten_linear = linear;
214 pd->atten_quad = quadratic; 223 pd->atten_quad = quadratic;
@@ -226,6 +235,7 @@ _evas_3d_light_attenuation_get(Eo *obj EINA_UNUSED, Evas_3D_Light_Data *pd, Evas
226EOLIAN static void 235EOLIAN static void
227_evas_3d_light_attenuation_enable_set(Eo *obj, Evas_3D_Light_Data *pd, Eina_Bool enable) 236_evas_3d_light_attenuation_enable_set(Eo *obj, Evas_3D_Light_Data *pd, Eina_Bool enable)
228{ 237{
238 evas_object_async_block(eo_data_scope_get(obj, EVAS_OBJECT_CLASS));
229 if (pd->enable_attenuation != enable) 239 if (pd->enable_attenuation != enable)
230 { 240 {
231 pd->enable_attenuation = enable; 241 pd->enable_attenuation = enable;
@@ -243,6 +253,7 @@ EOLIAN static void
243_evas_3d_light_projection_matrix_set(Eo *obj, Evas_3D_Light_Data *pd, 253_evas_3d_light_projection_matrix_set(Eo *obj, Evas_3D_Light_Data *pd,
244 const Evas_Real *matrix) 254 const Evas_Real *matrix)
245{ 255{
256 evas_object_async_block(eo_data_scope_get(obj, EVAS_OBJECT_CLASS));
246 evas_mat4_array_set(&pd->projection, matrix); 257 evas_mat4_array_set(&pd->projection, matrix);
247 eo_do(obj, evas_3d_object_change(EVAS_3D_STATE_LIGHT_PROJECTION, NULL)); 258 eo_do(obj, evas_3d_object_change(EVAS_3D_STATE_LIGHT_PROJECTION, NULL));
248} 259}
@@ -266,6 +277,7 @@ _evas_3d_light_projection_perspective_set(Eo *obj, Evas_3D_Light_Data *pd,
266 ymax = dnear * (Evas_Real)tan((double)fovy * M_PI / 360.0); 277 ymax = dnear * (Evas_Real)tan((double)fovy * M_PI / 360.0);
267 xmax = ymax * aspect; 278 xmax = ymax * aspect;
268 279
280 evas_object_async_block(eo_data_scope_get(obj, EVAS_OBJECT_CLASS));
269 evas_mat4_frustum_set(&pd->projection, -xmax, xmax, -ymax, ymax, dnear, dfar); 281 evas_mat4_frustum_set(&pd->projection, -xmax, xmax, -ymax, ymax, dnear, dfar);
270 eo_do(obj, evas_3d_object_change(EVAS_3D_STATE_LIGHT_PROJECTION, NULL)); 282 eo_do(obj, evas_3d_object_change(EVAS_3D_STATE_LIGHT_PROJECTION, NULL));
271} 283}
@@ -276,6 +288,7 @@ _evas_3d_light_projection_frustum_set(Eo *obj, Evas_3D_Light_Data *pd,
276 Evas_Real bottom, Evas_Real top, 288 Evas_Real bottom, Evas_Real top,
277 Evas_Real dnear, Evas_Real dfar) 289 Evas_Real dnear, Evas_Real dfar)
278{ 290{
291 evas_object_async_block(eo_data_scope_get(obj, EVAS_OBJECT_CLASS));
279 evas_mat4_frustum_set(&pd->projection, left, right, bottom, top, dnear, dfar); 292 evas_mat4_frustum_set(&pd->projection, left, right, bottom, top, dnear, dfar);
280 eo_do(obj, evas_3d_object_change(EVAS_3D_STATE_LIGHT_PROJECTION, NULL)); 293 eo_do(obj, evas_3d_object_change(EVAS_3D_STATE_LIGHT_PROJECTION, NULL));
281} 294}
@@ -286,6 +299,7 @@ _evas_3d_light_projection_ortho_set(Eo *obj, Evas_3D_Light_Data *pd,
286 Evas_Real bottom, Evas_Real top, 299 Evas_Real bottom, Evas_Real top,
287 Evas_Real dnear, Evas_Real dfar) 300 Evas_Real dnear, Evas_Real dfar)
288{ 301{
302 evas_object_async_block(eo_data_scope_get(obj, EVAS_OBJECT_CLASS));
289 evas_mat4_ortho_set(&pd->projection, left, right, bottom, top, dnear, dfar); 303 evas_mat4_ortho_set(&pd->projection, left, right, bottom, top, dnear, dfar);
290 eo_do(obj, evas_3d_object_change(EVAS_3D_STATE_LIGHT_PROJECTION, NULL)); 304 eo_do(obj, evas_3d_object_change(EVAS_3D_STATE_LIGHT_PROJECTION, NULL));
291} 305}
diff --git a/src/lib/evas/canvas/evas_3d_material.c b/src/lib/evas/canvas/evas_3d_material.c
index 8cd325d..ca0b403 100644
--- a/src/lib/evas/canvas/evas_3d_material.c
+++ b/src/lib/evas/canvas/evas_3d_material.c
@@ -15,14 +15,16 @@ _material_mesh_change_notify(const Eina_Hash *hash EINA_UNUSED, const void *key,
15EOLIAN static void 15EOLIAN static void
16_evas_3d_material_evas_3d_object_change_notify(Eo *obj, Evas_3D_Material_Data *pd, Evas_3D_State state EINA_UNUSED, Evas_3D_Object *ref EINA_UNUSED) 16_evas_3d_material_evas_3d_object_change_notify(Eo *obj, Evas_3D_Material_Data *pd, Evas_3D_State state EINA_UNUSED, Evas_3D_Object *ref EINA_UNUSED)
17{ 17{
18 evas_object_async_block(eo_data_scope_get(obj, EVAS_OBJECT_CLASS));
18 if (pd->meshes) 19 if (pd->meshes)
19 eina_hash_foreach(pd->meshes, _material_mesh_change_notify, obj); 20 eina_hash_foreach(pd->meshes, _material_mesh_change_notify, obj);
20} 21}
21 22
22EOLIAN static void 23EOLIAN static void
23_evas_3d_material_evas_3d_object_update_notify(Eo *obj EINA_UNUSED, Evas_3D_Material_Data *pd) 24_evas_3d_material_evas_3d_object_update_notify(Eo *obj, Evas_3D_Material_Data *pd)
24{ 25{
25 int i; 26 int i;
27 evas_object_async_block(eo_data_scope_get(obj, EVAS_OBJECT_CLASS));
26 for (i = 0; i < EVAS_3D_MATERIAL_ATTRIB_COUNT; i++) 28 for (i = 0; i < EVAS_3D_MATERIAL_ATTRIB_COUNT; i++)
27 { 29 {
28 if (pd->attribs[i].enable) 30 if (pd->attribs[i].enable)
@@ -106,6 +108,7 @@ _evas_3d_material_eo_base_destructor(Eo *obj, Evas_3D_Material_Data *pd)
106{ 108{
107 int i; 109 int i;
108 110
111 evas_object_async_block(eo_data_scope_get(obj, EVAS_OBJECT_CLASS));
109 if (pd->meshes) 112 if (pd->meshes)
110 eina_hash_free(pd->meshes); 113 eina_hash_free(pd->meshes);
111 114
@@ -121,8 +124,9 @@ _evas_3d_material_eo_base_destructor(Eo *obj, Evas_3D_Material_Data *pd)
121} 124}
122 125
123EOLIAN static void 126EOLIAN static void
124_evas_3d_material_enable_set(Eo *obj EINA_UNUSED, Evas_3D_Material_Data *pd, Evas_3D_Material_Attrib attrib, Eina_Bool enable) 127_evas_3d_material_enable_set(Eo *obj, Evas_3D_Material_Data *pd, Evas_3D_Material_Attrib attrib, Eina_Bool enable)
125{ 128{
129 evas_object_async_block(eo_data_scope_get(obj, EVAS_OBJECT_CLASS));
126 pd->attribs[attrib].enable = enable; 130 pd->attribs[attrib].enable = enable;
127} 131}
128 132
@@ -135,6 +139,7 @@ _evas_3d_material_enable_get(Eo *obj EINA_UNUSED, Evas_3D_Material_Data *pd, Eva
135EOLIAN static void 139EOLIAN static void
136_evas_3d_material_color_set(Eo *obj, Evas_3D_Material_Data *pd, Evas_3D_Material_Attrib attrib, Evas_Real r, Evas_Real g, Evas_Real b, Evas_Real a) 140_evas_3d_material_color_set(Eo *obj, Evas_3D_Material_Data *pd, Evas_3D_Material_Attrib attrib, Evas_Real r, Evas_Real g, Evas_Real b, Evas_Real a)
137{ 141{
142 evas_object_async_block(eo_data_scope_get(obj, EVAS_OBJECT_CLASS));
138 evas_color_set(&pd->attribs[attrib].color, r, g, b, a); 143 evas_color_set(&pd->attribs[attrib].color, r, g, b, a);
139 eo_do(obj, evas_3d_object_change(EVAS_3D_STATE_MATERIAL_COLOR, NULL)); 144 eo_do(obj, evas_3d_object_change(EVAS_3D_STATE_MATERIAL_COLOR, NULL));
140} 145}
@@ -149,8 +154,9 @@ _evas_3d_material_color_get(Eo *obj EINA_UNUSED, Evas_3D_Material_Data *pd, Evas
149} 154}
150 155
151EOLIAN static void 156EOLIAN static void
152_evas_3d_material_shininess_set(Eo *obj EINA_UNUSED, Evas_3D_Material_Data *pd, Evas_Real shininess) 157_evas_3d_material_shininess_set(Eo *obj, Evas_3D_Material_Data *pd, Evas_Real shininess)
153{ 158{
159 evas_object_async_block(eo_data_scope_get(obj, EVAS_OBJECT_CLASS));
154 pd->shininess = shininess; 160 pd->shininess = shininess;
155} 161}
156 162
@@ -163,6 +169,7 @@ _evas_3d_material_shininess_get(Eo *obj EINA_UNUSED, Evas_3D_Material_Data *pd)
163EOLIAN static void 169EOLIAN static void
164_evas_3d_material_texture_set(Eo *obj, Evas_3D_Material_Data *pd, Evas_3D_Material_Attrib attrib, Evas_3D_Texture *texture) 170_evas_3d_material_texture_set(Eo *obj, Evas_3D_Material_Data *pd, Evas_3D_Material_Attrib attrib, Evas_3D_Texture *texture)
165{ 171{
172 evas_object_async_block(eo_data_scope_get(obj, EVAS_OBJECT_CLASS));
166 if (pd->attribs[attrib].texture != texture) 173 if (pd->attribs[attrib].texture != texture)
167 { 174 {
168 if (pd->attribs[attrib].texture) 175 if (pd->attribs[attrib].texture)
diff --git a/src/lib/evas/canvas/evas_3d_mesh.c b/src/lib/evas/canvas/evas_3d_mesh.c
index 4430438..55b1d47 100644
--- a/src/lib/evas/canvas/evas_3d_mesh.c
+++ b/src/lib/evas/canvas/evas_3d_mesh.c
@@ -182,11 +182,12 @@ _evas_3d_mesh_evas_3d_object_change_notify(Eo *obj, Evas_3D_Mesh_Data *pd, Evas_
182} 182}
183 183
184EOLIAN static void 184EOLIAN static void
185_evas_3d_mesh_evas_3d_object_update_notify(Eo *obj EINA_UNUSED, Evas_3D_Mesh_Data *pd) 185_evas_3d_mesh_evas_3d_object_update_notify(Eo *obj, Evas_3D_Mesh_Data *pd)
186{ 186{
187 Eina_List *l; 187 Eina_List *l;
188 Evas_3D_Mesh_Frame *f; 188 Evas_3D_Mesh_Frame *f;
189 189
190 evas_object_async_block(eo_data_scope_get(obj, EVAS_OBJECT_CLASS));
190 EINA_LIST_FOREACH(pd->frames, l, f) 191 EINA_LIST_FOREACH(pd->frames, l, f)
191 { 192 {
192 if (f->material) 193 if (f->material)
@@ -259,14 +260,16 @@ _evas_3d_mesh_eo_base_constructor(Eo *obj, Evas_3D_Mesh_Data *pd)
259EOLIAN static void 260EOLIAN static void
260_evas_3d_mesh_eo_base_destructor(Eo *obj, Evas_3D_Mesh_Data *pd) 261_evas_3d_mesh_eo_base_destructor(Eo *obj, Evas_3D_Mesh_Data *pd)
261{ 262{
263 evas_object_async_block(eo_data_scope_get(obj, EVAS_OBJECT_CLASS));
262 //evas_3d_object_unreference(&pd->base); 264 //evas_3d_object_unreference(&pd->base);
263 _mesh_fini(pd); 265 _mesh_fini(pd);
264 eo_do_super(obj, MY_CLASS, eo_destructor()); 266 eo_do_super(obj, MY_CLASS, eo_destructor());
265} 267}
266 268
267EOLIAN static void 269EOLIAN static void
268_evas_3d_mesh_shade_mode_set(Eo *obj EINA_UNUSED, Evas_3D_Mesh_Data *pd, Evas_3D_Shade_Mode mode) 270_evas_3d_mesh_shade_mode_set(Eo *obj, Evas_3D_Mesh_Data *pd, Evas_3D_Shade_Mode mode)
269{ 271{
272 evas_object_async_block(eo_data_scope_get(obj, EVAS_OBJECT_CLASS));
270 if (pd->shade_mode != mode) 273 if (pd->shade_mode != mode)
271 { 274 {
272 pd->shade_mode = mode; 275 pd->shade_mode = mode;
@@ -283,6 +286,7 @@ _evas_3d_mesh_shade_mode_get(Eo *obj EINA_UNUSED, Evas_3D_Mesh_Data *pd)
283EOLIAN static void 286EOLIAN static void
284_evas_3d_mesh_vertex_count_set(Eo *obj, Evas_3D_Mesh_Data *pd, unsigned int count) 287_evas_3d_mesh_vertex_count_set(Eo *obj, Evas_3D_Mesh_Data *pd, unsigned int count)
285{ 288{
289 evas_object_async_block(eo_data_scope_get(obj, EVAS_OBJECT_CLASS));
286 pd->vertex_count = count; 290 pd->vertex_count = count;
287 eo_do(obj, evas_3d_object_change(EVAS_3D_STATE_MESH_VERTEX_COUNT, NULL)); 291 eo_do(obj, evas_3d_object_change(EVAS_3D_STATE_MESH_VERTEX_COUNT, NULL));
288} 292}
@@ -304,6 +308,7 @@ _evas_3d_mesh_frame_add(Eo *obj, Evas_3D_Mesh_Data *pd, int frame)
304 return; 308 return;
305 } 309 }
306 310
311 evas_object_async_block(eo_data_scope_get(obj, EVAS_OBJECT_CLASS));
307 f = evas_3d_mesh_frame_new(obj); 312 f = evas_3d_mesh_frame_new(obj);
308 313
309 if (f == NULL) 314 if (f == NULL)
@@ -325,6 +330,7 @@ _evas_3d_mesh_frame_del(Eo *obj, Evas_3D_Mesh_Data *pd, int frame)
325 return; 330 return;
326 } 331 }
327 332
333 evas_object_async_block(eo_data_scope_get(obj, EVAS_OBJECT_CLASS));
328 pd->frames = eina_list_remove(pd->frames, f); 334 pd->frames = eina_list_remove(pd->frames, f);
329 evas_3d_mesh_frame_free(f); 335 evas_3d_mesh_frame_free(f);
330 eo_do(obj, evas_3d_object_change(EVAS_3D_STATE_MESH_FRAME, NULL)); 336 eo_do(obj, evas_3d_object_change(EVAS_3D_STATE_MESH_FRAME, NULL));
@@ -344,6 +350,7 @@ _evas_3d_mesh_frame_material_set(Eo *obj, Evas_3D_Mesh_Data *pd, int frame, Evas
344 if (f->material == material) 350 if (f->material == material)
345 return; 351 return;
346 352
353 evas_object_async_block(eo_data_scope_get(obj, EVAS_OBJECT_CLASS));
347 if (f->material) 354 if (f->material)
348 { 355 {
349 evas_3d_material_mesh_del(f->material, obj); 356 evas_3d_material_mesh_del(f->material, obj);
@@ -388,6 +395,7 @@ _evas_3d_mesh_frame_vertex_data_set(Eo *obj, Evas_3D_Mesh_Data *pd, int frame, E
388 return; 395 return;
389 } 396 }
390 397
398 evas_object_async_block(eo_data_scope_get(obj, EVAS_OBJECT_CLASS));
391 if (attrib == EVAS_3D_VERTEX_POSITION) 399 if (attrib == EVAS_3D_VERTEX_POSITION)
392 { 400 {
393 int i = 0, j = 0, size = stride/sizeof(float); 401 int i = 0, j = 0, size = stride/sizeof(float);
@@ -471,6 +479,7 @@ _evas_3d_mesh_frame_vertex_data_copy_set(Eo *obj, Evas_3D_Mesh_Data *pd, int fra
471 return; 479 return;
472 } 480 }
473 481
482 evas_object_async_block(eo_data_scope_get(obj, EVAS_OBJECT_CLASS));
474 if (attrib == EVAS_3D_VERTEX_POSITION) 483 if (attrib == EVAS_3D_VERTEX_POSITION)
475 { 484 {
476 element_count = 3; 485 element_count = 3;
@@ -599,6 +608,7 @@ _evas_3d_mesh_frame_vertex_data_map(Eo *obj EINA_UNUSED, Evas_3D_Mesh_Data *pd,
599 return NULL; 608 return NULL;
600 } 609 }
601 610
611 evas_object_async_block(eo_data_scope_get(obj, EVAS_OBJECT_CLASS));
602 f->vertices[attrib].mapped = EINA_TRUE; 612 f->vertices[attrib].mapped = EINA_TRUE;
603 return f->vertices[attrib].data; 613 return f->vertices[attrib].data;
604} 614}
@@ -620,6 +630,7 @@ _evas_3d_mesh_frame_vertex_data_unmap(Eo *obj EINA_UNUSED, Evas_3D_Mesh_Data *pd
620 return; 630 return;
621 } 631 }
622 632
633 evas_object_async_block(eo_data_scope_get(obj, EVAS_OBJECT_CLASS));
623 f->vertices[attrib].mapped = EINA_FALSE; 634 f->vertices[attrib].mapped = EINA_FALSE;
624} 635}
625 636
@@ -640,6 +651,7 @@ _evas_3d_mesh_frame_vertex_stride_get(Eo *obj EINA_UNUSED, Evas_3D_Mesh_Data *pd
640EOLIAN static void 651EOLIAN static void
641_evas_3d_mesh_index_data_set(Eo *obj, Evas_3D_Mesh_Data *pd, Evas_3D_Index_Format format, int count, const void *indices) 652_evas_3d_mesh_index_data_set(Eo *obj, Evas_3D_Mesh_Data *pd, Evas_3D_Index_Format format, int count, const void *indices)
642{ 653{
654 evas_object_async_block(eo_data_scope_get(obj, EVAS_OBJECT_CLASS));
643 if (pd->owns_indices && pd->indices) 655 if (pd->owns_indices && pd->indices)
644 free(pd->indices); 656 free(pd->indices);
645 657
@@ -671,6 +683,7 @@ _evas_3d_mesh_index_data_copy_set(Eo *obj EINA_UNUSED, Evas_3D_Mesh_Data *pd, Ev
671 return; 683 return;
672 } 684 }
673 685
686 evas_object_async_block(eo_data_scope_get(obj, EVAS_OBJECT_CLASS));
674 if (!pd->owns_indices || pd->index_size < size) 687 if (!pd->owns_indices || pd->index_size < size)
675 { 688 {
676 if (pd->owns_indices && pd->indices) 689 if (pd->owns_indices && pd->indices)
@@ -716,6 +729,7 @@ _evas_3d_mesh_index_data_map(Eo *obj EINA_UNUSED, Evas_3D_Mesh_Data *pd)
716 return NULL; 729 return NULL;
717 } 730 }
718 731
732 evas_object_async_block(eo_data_scope_get(obj, EVAS_OBJECT_CLASS));
719 pd->index_mapped = EINA_TRUE; 733 pd->index_mapped = EINA_TRUE;
720 return pd->indices; 734 return pd->indices;
721} 735}
@@ -729,12 +743,14 @@ _evas_3d_mesh_index_data_unmap(Eo *obj EINA_UNUSED, Evas_3D_Mesh_Data *pd)
729 return; 743 return;
730 } 744 }
731 745
746 evas_object_async_block(eo_data_scope_get(obj, EVAS_OBJECT_CLASS));
732 pd->index_mapped = EINA_FALSE; 747 pd->index_mapped = EINA_FALSE;
733} 748}
734 749
735EOLIAN static void 750EOLIAN static void
736_evas_3d_mesh_vertex_assembly_set(Eo *obj, Evas_3D_Mesh_Data *pd, Evas_3D_Vertex_Assembly assembly) 751_evas_3d_mesh_vertex_assembly_set(Eo *obj, Evas_3D_Mesh_Data *pd, Evas_3D_Vertex_Assembly assembly)
737{ 752{
753 evas_object_async_block(eo_data_scope_get(obj, EVAS_OBJECT_CLASS));
738 pd->assembly = assembly; 754 pd->assembly = assembly;
739 eo_do(obj, evas_3d_object_change(EVAS_3D_STATE_MESH_VERTEX_ASSEMBLY, NULL)); 755 eo_do(obj, evas_3d_object_change(EVAS_3D_STATE_MESH_VERTEX_ASSEMBLY, NULL));
740} 756}
@@ -742,12 +758,14 @@ _evas_3d_mesh_vertex_assembly_set(Eo *obj, Evas_3D_Mesh_Data *pd, Evas_3D_Vertex
742EOLIAN static Evas_3D_Vertex_Assembly 758EOLIAN static Evas_3D_Vertex_Assembly
743_evas_3d_mesh_vertex_assembly_get(Eo *obj EINA_UNUSED, Evas_3D_Mesh_Data *pd) 759_evas_3d_mesh_vertex_assembly_get(Eo *obj EINA_UNUSED, Evas_3D_Mesh_Data *pd)
744{ 760{
761 evas_object_async_block(eo_data_scope_get(obj, EVAS_OBJECT_CLASS));
745 return pd->assembly; 762 return pd->assembly;
746} 763}
747 764
748EOLIAN static void 765EOLIAN static void
749_evas_3d_mesh_fog_color_set(Eo *obj, Evas_3D_Mesh_Data *pd, Evas_Real r, Evas_Real g, Evas_Real b, Evas_Real a) 766_evas_3d_mesh_fog_color_set(Eo *obj, Evas_3D_Mesh_Data *pd, Evas_Real r, Evas_Real g, Evas_Real b, Evas_Real a)
750{ 767{
768 evas_object_async_block(eo_data_scope_get(obj, EVAS_OBJECT_CLASS));
751 evas_color_set(&pd->fog_color, r, g, b, a); 769 evas_color_set(&pd->fog_color, r, g, b, a);
752 eo_do(obj, evas_3d_object_change(EVAS_3D_STATE_MESH_FOG, NULL)); 770 eo_do(obj, evas_3d_object_change(EVAS_3D_STATE_MESH_FOG, NULL));
753} 771}
@@ -765,6 +783,7 @@ _evas_3d_mesh_fog_color_get(Eo *obj EINA_UNUSED, Evas_3D_Mesh_Data *pd,
765EOLIAN static void 783EOLIAN static void
766_evas_3d_mesh_fog_enable_set(Eo *obj, Evas_3D_Mesh_Data *pd, Eina_Bool enabled) 784_evas_3d_mesh_fog_enable_set(Eo *obj, Evas_3D_Mesh_Data *pd, Eina_Bool enabled)
767{ 785{
786 evas_object_async_block(eo_data_scope_get(obj, EVAS_OBJECT_CLASS));
768 pd->fog_enabled = enabled; 787 pd->fog_enabled = enabled;
769 eo_do(obj, evas_3d_object_change(EVAS_3D_STATE_MESH_FOG, NULL)); 788 eo_do(obj, evas_3d_object_change(EVAS_3D_STATE_MESH_FOG, NULL));
770} 789}
@@ -778,6 +797,7 @@ _evas_3d_mesh_fog_enable_get(Eo *obj EINA_UNUSED, Evas_3D_Mesh_Data *pd)
778EOLIAN static void 797EOLIAN static void
779_evas_3d_mesh_blending_enable_set(Eo *obj, Evas_3D_Mesh_Data *pd, Eina_Bool blending) 798_evas_3d_mesh_blending_enable_set(Eo *obj, Evas_3D_Mesh_Data *pd, Eina_Bool blending)
780{ 799{
800 evas_object_async_block(eo_data_scope_get(obj, EVAS_OBJECT_CLASS));
781 pd->blending = blending; 801 pd->blending = blending;
782 eo_do(obj, evas_3d_object_change(EVAS_3D_STATE_MESH_BLENDING, NULL)); 802 eo_do(obj, evas_3d_object_change(EVAS_3D_STATE_MESH_BLENDING, NULL));
783} 803}
@@ -791,6 +811,7 @@ _evas_3d_mesh_blending_enable_get(Eo *obj EINA_UNUSED, Evas_3D_Mesh_Data *pd)
791EOLIAN static void 811EOLIAN static void
792_evas_3d_mesh_blending_func_set(Eo *obj, Evas_3D_Mesh_Data *pd, Evas_3D_Blend_Func sfactor, Evas_3D_Blend_Func dfactor) 812_evas_3d_mesh_blending_func_set(Eo *obj, Evas_3D_Mesh_Data *pd, Evas_3D_Blend_Func sfactor, Evas_3D_Blend_Func dfactor)
793{ 813{
814 evas_object_async_block(eo_data_scope_get(obj, EVAS_OBJECT_CLASS));
794 pd->blend_sfactor = sfactor; 815 pd->blend_sfactor = sfactor;
795 pd->blend_dfactor = dfactor; 816 pd->blend_dfactor = dfactor;
796 eo_do(obj, evas_3d_object_change(EVAS_3D_STATE_MESH_BLENDING, NULL)); 817 eo_do(obj, evas_3d_object_change(EVAS_3D_STATE_MESH_BLENDING, NULL));
@@ -808,6 +829,7 @@ EOLIAN static void
808_evas_3d_mesh_mmap_set(Eo *obj, Evas_3D_Mesh_Data *pd, 829_evas_3d_mesh_mmap_set(Eo *obj, Evas_3D_Mesh_Data *pd,
809 Eina_File *file, const char *key EINA_UNUSED) 830 Eina_File *file, const char *key EINA_UNUSED)
810{ 831{
832 evas_object_async_block(eo_data_scope_get(obj, EVAS_OBJECT_CLASS));
811 _mesh_fini(pd); 833 _mesh_fini(pd);
812 _mesh_init(pd); 834 _mesh_init(pd);
813 835
@@ -821,6 +843,7 @@ _evas_3d_mesh_efl_file_file_set(Eo *obj, Evas_3D_Mesh_Data *pd,
821 const char *file, 843 const char *file,
822 const char *key EINA_UNUSED) 844 const char *key EINA_UNUSED)
823{ 845{
846 evas_object_async_block(eo_data_scope_get(obj, EVAS_OBJECT_CLASS));
824 _mesh_fini(pd); 847 _mesh_fini(pd);
825 _mesh_init(pd); 848 _mesh_init(pd);
826 849
@@ -838,6 +861,7 @@ _evas_3d_mesh_efl_file_save(Eo *obj, Evas_3D_Mesh_Data *pd,
838{ 861{
839 if ((file == NULL) || (obj == NULL) || (pd == NULL)) return EINA_FALSE; 862 if ((file == NULL) || (obj == NULL) || (pd == NULL)) return EINA_FALSE;
840 863
864 evas_object_async_block(eo_data_scope_get(obj, EVAS_OBJECT_CLASS));
841 Evas_3D_Mesh_Frame *f = evas_3d_mesh_frame_find(pd, 0); 865 Evas_3D_Mesh_Frame *f = evas_3d_mesh_frame_find(pd, 0);
842 866
843 if (f == NULL) 867 if (f == NULL)
@@ -974,6 +998,7 @@ _evas_3d_mesh_color_pick_enable_get(Eo *obj EINA_UNUSED, Evas_3D_Mesh_Data *pd)
974EOLIAN static Eina_Bool 998EOLIAN static Eina_Bool
975_evas_3d_mesh_color_pick_enable_set(Eo *obj, Evas_3D_Mesh_Data *pd, Eina_Bool _enabled) 999_evas_3d_mesh_color_pick_enable_set(Eo *obj, Evas_3D_Mesh_Data *pd, Eina_Bool _enabled)
976{ 1000{
1001 evas_object_async_block(eo_data_scope_get(obj, EVAS_OBJECT_CLASS));
977 if (pd->color_pick_enabled != _enabled) 1002 if (pd->color_pick_enabled != _enabled)
978 pd->color_pick_enabled = _enabled; 1003 pd->color_pick_enabled = _enabled;
979 eo_do(obj, evas_3d_object_change(EVAS_3D_STATE_MESH_COLOR_PICK, NULL)); 1004 eo_do(obj, evas_3d_object_change(EVAS_3D_STATE_MESH_COLOR_PICK, NULL));
diff --git a/src/lib/evas/canvas/evas_3d_node.c b/src/lib/evas/canvas/evas_3d_node.c
index 62e2c1c..ead5694 100644
--- a/src/lib/evas/canvas/evas_3d_node.c
+++ b/src/lib/evas/canvas/evas_3d_node.c
@@ -85,6 +85,7 @@ _evas_3d_node_evas_3d_object_change_notify(Eo *obj, Evas_3D_Node_Data *pd, Evas_
85 Eina_Bool scale; 85 Eina_Bool scale;
86 Eina_Bool parent_change; 86 Eina_Bool parent_change;
87 87
88 evas_object_async_block(eo_data_scope_get(obj, EVAS_OBJECT_CLASS));
88 /* Notify all scenes using this node that it has changed. */ 89 /* Notify all scenes using this node that it has changed. */
89 if (pd->scenes_root) 90 if (pd->scenes_root)
90 eina_hash_foreach(pd->scenes_root, _node_scene_root_change_notify, obj); 91 eina_hash_foreach(pd->scenes_root, _node_scene_root_change_notify, obj);
@@ -457,6 +458,7 @@ _node_update_done(Evas_3D_Node *obj, void *data EINA_UNUSED)
457EOLIAN static void 458EOLIAN static void
458_evas_3d_node_evas_3d_object_update_notify(Eo *obj, Evas_3D_Node_Data *pd EINA_UNUSED) 459_evas_3d_node_evas_3d_object_update_notify(Eo *obj, Evas_3D_Node_Data *pd EINA_UNUSED)
459{ 460{
461 evas_object_async_block(eo_data_scope_get(obj, EVAS_OBJECT_CLASS));
460 /* Update transform. */ 462 /* Update transform. */
461 evas_3d_node_tree_traverse(obj, EVAS_3D_TREE_TRAVERSE_LEVEL_ORDER, EINA_FALSE, 463 evas_3d_node_tree_traverse(obj, EVAS_3D_TREE_TRAVERSE_LEVEL_ORDER, EINA_FALSE,
462 _node_transform_update, NULL); 464 _node_transform_update, NULL);
@@ -933,6 +935,7 @@ _evas_3d_node_member_add(Eo *obj, Evas_3D_Node_Data *pd, Evas_3D_Node *member)
933 ERR("Failed to add a member node (adding to itself)."); 935 ERR("Failed to add a member node (adding to itself).");
934 return; 936 return;
935 } 937 }
938 evas_object_async_block(eo_data_scope_get(obj, EVAS_OBJECT_CLASS));
936 Evas_3D_Node_Data *pdmember = eo_data_scope_get(member, MY_CLASS); 939 Evas_3D_Node_Data *pdmember = eo_data_scope_get(member, MY_CLASS);
937 if (pdmember->parent == obj) 940 if (pdmember->parent == obj)
938 return; 941 return;
@@ -973,6 +976,7 @@ _evas_3d_node_member_del(Eo *obj, Evas_3D_Node_Data *pd, Evas_3D_Node *member)
973 return; 976 return;
974 } 977 }
975 978
979 evas_object_async_block(eo_data_scope_get(obj, EVAS_OBJECT_CLASS));
976 /* Delete the member node. */ 980 /* Delete the member node. */
977 pd->members = eina_list_remove(pd->members, member); 981 pd->members = eina_list_remove(pd->members, member);
978 pdmember->parent = NULL; 982 pdmember->parent = NULL;
@@ -996,12 +1000,14 @@ _evas_3d_node_parent_get(Eo *obj EINA_UNUSED, Evas_3D_Node_Data *pd)
996EOLIAN static const Eina_List * 1000EOLIAN static const Eina_List *
997_evas_3d_node_member_list_get(Eo *obj EINA_UNUSED, Evas_3D_Node_Data *pd) 1001_evas_3d_node_member_list_get(Eo *obj EINA_UNUSED, Evas_3D_Node_Data *pd)
998{ 1002{
1003 evas_object_async_block(eo_data_scope_get(obj, EVAS_OBJECT_CLASS));
999 return pd->members; 1004 return pd->members;
1000} 1005}
1001 1006
1002EOLIAN static void 1007EOLIAN static void
1003_evas_3d_node_position_set(Eo *obj, Evas_3D_Node_Data *pd, Evas_Real x, Evas_Real y, Evas_Real z) 1008_evas_3d_node_position_set(Eo *obj, Evas_3D_Node_Data *pd, Evas_Real x, Evas_Real y, Evas_Real z)
1004{ 1009{
1010 evas_object_async_block(eo_data_scope_get(obj, EVAS_OBJECT_CLASS));
1005 pd->position.x = x; 1011 pd->position.x = x;
1006 pd->position.y = y; 1012 pd->position.y = y;
1007 pd->position.z = z; 1013 pd->position.z = z;
@@ -1012,6 +1018,7 @@ _evas_3d_node_position_set(Eo *obj, Evas_3D_Node_Data *pd, Evas_Real x, Evas_Rea
1012EOLIAN static void 1018EOLIAN static void
1013_evas_3d_node_orientation_set(Eo *obj, Evas_3D_Node_Data *pd, Evas_Real x, Evas_Real y, Evas_Real z, Evas_Real w) 1019_evas_3d_node_orientation_set(Eo *obj, Evas_3D_Node_Data *pd, Evas_Real x, Evas_Real y, Evas_Real z, Evas_Real w)
1014{ 1020{
1021 evas_object_async_block(eo_data_scope_get(obj, EVAS_OBJECT_CLASS));
1015 pd->orientation.x = x; 1022 pd->orientation.x = x;
1016 pd->orientation.y = y; 1023 pd->orientation.y = y;
1017 pd->orientation.z = z; 1024 pd->orientation.z = z;
@@ -1028,6 +1035,7 @@ _evas_3d_node_orientation_angle_axis_set(Eo *obj, Evas_3D_Node_Data *pd,
1028 Evas_Real s = sin(half_angle); 1035 Evas_Real s = sin(half_angle);
1029 Evas_Vec3 axis; 1036 Evas_Vec3 axis;
1030 1037
1038 evas_object_async_block(eo_data_scope_get(obj, EVAS_OBJECT_CLASS));
1031 evas_vec3_set(&axis, x, y, z); 1039 evas_vec3_set(&axis, x, y, z);
1032 evas_vec3_normalize(&axis, &axis); 1040 evas_vec3_normalize(&axis, &axis);
1033 1041
@@ -1042,6 +1050,7 @@ _evas_3d_node_orientation_angle_axis_set(Eo *obj, Evas_3D_Node_Data *pd,
1042EOLIAN static void 1050EOLIAN static void
1043_evas_3d_node_scale_set(Eo *obj, Evas_3D_Node_Data *pd, Evas_Real x, Evas_Real y, Evas_Real z) 1051_evas_3d_node_scale_set(Eo *obj, Evas_3D_Node_Data *pd, Evas_Real x, Evas_Real y, Evas_Real z)
1044{ 1052{
1053 evas_object_async_block(eo_data_scope_get(obj, EVAS_OBJECT_CLASS));
1045 pd->scale.x = x; 1054 pd->scale.x = x;
1046 pd->scale.y = y; 1055 pd->scale.y = y;
1047 pd->scale.z = z; 1056 pd->scale.z = z;
@@ -1134,6 +1143,7 @@ _evas_3d_node_scale_get(Eo *obj, Evas_3D_Node_Data *pd, Evas_3D_Space space,
1134EOLIAN static void 1143EOLIAN static void
1135_evas_3d_node_position_inherit_set(Eo *obj, Evas_3D_Node_Data *pd, Eina_Bool inherit) 1144_evas_3d_node_position_inherit_set(Eo *obj, Evas_3D_Node_Data *pd, Eina_Bool inherit)
1136{ 1145{
1146 evas_object_async_block(eo_data_scope_get(obj, EVAS_OBJECT_CLASS));
1137 pd->position_inherit = inherit; 1147 pd->position_inherit = inherit;
1138 eo_do(obj, evas_3d_object_change(EVAS_3D_STATE_NODE_TRANSFORM_POSITION, NULL)); 1148 eo_do(obj, evas_3d_object_change(EVAS_3D_STATE_NODE_TRANSFORM_POSITION, NULL));
1139} 1149}
@@ -1141,6 +1151,7 @@ _evas_3d_node_position_inherit_set(Eo *obj, Evas_3D_Node_Data *pd, Eina_Bool inh
1141EOLIAN static void 1151EOLIAN static void
1142_evas_3d_node_orientation_inherit_set(Eo *obj, Evas_3D_Node_Data *pd, Eina_Bool inherit) 1152_evas_3d_node_orientation_inherit_set(Eo *obj, Evas_3D_Node_Data *pd, Eina_Bool inherit)
1143{ 1153{
1154 evas_object_async_block(eo_data_scope_get(obj, EVAS_OBJECT_CLASS));
1144 pd->orientation_inherit = inherit; 1155 pd->orientation_inherit = inherit;
1145 eo_do(obj, evas_3d_object_change(EVAS_3D_STATE_NODE_TRANSFORM_ORIENTATION, NULL)); 1156 eo_do(obj, evas_3d_object_change(EVAS_3D_STATE_NODE_TRANSFORM_ORIENTATION, NULL));
1146} 1157}
@@ -1148,6 +1159,7 @@ _evas_3d_node_orientation_inherit_set(Eo *obj, Evas_3D_Node_Data *pd, Eina_Bool
1148EOLIAN static void 1159EOLIAN static void
1149_evas_3d_node_scale_inherit_set(Eo *obj, Evas_3D_Node_Data *pd, Eina_Bool inherit) 1160_evas_3d_node_scale_inherit_set(Eo *obj, Evas_3D_Node_Data *pd, Eina_Bool inherit)
1150{ 1161{
1162 evas_object_async_block(eo_data_scope_get(obj, EVAS_OBJECT_CLASS));
1151 pd->scale_inherit = inherit; 1163 pd->scale_inherit = inherit;
1152 eo_do(obj, evas_3d_object_change(EVAS_3D_STATE_NODE_TRANSFORM_SCALE, NULL)); 1164 eo_do(obj, evas_3d_object_change(EVAS_3D_STATE_NODE_TRANSFORM_SCALE, NULL));
1153} 1165}
@@ -1179,6 +1191,7 @@ _evas_3d_node_look_at_set(Eo *obj, Evas_3D_Node_Data *pd,
1179 Evas_Vec3 up; 1191 Evas_Vec3 up;
1180 Evas_Vec3 x, y, z; 1192 Evas_Vec3 x, y, z;
1181 1193
1194 evas_object_async_block(eo_data_scope_get(obj, EVAS_OBJECT_CLASS));
1182 /* Target position in parent space. */ 1195 /* Target position in parent space. */
1183 if (target_space == EVAS_3D_SPACE_LOCAL) 1196 if (target_space == EVAS_3D_SPACE_LOCAL)
1184 { 1197 {
@@ -1292,6 +1305,7 @@ _evas_3d_node_camera_set(Eo *obj, Evas_3D_Node_Data *pd, Evas_3D_Camera *camera)
1292 if (pd->data.camera.camera == camera) 1305 if (pd->data.camera.camera == camera)
1293 return; 1306 return;
1294 1307
1308 evas_object_async_block(eo_data_scope_get(obj, EVAS_OBJECT_CLASS));
1295 if (pd->data.camera.camera) 1309 if (pd->data.camera.camera)
1296 { 1310 {
1297 /* Detach previous camera object. */ 1311 /* Detach previous camera object. */
@@ -1327,6 +1341,7 @@ _evas_3d_node_light_set(Eo *obj, Evas_3D_Node_Data *pd, Evas_3D_Light *light)
1327 if (pd->data.light.light == light) 1341 if (pd->data.light.light == light)
1328 return; 1342 return;
1329 1343
1344 evas_object_async_block(eo_data_scope_get(obj, EVAS_OBJECT_CLASS));
1330 if (pd->data.light.light) 1345 if (pd->data.light.light)
1331 { 1346 {
1332 /* Detach previous light object. */ 1347 /* Detach previous light object. */
@@ -1367,6 +1382,7 @@ _evas_3d_node_mesh_add(Eo *obj, Evas_3D_Node_Data *pd, Evas_3D_Mesh *mesh)
1367 return; 1382 return;
1368 } 1383 }
1369 1384
1385 evas_object_async_block(eo_data_scope_get(obj, EVAS_OBJECT_CLASS));
1370 if ((nm = _node_mesh_new(obj, mesh)) == NULL) 1386 if ((nm = _node_mesh_new(obj, mesh)) == NULL)
1371 { 1387 {
1372 ERR("Failed to create node mesh."); 1388 ERR("Failed to create node mesh.");
@@ -1401,6 +1417,7 @@ _evas_3d_node_mesh_del(Eo *obj, Evas_3D_Node_Data *pd, Evas_3D_Mesh *mesh)
1401 return; 1417 return;
1402 } 1418 }
1403 1419
1420 evas_object_async_block(eo_data_scope_get(obj, EVAS_OBJECT_CLASS));
1404 if (!eina_hash_del(pd->data.mesh.node_meshes, &mesh, NULL)) 1421 if (!eina_hash_del(pd->data.mesh.node_meshes, &mesh, NULL))
1405 { 1422 {
1406 ERR("The given mesh doesn't belong to this node."); 1423 ERR("The given mesh doesn't belong to this node.");
@@ -1418,6 +1435,7 @@ _evas_3d_node_mesh_del(Eo *obj, Evas_3D_Node_Data *pd, Evas_3D_Mesh *mesh)
1418EOLIAN static const Eina_List * 1435EOLIAN static const Eina_List *
1419_evas_3d_node_mesh_list_get(Eo *obj EINA_UNUSED, Evas_3D_Node_Data *pd) 1436_evas_3d_node_mesh_list_get(Eo *obj EINA_UNUSED, Evas_3D_Node_Data *pd)
1420{ 1437{
1438 evas_object_async_block(eo_data_scope_get(obj, EVAS_OBJECT_CLASS));
1421 return pd->data.mesh.meshes; 1439 return pd->data.mesh.meshes;
1422} 1440}
1423 1441
@@ -1432,6 +1450,7 @@ _evas_3d_node_mesh_frame_set(Eo *obj, Evas_3D_Node_Data *pd, Evas_3D_Mesh *mesh,
1432 return; 1450 return;
1433 } 1451 }
1434 1452
1453 evas_object_async_block(eo_data_scope_get(obj, EVAS_OBJECT_CLASS));
1435 if ((nm = eina_hash_find(pd->data.mesh.node_meshes, &mesh)) == NULL) 1454 if ((nm = eina_hash_find(pd->data.mesh.node_meshes, &mesh)) == NULL)
1436 { 1455 {
1437 ERR("The given mesh doesn't belongs to this node."); 1456 ERR("The given mesh doesn't belongs to this node.");
@@ -1453,6 +1472,7 @@ _evas_3d_node_mesh_frame_get(Eo *obj EINA_UNUSED, Evas_3D_Node_Data *pd, Evas_3D
1453 return 0; 1472 return 0;
1454 } 1473 }
1455 1474
1475 evas_object_async_block(eo_data_scope_get(obj, EVAS_OBJECT_CLASS));
1456 if ((nm = eina_hash_find(pd->data.mesh.node_meshes, &mesh)) == NULL) 1476 if ((nm = eina_hash_find(pd->data.mesh.node_meshes, &mesh)) == NULL)
1457 { 1477 {
1458 ERR("The given mesh doesn't belongs to this node."); 1478 ERR("The given mesh doesn't belongs to this node.");
diff --git a/src/lib/evas/canvas/evas_3d_object.c b/src/lib/evas/canvas/evas_3d_object.c
index 8116d09..ba1ecdc 100644
--- a/src/lib/evas/canvas/evas_3d_object.c
+++ b/src/lib/evas/canvas/evas_3d_object.c
@@ -22,8 +22,9 @@ EOLIAN static Evas *
22} 22}
23 23
24EOLIAN static void 24EOLIAN static void
25_evas_3d_object_type_set(Eo *obj EINA_UNUSED, Evas_3D_Object_Data *pd, Evas_3D_Object_Type type) 25_evas_3d_object_type_set(Eo *obj, Evas_3D_Object_Data *pd, Evas_3D_Object_Type type)
26{ 26{
27 evas_object_async_block(eo_data_scope_get(obj, EVAS_OBJECT_CLASS));
27 pd->type = type; 28 pd->type = type;
28} 29}
29 30
@@ -46,6 +47,7 @@ _evas_3d_object_change(Eo *obj, Evas_3D_Object_Data *pd, Evas_3D_State state, Ev
46 if (pd->dirty[state]) 47 if (pd->dirty[state])
47 return; 48 return;
48 49
50 evas_object_async_block(eo_data_scope_get(obj, EVAS_OBJECT_CLASS));
49 pd->dirty[state] = EINA_TRUE; 51 pd->dirty[state] = EINA_TRUE;
50 pd->dirty[EVAS_3D_STATE_ANY] = EINA_TRUE; 52 pd->dirty[EVAS_3D_STATE_ANY] = EINA_TRUE;
51 53
@@ -58,6 +60,7 @@ _evas_3d_object_update(Eo *obj, Evas_3D_Object_Data *pd)
58 if (!pd->dirty[EVAS_3D_STATE_ANY]) 60 if (!pd->dirty[EVAS_3D_STATE_ANY])
59 return; 61 return;
60 62
63 evas_object_async_block(eo_data_scope_get(obj, EVAS_OBJECT_CLASS));
61 eo_do(obj, evas_3d_object_update_notify()); 64 eo_do(obj, evas_3d_object_update_notify());
62 65
63 memset(&pd->dirty[0], 0x00, sizeof(Eina_Bool) * EVAS_3D_STATE_MAX); 66 memset(&pd->dirty[0], 0x00, sizeof(Eina_Bool) * EVAS_3D_STATE_MAX);
diff --git a/src/lib/evas/canvas/evas_3d_scene.c b/src/lib/evas/canvas/evas_3d_scene.c
index a26b6c8..edab292 100644
--- a/src/lib/evas/canvas/evas_3d_scene.c
+++ b/src/lib/evas/canvas/evas_3d_scene.c
@@ -24,11 +24,12 @@ evas_3d_scene_data_fini(Evas_3D_Scene_Public_Data *data)
24} 24}
25 25
26EOLIAN static void 26EOLIAN static void
27_evas_3d_scene_evas_3d_object_change_notify(Eo *eo_obj EINA_UNUSED, Evas_3D_Scene_Data *pd, Evas_3D_State state EINA_UNUSED, Evas_3D_Object *ref EINA_UNUSED) 27_evas_3d_scene_evas_3d_object_change_notify(Eo *eo_obj, Evas_3D_Scene_Data *pd, Evas_3D_State state EINA_UNUSED, Evas_3D_Object *ref EINA_UNUSED)
28{ 28{
29 Eina_List *l; 29 Eina_List *l;
30 Evas_Object *eo; 30 Evas_Object *eo;
31 31
32 evas_object_async_block(eo_data_scope_get(eo_obj, EVAS_OBJECT_CLASS));
32 EINA_LIST_FOREACH(pd->images, l, eo) 33 EINA_LIST_FOREACH(pd->images, l, eo)
33 { 34 {
34 Evas_Object_Protected_Data *obj = eo_data_scope_get(eo, EVAS_OBJECT_CLASS); 35 Evas_Object_Protected_Data *obj = eo_data_scope_get(eo, EVAS_OBJECT_CLASS);
@@ -37,8 +38,9 @@ _evas_3d_scene_evas_3d_object_change_notify(Eo *eo_obj EINA_UNUSED, Evas_3D_Scen
37} 38}
38 39
39EOLIAN static void 40EOLIAN static void
40_evas_3d_scene_evas_3d_object_update_notify(Eo *obj EINA_UNUSED, Evas_3D_Scene_Data *pd) 41_evas_3d_scene_evas_3d_object_update_notify(Eo *obj, Evas_3D_Scene_Data *pd)
41{ 42{
43 evas_object_async_block(eo_data_scope_get(obj, EVAS_OBJECT_CLASS));
42 if (pd->root_node) 44 if (pd->root_node)
43 { 45 {
44 eo_do(pd->root_node, evas_3d_object_update()); 46 eo_do(pd->root_node, evas_3d_object_update());
@@ -80,6 +82,7 @@ _evas_3d_scene_root_node_set(Eo *obj, Evas_3D_Scene_Data *pd, Evas_3D_Node *node
80 if (pd->root_node == node) 82 if (pd->root_node == node)
81 return; 83 return;
82 84
85 evas_object_async_block(eo_data_scope_get(obj, EVAS_OBJECT_CLASS));
83 if (pd->root_node) 86 if (pd->root_node)
84 { 87 {
85 evas_3d_node_scene_root_del(pd->root_node, obj); 88 evas_3d_node_scene_root_del(pd->root_node, obj);
@@ -109,6 +112,7 @@ _evas_3d_scene_camera_node_set(Eo *obj, Evas_3D_Scene_Data *pd, Evas_3D_Node *no
109 if (pd->camera_node == node) 112 if (pd->camera_node == node)
110 return; 113 return;
111 114
115 evas_object_async_block(eo_data_scope_get(obj, EVAS_OBJECT_CLASS));
112 if (pd->camera_node) 116 if (pd->camera_node)
113 { 117 {
114 evas_3d_node_scene_camera_del(pd->camera_node, obj); 118 evas_3d_node_scene_camera_del(pd->camera_node, obj);
@@ -135,6 +139,7 @@ _evas_3d_scene_camera_node_get(Eo *obj EINA_UNUSED, Evas_3D_Scene_Data *pd)
135EOLIAN static void 139EOLIAN static void
136_evas_3d_scene_size_set(Eo *obj EINA_UNUSED, Evas_3D_Scene_Data *pd, int w, int h) 140_evas_3d_scene_size_set(Eo *obj EINA_UNUSED, Evas_3D_Scene_Data *pd, int w, int h)
137{ 141{
142 evas_object_async_block(eo_data_scope_get(obj, EVAS_OBJECT_CLASS));
138 pd->w = w; 143 pd->w = w;
139 pd->h = h; 144 pd->h = h;
140 eo_do(obj, evas_3d_object_change(EVAS_3D_STATE_SCENE_SIZE, NULL)); 145 eo_do(obj, evas_3d_object_change(EVAS_3D_STATE_SCENE_SIZE, NULL));
@@ -151,6 +156,7 @@ EOLIAN static void
151_evas_3d_scene_background_color_set(Eo *obj EINA_UNUSED, Evas_3D_Scene_Data *pd, 156_evas_3d_scene_background_color_set(Eo *obj EINA_UNUSED, Evas_3D_Scene_Data *pd,
152 Evas_Real r, Evas_Real g, Evas_Real b, Evas_Real a) 157 Evas_Real r, Evas_Real g, Evas_Real b, Evas_Real a)
153{ 158{
159 evas_object_async_block(eo_data_scope_get(obj, EVAS_OBJECT_CLASS));
154 evas_color_set(&pd->bg_color, r, g, b, a); 160 evas_color_set(&pd->bg_color, r, g, b, a);
155 eo_do(obj, evas_3d_object_change(EVAS_3D_STATE_SCENE_BACKGROUND_COLOR, NULL)); 161 eo_do(obj, evas_3d_object_change(EVAS_3D_STATE_SCENE_BACKGROUND_COLOR, NULL));
156} 162}
@@ -630,12 +636,13 @@ _evas_3d_scene_pick(Eo *obj, Evas_3D_Scene_Data *pd, Evas_Real x, Evas_Real y,
630 Evas_3D_Camera_Data *pd_camera; 636 Evas_3D_Camera_Data *pd_camera;
631 Evas_3D_Object_Data *pd_parent; 637 Evas_3D_Object_Data *pd_parent;
632 Evas_Public_Data *e; 638 Evas_Public_Data *e;
633 int tex, px, py;; 639 int tex = 0, px, py;;
634 double redcomponent; 640 double redcomponent;
635 Eina_Stringshare *tmp; 641 Eina_Stringshare *tmp;
636 Eina_Array *arr = NULL; 642 Eina_Array *arr = NULL;
637 Eina_Bool update_scene = EINA_FALSE; 643 Eina_Bool update_scene = EINA_FALSE;
638 644
645 evas_object_async_block(eo_data_scope_get(obj, EVAS_OBJECT_CLASS));
639 pd_parent = eo_data_scope_get(obj, EVAS_3D_OBJECT_CLASS); 646 pd_parent = eo_data_scope_get(obj, EVAS_3D_OBJECT_CLASS);
640 e = eo_data_scope_get(pd_parent->evas, EVAS_CANVAS_CLASS); 647 e = eo_data_scope_get(pd_parent->evas, EVAS_CANVAS_CLASS);
641 648
@@ -752,6 +759,7 @@ _evas_3d_scene_exist(Eo *obj, Evas_3D_Scene_Data *pd, Evas_Real x, Evas_Real y,
752 data.s = 0.0; 759 data.s = 0.0;
753 data.t = 0.0; 760 data.t = 0.0;
754 761
762 evas_object_async_block(eo_data_scope_get(obj, EVAS_OBJECT_CLASS));
755 /* Update the scene graph. */ 763 /* Update the scene graph. */
756 eo_do(obj, evas_3d_object_update()); 764 eo_do(obj, evas_3d_object_update());
757 pd_camera_node = eo_data_scope_get(pd->camera_node, EVAS_3D_NODE_CLASS); 765 pd_camera_node = eo_data_scope_get(pd->camera_node, EVAS_3D_NODE_CLASS);
@@ -778,6 +786,7 @@ _evas_3d_scene_pick_member_list_get(Eo *obj, Evas_3D_Scene_Data *pd, Evas_Real x
778 void *node; 786 void *node;
779 Eina_Bool pick = EINA_FALSE; 787 Eina_Bool pick = EINA_FALSE;
780 788
789 evas_object_async_block(eo_data_scope_get(obj, EVAS_OBJECT_CLASS));
781 /* Check pick for given scene. */ 790 /* Check pick for given scene. */
782 pick = eo_do(obj, evas_3d_scene_pick(x, y, NULL, NULL, NULL, NULL)); 791 pick = eo_do(obj, evas_3d_scene_pick(x, y, NULL, NULL, NULL, NULL));
783 792
@@ -805,6 +814,7 @@ _evas_3d_scene_shadows_enable_get(Eo *obj EINA_UNUSED, Evas_3D_Scene_Data *pd)
805EOLIAN static void 814EOLIAN static void
806_evas_3d_scene_shadows_enable_set(Eo *obj EINA_UNUSED, Evas_3D_Scene_Data *pd, Eina_Bool _shadows_enabled) 815_evas_3d_scene_shadows_enable_set(Eo *obj EINA_UNUSED, Evas_3D_Scene_Data *pd, Eina_Bool _shadows_enabled)
807{ 816{
817 evas_object_async_block(eo_data_scope_get(obj, EVAS_OBJECT_CLASS));
808 pd->shadows_enabled = _shadows_enabled; 818 pd->shadows_enabled = _shadows_enabled;
809 eo_do(obj, evas_3d_object_change(EVAS_3D_STATE_SCENE_SHADOWS_ENABLED, NULL)); 819 eo_do(obj, evas_3d_object_change(EVAS_3D_STATE_SCENE_SHADOWS_ENABLED, NULL));
810} 820}
@@ -818,6 +828,7 @@ _evas_3d_scene_color_pick_enable_get(Eo *obj EINA_UNUSED, Evas_3D_Scene_Data *pd
818EOLIAN static Eina_Bool 828EOLIAN static Eina_Bool
819_evas_3d_scene_color_pick_enable_set(Eo *obj EINA_UNUSED, Evas_3D_Scene_Data *pd, Eina_Bool _enabled) 829_evas_3d_scene_color_pick_enable_set(Eo *obj EINA_UNUSED, Evas_3D_Scene_Data *pd, Eina_Bool _enabled)
820{ 830{
831 evas_object_async_block(eo_data_scope_get(obj, EVAS_OBJECT_CLASS));
821 if (pd->color_pick_enabled != _enabled) 832 if (pd->color_pick_enabled != _enabled)
822 pd->color_pick_enabled = _enabled; 833 pd->color_pick_enabled = _enabled;
823 834
diff --git a/src/lib/evas/canvas/evas_3d_texture.c b/src/lib/evas/canvas/evas_3d_texture.c
index 8945fad..a324eb6 100644
--- a/src/lib/evas/canvas/evas_3d_texture.c
+++ b/src/lib/evas/canvas/evas_3d_texture.c
@@ -196,6 +196,7 @@ EOLIAN static void
196_evas_3d_texture_evas_3d_object_change_notify(Eo *obj, Evas_3D_Texture_Data *pd, Evas_3D_State state EINA_UNUSED, Evas_3D_Object *ref EINA_UNUSED) 196_evas_3d_texture_evas_3d_object_change_notify(Eo *obj, Evas_3D_Texture_Data *pd, Evas_3D_State state EINA_UNUSED, Evas_3D_Object *ref EINA_UNUSED)
197{ 197{
198 198
199 evas_object_async_block(eo_data_scope_get(obj, EVAS_OBJECT_CLASS));
199 if (pd->materials) 200 if (pd->materials)
200 eina_hash_foreach(pd->materials, _texture_material_change_notify, obj); 201 eina_hash_foreach(pd->materials, _texture_material_change_notify, obj);
201} 202}
@@ -203,6 +204,7 @@ _evas_3d_texture_evas_3d_object_change_notify(Eo *obj, Evas_3D_Texture_Data *pd,
203EOLIAN static void 204EOLIAN static void
204_evas_3d_texture_evas_3d_object_update_notify(Eo *obj, Evas_3D_Texture_Data *pd) 205_evas_3d_texture_evas_3d_object_update_notify(Eo *obj, Evas_3D_Texture_Data *pd)
205{ 206{
207 evas_object_async_block(eo_data_scope_get(obj, EVAS_OBJECT_CLASS));
206 if (pd->source) 208 if (pd->source)
207 { 209 {
208 Eo *evas = NULL; 210 Eo *evas = NULL;
@@ -311,19 +313,21 @@ _evas_3d_texture_eo_base_constructor(Eo *obj, Evas_3D_Texture_Data *pd EINA_UNUS
311EOLIAN static void 313EOLIAN static void
312_evas_3d_texture_eo_base_destructor(Eo *obj, Evas_3D_Texture_Data *pd EINA_UNUSED) 314_evas_3d_texture_eo_base_destructor(Eo *obj, Evas_3D_Texture_Data *pd EINA_UNUSED)
313{ 315{
316 evas_object_async_block(eo_data_scope_get(obj, EVAS_OBJECT_CLASS));
314 //evas_3d_object_unreference(&pd->base); 317 //evas_3d_object_unreference(&pd->base);
315 _texture_fini(obj); 318 _texture_fini(obj);
316 eo_do_super(obj, MY_CLASS, eo_destructor()); 319 eo_do_super(obj, MY_CLASS, eo_destructor());
317} 320}
318 321
319EOLIAN static void 322EOLIAN static void
320_evas_3d_texture_data_set(Eo *obj EINA_UNUSED, Evas_3D_Texture_Data *pd, Evas_3D_Color_Format color_format, 323_evas_3d_texture_data_set(Eo *obj, Evas_3D_Texture_Data *pd, Evas_3D_Color_Format color_format,
321 Evas_3D_Pixel_Format pixel_format, int w, int h, const void *data) 324 Evas_3D_Pixel_Format pixel_format, int w, int h, const void *data)
322{ 325{
323 Eo *evas = NULL; 326 Eo *evas = NULL;
324 eo_do(obj, evas = evas_common_evas_get()); 327 eo_do(obj, evas = evas_common_evas_get());
325 Evas_Public_Data *e = eo_data_scope_get(evas, EVAS_CANVAS_CLASS); 328 Evas_Public_Data *e = eo_data_scope_get(evas, EVAS_CANVAS_CLASS);
326 329
330 evas_object_async_block(eo_data_scope_get(obj, EVAS_OBJECT_CLASS));
327 if (!pd->engine_data && e->engine.func->texture_new) 331 if (!pd->engine_data && e->engine.func->texture_new)
328 pd->engine_data = e->engine.func->texture_new(e->engine.data.output); 332 pd->engine_data = e->engine.func->texture_new(e->engine.data.output);
329 333
@@ -341,6 +345,7 @@ _evas_3d_texture_file_set(Eo *obj, Evas_3D_Texture_Data *pd, const char *file, c
341 eo_do(obj, evas = evas_common_evas_get()); 345 eo_do(obj, evas = evas_common_evas_get());
342 Evas_Public_Data *e = eo_data_scope_get(evas, EVAS_CANVAS_CLASS); 346 Evas_Public_Data *e = eo_data_scope_get(evas, EVAS_CANVAS_CLASS);
343 347
348 evas_object_async_block(eo_data_scope_get(obj, EVAS_OBJECT_CLASS));
344 if (!pd->engine_data && e->engine.func->texture_new) 349 if (!pd->engine_data && e->engine.func->texture_new)
345 pd->engine_data = e->engine.func->texture_new(e->engine.data.output); 350 pd->engine_data = e->engine.func->texture_new(e->engine.data.output);
346 351
@@ -361,6 +366,7 @@ _evas_3d_texture_source_set(Eo *obj , Evas_3D_Texture_Data *pd, Evas_Object *sou
361 if (source == pd->source) 366 if (source == pd->source)
362 return; 367 return;
363 368
369 evas_object_async_block(eo_data_scope_get(obj, EVAS_OBJECT_CLASS));
364 _texture_fini(obj); 370 _texture_fini(obj);
365 371
366 if (source == NULL) 372 if (source == NULL)
@@ -391,7 +397,7 @@ _evas_3d_texture_source_set(Eo *obj , Evas_3D_Texture_Data *pd, Evas_Object *sou
391} 397}
392 398
393EOLIAN static void 399EOLIAN static void
394_evas_3d_texture_source_visible_set(Eo *obj EINA_UNUSED, Evas_3D_Texture_Data *pd, Eina_Bool visible) 400_evas_3d_texture_source_visible_set(Eo *obj, Evas_3D_Texture_Data *pd, Eina_Bool visible)
395{ 401{
396 Evas_Object_Protected_Data *src_obj; 402 Evas_Object_Protected_Data *src_obj;
397 403
@@ -403,6 +409,7 @@ _evas_3d_texture_source_visible_set(Eo *obj EINA_UNUSED, Evas_3D_Texture_Data *p
403 if (src_obj->proxy->src_invisible == !visible) 409 if (src_obj->proxy->src_invisible == !visible)
404 return; 410 return;
405 411
412 evas_object_async_block(eo_data_scope_get(obj, EVAS_OBJECT_CLASS));
406 EINA_COW_WRITE_BEGIN(evas_object_proxy_cow, src_obj->proxy, Evas_Object_Proxy_Data, proxy_write) 413 EINA_COW_WRITE_BEGIN(evas_object_proxy_cow, src_obj->proxy, Evas_Object_Proxy_Data, proxy_write)
407 proxy_write->src_invisible = !visible; 414 proxy_write->src_invisible = !visible;
408 EINA_COW_WRITE_END(evas_object_proxy_cow, src_obj->proxy, proxy_write); 415 EINA_COW_WRITE_END(evas_object_proxy_cow, src_obj->proxy, proxy_write);
@@ -448,6 +455,7 @@ _evas_3d_texture_size_get(Eo *obj, Evas_3D_Texture_Data *pd, int *w, int *h)
448 Eo *evas = NULL; 455 Eo *evas = NULL;
449 eo_do(obj, evas = evas_common_evas_get()); 456 eo_do(obj, evas = evas_common_evas_get());
450 Evas_Public_Data *e = eo_data_scope_get(evas, EVAS_CANVAS_CLASS); 457 Evas_Public_Data *e = eo_data_scope_get(evas, EVAS_CANVAS_CLASS);
458 evas_object_async_block(eo_data_scope_get(obj, EVAS_OBJECT_CLASS));
451 if (e->engine.func->texture_size_get) 459 if (e->engine.func->texture_size_get)
452 { 460 {
453 e->engine.func->texture_size_get(e->engine.data.output, 461 e->engine.func->texture_size_get(e->engine.data.output,
@@ -461,6 +469,7 @@ _evas_3d_texture_wrap_set(Eo *obj, Evas_3D_Texture_Data *pd, Evas_3D_Wrap_Mode s
461 Eo *evas = NULL; 469 Eo *evas = NULL;
462 eo_do(obj, evas = evas_common_evas_get()); 470 eo_do(obj, evas = evas_common_evas_get());
463 Evas_Public_Data *e = eo_data_scope_get(evas, EVAS_CANVAS_CLASS); 471 Evas_Public_Data *e = eo_data_scope_get(evas, EVAS_CANVAS_CLASS);
472 evas_object_async_block(eo_data_scope_get(obj, EVAS_OBJECT_CLASS));
464 if (e->engine.func->texture_wrap_set) 473 if (e->engine.func->texture_wrap_set)
465 { 474 {
466 e->engine.func->texture_wrap_set(e->engine.data.output, 475 e->engine.func->texture_wrap_set(e->engine.data.output,
@@ -475,6 +484,7 @@ _evas_3d_texture_wrap_get(Eo *obj, Evas_3D_Texture_Data *pd, Evas_3D_Wrap_Mode *
475 Eo *evas = NULL; 484 Eo *evas = NULL;
476 eo_do(obj, evas = evas_common_evas_get()); 485 eo_do(obj, evas = evas_common_evas_get());
477 Evas_Public_Data *e = eo_data_scope_get(evas, EVAS_CANVAS_CLASS); 486 Evas_Public_Data *e = eo_data_scope_get(evas, EVAS_CANVAS_CLASS);
487 evas_object_async_block(eo_data_scope_get(obj, EVAS_OBJECT_CLASS));
478 if (e->engine.func->texture_wrap_set) 488 if (e->engine.func->texture_wrap_set)
479 { 489 {
480 e->engine.func->texture_wrap_get(e->engine.data.output, 490 e->engine.func->texture_wrap_get(e->engine.data.output,
@@ -488,6 +498,7 @@ _evas_3d_texture_filter_set(Eo *obj, Evas_3D_Texture_Data *pd, Evas_3D_Texture_F
488 Eo *evas = NULL; 498 Eo *evas = NULL;
489 eo_do(obj, evas = evas_common_evas_get()); 499 eo_do(obj, evas = evas_common_evas_get());
490 Evas_Public_Data *e = eo_data_scope_get(evas, EVAS_CANVAS_CLASS); 500 Evas_Public_Data *e = eo_data_scope_get(evas, EVAS_CANVAS_CLASS);
501 evas_object_async_block(eo_data_scope_get(obj, EVAS_OBJECT_CLASS));
491 if (e->engine.func->texture_filter_set) 502 if (e->engine.func->texture_filter_set)
492 { 503 {
493 e->engine.func->texture_filter_set(e->engine.data.output, 504 e->engine.func->texture_filter_set(e->engine.data.output,
@@ -502,6 +513,7 @@ _evas_3d_texture_filter_get(Eo *obj EINA_UNUSED, Evas_3D_Texture_Data *pd, Evas_
502 Eo *evas = NULL; 513 Eo *evas = NULL;
503 eo_do(obj, evas = evas_common_evas_get()); 514 eo_do(obj, evas = evas_common_evas_get());
504 Evas_Public_Data *e = eo_data_scope_get(evas, EVAS_CANVAS_CLASS); 515 Evas_Public_Data *e = eo_data_scope_get(evas, EVAS_CANVAS_CLASS);
516 evas_object_async_block(eo_data_scope_get(obj, EVAS_OBJECT_CLASS));
505 if (e->engine.func->texture_filter_get) 517 if (e->engine.func->texture_filter_get)
506 { 518 {
507 e->engine.func->texture_filter_get(e->engine.data.output, 519 e->engine.func->texture_filter_get(e->engine.data.output,
diff --git a/src/lib/evas/canvas/evas_clip.c b/src/lib/evas/canvas/evas_clip.c
index 0e1d43a..833a7e4 100644
--- a/src/lib/evas/canvas/evas_clip.c
+++ b/src/lib/evas/canvas/evas_clip.c
@@ -230,6 +230,8 @@ _evas_object_clip_set(Eo *eo_obj, Evas_Object_Protected_Data *obj, Evas_Object *
230 return; 230 return;
231 MAGIC_CHECK_END(); 231 MAGIC_CHECK_END();
232 232
233 evas_object_async_block(obj);
234
233 clip = eo_data_scope_get(eo_clip, EVAS_OBJECT_CLASS); 235 clip = eo_data_scope_get(eo_clip, EVAS_OBJECT_CLASS);
234 if (obj->cur->clipper && obj->cur->clipper->object == eo_clip) return; 236 if (obj->cur->clipper && obj->cur->clipper->object == eo_clip) return;
235 if (eo_obj == eo_clip) 237 if (eo_obj == eo_clip)
@@ -264,7 +266,10 @@ _evas_object_clip_set(Eo *eo_obj, Evas_Object_Protected_Data *obj, Evas_Object *
264 return; 266 return;
265 } 267 }
266 268
267 if (evas_object_intercept_call_clip_set(eo_obj, obj, eo_clip)) return; 269 if (evas_object_intercept_call_clip_set(eo_obj, obj, eo_clip))
270 {
271 return;
272 }
268 // illegal to set anything but a rect or an image as a clip 273 // illegal to set anything but a rect or an image as a clip
269 if (clip->type != o_rect_type && clip->type != o_image_type) 274 if (clip->type != o_rect_type && clip->type != o_image_type)
270 { 275 {
@@ -391,6 +396,7 @@ _evas_object_clip_unset(Eo *eo_obj, Evas_Object_Protected_Data *obj)
391{ 396{
392 if (!obj->cur->clipper) return; 397 if (!obj->cur->clipper) return;
393 398
399 evas_object_async_block(obj);
394 obj->clip.cache_clipees_answer = eina_list_free(obj->clip.cache_clipees_answer); 400 obj->clip.cache_clipees_answer = eina_list_free(obj->clip.cache_clipees_answer);
395 401
396 /* unclip */ 402 /* unclip */
diff --git a/src/lib/evas/canvas/evas_font_dir.c b/src/lib/evas/canvas/evas_font_dir.c
index d540709..31debb4 100644
--- a/src/lib/evas/canvas/evas_font_dir.c
+++ b/src/lib/evas/canvas/evas_font_dir.c
@@ -1326,6 +1326,7 @@ evas_object_text_font_string_parse(char *buffer, char dest[14][256])
1326EOLIAN void 1326EOLIAN void
1327_evas_canvas_font_path_clear(Eo *eo_e EINA_UNUSED, Evas_Public_Data *evas) 1327_evas_canvas_font_path_clear(Eo *eo_e EINA_UNUSED, Evas_Public_Data *evas)
1328{ 1328{
1329 evas_canvas_async_block(evas);
1329 while (evas->font_path) 1330 while (evas->font_path)
1330 { 1331 {
1331 eina_stringshare_del(evas->font_path->data); 1332 eina_stringshare_del(evas->font_path->data);
@@ -1337,6 +1338,7 @@ EOLIAN void
1337_evas_canvas_font_path_append(Eo *eo_e EINA_UNUSED, Evas_Public_Data *e, const char *path) 1338_evas_canvas_font_path_append(Eo *eo_e EINA_UNUSED, Evas_Public_Data *e, const char *path)
1338{ 1339{
1339 if (!path) return; 1340 if (!path) return;
1341 evas_canvas_async_block(e);
1340 e->font_path = eina_list_append(e->font_path, eina_stringshare_add(path)); 1342 e->font_path = eina_list_append(e->font_path, eina_stringshare_add(path));
1341 1343
1342 evas_font_init(); 1344 evas_font_init();
@@ -1346,6 +1348,7 @@ EOLIAN void
1346_evas_canvas_font_path_prepend(Eo *eo_e EINA_UNUSED, Evas_Public_Data *e, const char *path) 1348_evas_canvas_font_path_prepend(Eo *eo_e EINA_UNUSED, Evas_Public_Data *e, const char *path)
1347{ 1349{
1348 if (!path) return; 1350 if (!path) return;
1351 evas_canvas_async_block(e);
1349 e->font_path = eina_list_prepend(e->font_path, eina_stringshare_add(path)); 1352 e->font_path = eina_list_prepend(e->font_path, eina_stringshare_add(path));
1350 1353
1351 evas_font_init(); 1354 evas_font_init();
@@ -1422,6 +1425,7 @@ _evas_canvas_font_hinting_set(Eo *eo_e EINA_UNUSED, Evas_Public_Data *e, Evas_Fo
1422{ 1425{
1423 Evas_Layer *lay; 1426 Evas_Layer *lay;
1424 1427
1428 evas_canvas_async_block(e);
1425 if (e->hinting == hinting) return; 1429 if (e->hinting == hinting) return;
1426 e->hinting = hinting; 1430 e->hinting = hinting;
1427 1431
@@ -1452,6 +1456,7 @@ _evas_canvas_font_hinting_can_hint(Eo *eo_e EINA_UNUSED, Evas_Public_Data *e, Ev
1452EOLIAN void 1456EOLIAN void
1453_evas_canvas_font_cache_flush(Eo *eo_e EINA_UNUSED, Evas_Public_Data *e) 1457_evas_canvas_font_cache_flush(Eo *eo_e EINA_UNUSED, Evas_Public_Data *e)
1454{ 1458{
1459 evas_canvas_async_block(e);
1455 evas_render_rendering_wait(e); 1460 evas_render_rendering_wait(e);
1456 e->engine.func->font_cache_flush(e->engine.data.output); 1461 e->engine.func->font_cache_flush(e->engine.data.output);
1457} 1462}
@@ -1460,6 +1465,7 @@ EOLIAN void
1460_evas_canvas_font_cache_set(Eo *eo_e EINA_UNUSED, Evas_Public_Data *e, int size) 1465_evas_canvas_font_cache_set(Eo *eo_e EINA_UNUSED, Evas_Public_Data *e, int size)
1461{ 1466{
1462 if (size < 0) size = 0; 1467 if (size < 0) size = 0;
1468 evas_canvas_async_block(e);
1463 evas_render_rendering_wait(e); 1469 evas_render_rendering_wait(e);
1464 e->engine.func->font_cache_set(e->engine.data.output, size); 1470 e->engine.func->font_cache_set(e->engine.data.output, size);
1465} 1471}
diff --git a/src/lib/evas/canvas/evas_layer.c b/src/lib/evas/canvas/evas_layer.c
index 62b1c54..e1baf63 100644
--- a/src/lib/evas/canvas/evas_layer.c
+++ b/src/lib/evas/canvas/evas_layer.c
@@ -7,10 +7,14 @@ void
7evas_object_inject(Evas_Object *eo_obj, Evas_Object_Protected_Data *obj, Evas *e) 7evas_object_inject(Evas_Object *eo_obj, Evas_Object_Protected_Data *obj, Evas *e)
8{ 8{
9 Evas_Layer *lay; 9 Evas_Layer *lay;
10 Evas_Public_Data *evas;
10 11
11 if (!obj) return; 12 if (!obj) return;
12 if (!e) return; 13 if (!e) return;
13 if (obj->in_layer) return; 14 if (obj->in_layer) return;
15 evas = eo_data_scope_get(e, EVAS_CANVAS_CLASS);
16 if (!evas) return;
17 evas_canvas_async_block(evas);
14 lay = evas_layer_find(e, obj->cur->layer); 18 lay = evas_layer_find(e, obj->cur->layer);
15 if (!lay) 19 if (!lay)
16 { 20 {
@@ -180,6 +184,7 @@ _evas_object_layer_set(Eo *eo_obj, Evas_Object_Protected_Data *obj EINA_UNUSED,
180 Evas *eo_e; 184 Evas *eo_e;
181 185
182 if (obj->delete_me) return; 186 if (obj->delete_me) return;
187 evas_object_async_block(obj);
183 if (evas_object_intercept_call_layer_set(eo_obj, obj, l)) return; 188 if (evas_object_intercept_call_layer_set(eo_obj, obj, l)) return;
184 if (obj->smart.parent) return; 189 if (obj->smart.parent) return;
185 if (obj->cur->layer == l) 190 if (obj->cur->layer == l)
diff --git a/src/lib/evas/canvas/evas_main.c b/src/lib/evas/canvas/evas_main.c
index 00d1f24..7e281a4 100644
--- a/src/lib/evas/canvas/evas_main.c
+++ b/src/lib/evas/canvas/evas_main.c
@@ -184,6 +184,7 @@ _evas_canvas_eo_base_constructor(Eo *eo_obj, Evas_Public_Data *e)
184 EVAS_ARRAY_SET(e, texts_unref_queue); 184 EVAS_ARRAY_SET(e, texts_unref_queue);
185 185
186#undef EVAS_ARRAY_SET 186#undef EVAS_ARRAY_SET
187 eina_lock_new(&(e->lock_objects));
187} 188}
188 189
189EAPI void 190EAPI void
@@ -206,9 +207,11 @@ _evas_canvas_eo_base_destructor(Eo *eo_e, Evas_Public_Data *e)
206 int i; 207 int i;
207 Eina_Bool del; 208 Eina_Bool del;
208 209
210 evas_canvas_async_block(e);
209 if (e->walking_list == 0) evas_render_idle_flush(eo_e); 211 if (e->walking_list == 0) evas_render_idle_flush(eo_e);
210 212
211 if (e->walking_list > 0) return; 213 if (e->walking_list > 0) return;
214
212 evas_render_idle_flush(eo_e); 215 evas_render_idle_flush(eo_e);
213 216
214 _evas_post_event_callback_free(eo_e); 217 _evas_post_event_callback_free(eo_e);
@@ -299,6 +302,8 @@ _evas_canvas_eo_base_destructor(Eo *eo_e, Evas_Public_Data *e)
299 302
300 _evas_device_cleanup(eo_e); 303 _evas_device_cleanup(eo_e);
301 304
305 eina_lock_free(&(e->lock_objects));
306
302 e->magic = 0; 307 e->magic = 0;
303 eo_do_super(eo_e, MY_CLASS, eo_destructor()); 308 eo_do_super(eo_e, MY_CLASS, eo_destructor());
304} 309}
@@ -318,6 +323,7 @@ _evas_canvas_output_method_set(Eo *eo_e, Evas_Public_Data *e, int render_method)
318 if (em->id_engine != render_method) return; 323 if (em->id_engine != render_method) return;
319 if (!evas_module_load(em)) return; 324 if (!evas_module_load(em)) return;
320 325
326 evas_canvas_async_block(e);
321 /* set the correct render */ 327 /* set the correct render */
322 e->output.render_method = render_method; 328 e->output.render_method = render_method;
323 e->engine.func = (em->functions); 329 e->engine.func = (em->functions);
@@ -352,11 +358,15 @@ _evas_canvas_engine_info_get(Eo *eo_e EINA_UNUSED, Evas_Public_Data *e)
352EOLIAN static Eina_Bool 358EOLIAN static Eina_Bool
353_evas_canvas_engine_info_set(Eo *eo_e, Evas_Public_Data *e, Evas_Engine_Info *info) 359_evas_canvas_engine_info_set(Eo *eo_e, Evas_Public_Data *e, Evas_Engine_Info *info)
354{ 360{
361 Eina_Bool res;
362
355 if (!info) return EINA_FALSE; 363 if (!info) return EINA_FALSE;
356 if (info != e->engine.info) return EINA_FALSE; 364 if (info != e->engine.info) return EINA_FALSE;
357 if (info->magic != e->engine.info_magic) return EINA_FALSE; 365 if (info->magic != e->engine.info_magic) return EINA_FALSE;
358 366
359 return (Eina_Bool)e->engine.func->setup(eo_e, info); 367 evas_canvas_async_block(e);
368 res = e->engine.func->setup(eo_e, info);
369 return res;
360} 370}
361 371
362EOLIAN static void 372EOLIAN static void
@@ -366,6 +376,7 @@ _evas_canvas_output_size_set(Eo *eo_e, Evas_Public_Data *e, int w, int h)
366 if (w < 1) w = 1; 376 if (w < 1) w = 1;
367 if (h < 1) h = 1; 377 if (h < 1) h = 1;
368 378
379 evas_canvas_async_block(e);
369 e->output.w = w; 380 e->output.w = w;
370 e->output.h = h; 381 e->output.h = h;
371 e->output.changed = 1; 382 e->output.changed = 1;
@@ -394,6 +405,7 @@ _evas_canvas_output_viewport_set(Eo *eo_e EINA_UNUSED, Evas_Public_Data *e, Evas
394 x = 0; 405 x = 0;
395 y = 0; 406 y = 0;
396 } 407 }
408 evas_canvas_async_block(e);
397 e->viewport.x = x; 409 e->viewport.x = x;
398 e->viewport.y = y; 410 e->viewport.y = y;
399 e->viewport.w = w; 411 e->viewport.w = w;
@@ -417,6 +429,7 @@ _evas_canvas_output_framespace_set(Eo *eo_e EINA_UNUSED, Evas_Public_Data *e, Ev
417{ 429{
418 if ((x == e->framespace.x) && (y == e->framespace.y) && 430 if ((x == e->framespace.x) && (y == e->framespace.y) &&
419 (w == e->framespace.w) && (h == e->framespace.h)) return; 431 (w == e->framespace.w) && (h == e->framespace.h)) return;
432 evas_canvas_async_block(e);
420 e->framespace.x = x; 433 e->framespace.x = x;
421 e->framespace.y = y; 434 e->framespace.y = y;
422 e->framespace.w = w; 435 e->framespace.w = w;
diff --git a/src/lib/evas/canvas/evas_map.c b/src/lib/evas/canvas/evas_map.c
index 453caba..86ceebe 100644
--- a/src/lib/evas/canvas/evas_map.c
+++ b/src/lib/evas/canvas/evas_map.c
@@ -472,6 +472,7 @@ _evas_object_map_enable_set(Eo *eo_obj, Evas_Object_Protected_Data *obj, Eina_Bo
472 if (obj->map->cur.usemap == enabled) return; 472 if (obj->map->cur.usemap == enabled) return;
473 pchange = obj->changed; 473 pchange = obj->changed;
474 474
475 evas_object_async_block(obj);
475 EINA_COW_WRITE_BEGIN(evas_object_map_cow, obj->map, Evas_Object_Map_Data, map_write) 476 EINA_COW_WRITE_BEGIN(evas_object_map_cow, obj->map, Evas_Object_Map_Data, map_write)
476 map_write->cur.usemap = enabled; 477 map_write->cur.usemap = enabled;
477 EINA_COW_WRITE_END(evas_object_map_cow, obj->map, map_write); 478 EINA_COW_WRITE_END(evas_object_map_cow, obj->map, map_write);
@@ -540,6 +541,7 @@ _evas_object_map_enable_get(Eo *eo_obj EINA_UNUSED, Evas_Object_Protected_Data *
540EOLIAN void 541EOLIAN void
541_evas_object_map_set(Eo *eo_obj, Evas_Object_Protected_Data *obj, const Evas_Map *map) 542_evas_object_map_set(Eo *eo_obj, Evas_Object_Protected_Data *obj, const Evas_Map *map)
542{ 543{
544 evas_object_async_block(obj);
543 if ((!map) || (map->count < 4)) 545 if ((!map) || (map->count < 4))
544 { 546 {
545 if (obj->map->surface) 547 if (obj->map->surface)
@@ -631,6 +633,7 @@ _evas_object_map_set(Eo *eo_obj, Evas_Object_Protected_Data *obj, const Evas_Map
631EOLIAN Evas_Map * 633EOLIAN Evas_Map *
632_evas_object_map_get(Eo *eo_obj EINA_UNUSED, Evas_Object_Protected_Data *obj) 634_evas_object_map_get(Eo *eo_obj EINA_UNUSED, Evas_Object_Protected_Data *obj)
633{ 635{
636 evas_object_async_block(obj);
634 return obj->map->cur.map; 637 return obj->map->cur.map;
635} 638}
636 639
diff --git a/src/lib/evas/canvas/evas_object_image.c b/src/lib/evas/canvas/evas_object_image.c
index cf43097..cbeb116 100644
--- a/src/lib/evas/canvas/evas_object_image.c
+++ b/src/lib/evas/canvas/evas_object_image.c
@@ -557,7 +557,7 @@ _evas_image_mmap_set(Eo *eo_obj, Evas_Image_Data *o, const Eina_File *f, const c
557 if ((o->cur->key) && (key) && (!strcmp(o->cur->key, key))) 557 if ((o->cur->key) && (key) && (!strcmp(o->cur->key, key)))
558 return; 558 return;
559 } 559 }
560 560 evas_object_async_block(obj);
561 _image_init_set(f, NULL, key, eo_obj, obj, o, &lo); 561 _image_init_set(f, NULL, key, eo_obj, obj, o, &lo);
562 o->engine_data = ENFN->image_mmap(ENDT, o->cur->u.f, o->cur->key, &o->load_error, &lo); 562 o->engine_data = ENFN->image_mmap(ENDT, o->cur->u.f, o->cur->key, &o->load_error, &lo);
563 _image_done_set(eo_obj, obj, o); 563 _image_done_set(eo_obj, obj, o);
@@ -590,6 +590,7 @@ _evas_image_efl_file_file_set(Eo *eo_obj, Evas_Image_Data *o, const char *file,
590 if (!o->engine_data) 590 if (!o->engine_data)
591 ENFN->image_data_preload_cancel(ENDT, o->engine_data, eo_obj); 591 ENFN->image_data_preload_cancel(ENDT, o->engine_data, eo_obj);
592 */ 592 */
593 evas_object_async_block(obj);
593 _image_init_set(NULL, file, key, eo_obj, obj, o, &lo); 594 _image_init_set(NULL, file, key, eo_obj, obj, o, &lo);
594 o->engine_data = ENFN->image_load(ENDT, o->cur->u.file, o->cur->key, &o->load_error, &lo); 595 o->engine_data = ENFN->image_load(ENDT, o->cur->u.file, o->cur->key, &o->load_error, &lo);
595 _image_done_set(eo_obj, obj, o); 596 _image_done_set(eo_obj, obj, o);
@@ -645,7 +646,7 @@ _evas_image_source_set(Eo *eo_obj, Evas_Image_Data *o, Evas_Object *eo_src)
645 } 646 }
646 } 647 }
647 if (o->cur->source == eo_src) return EINA_TRUE; 648 if (o->cur->source == eo_src) return EINA_TRUE;
648 649 evas_object_async_block(obj);
649 _evas_object_image_cleanup(eo_obj, obj, o); 650 _evas_object_image_cleanup(eo_obj, obj, o);
650 /* Kill the image if any */ 651 /* Kill the image if any */
651 if (o->cur->u.file || o->cur->key) 652 if (o->cur->u.file || o->cur->key)
@@ -730,9 +731,11 @@ EOLIAN static void
730_evas_image_source_clip_set(Eo *eo_obj EINA_UNUSED, Evas_Image_Data *o, Eina_Bool source_clip) 731_evas_image_source_clip_set(Eo *eo_obj EINA_UNUSED, Evas_Image_Data *o, Eina_Bool source_clip)
731{ 732{
732 Evas_Object_Protected_Data *src_obj; 733 Evas_Object_Protected_Data *src_obj;
734 Evas_Object_Protected_Data *obj = eo_data_scope_get(eo_obj, EVAS_OBJECT_CLASS);
733 735
734 source_clip = !!source_clip; 736 source_clip = !!source_clip;
735 if (o->proxy_src_clip == source_clip) return; 737 if (o->proxy_src_clip == source_clip) return;
738 evas_object_async_block(obj);
736 o->proxy_src_clip = source_clip; 739 o->proxy_src_clip = source_clip;
737 740
738 if (!o->cur->source) return; 741 if (!o->cur->source) return;
@@ -802,6 +805,7 @@ EOLIAN static void
802_evas_image_source_visible_set(Eo *eo_obj EINA_UNUSED, Evas_Image_Data *o, Eina_Bool visible) 805_evas_image_source_visible_set(Eo *eo_obj EINA_UNUSED, Evas_Image_Data *o, Eina_Bool visible)
803{ 806{
804 Evas_Object_Protected_Data *src_obj; 807 Evas_Object_Protected_Data *src_obj;
808 Evas_Object_Protected_Data *obj = eo_data_scope_get(eo_obj, EVAS_OBJECT_CLASS);
805 809
806 if (!o->cur->source) return; 810 if (!o->cur->source) return;
807 811
@@ -809,6 +813,7 @@ _evas_image_source_visible_set(Eo *eo_obj EINA_UNUSED, Evas_Image_Data *o, Eina_
809 src_obj = eo_data_scope_get(o->cur->source, EVAS_OBJECT_CLASS); 813 src_obj = eo_data_scope_get(o->cur->source, EVAS_OBJECT_CLASS);
810 if (src_obj->proxy->src_invisible == !visible) return; 814 if (src_obj->proxy->src_invisible == !visible) return;
811 815
816 evas_object_async_block(obj);
812 EINA_COW_WRITE_BEGIN(evas_object_proxy_cow, src_obj->proxy, Evas_Object_Proxy_Data, proxy_write) 817 EINA_COW_WRITE_BEGIN(evas_object_proxy_cow, src_obj->proxy, Evas_Object_Proxy_Data, proxy_write)
813 proxy_write->src_invisible = !visible; 818 proxy_write->src_invisible = !visible;
814 EINA_COW_WRITE_END(evas_object_proxy_cow, src_obj->proxy, proxy_write); 819 EINA_COW_WRITE_END(evas_object_proxy_cow, src_obj->proxy, proxy_write);
@@ -844,6 +849,7 @@ _evas_image_scene_set(Eo *eo_obj, Evas_Image_Data *o, Evas_3D_Scene *scene)
844 849
845 if (o->cur->scene == scene) return; 850 if (o->cur->scene == scene) return;
846 851
852 evas_object_async_block(obj);
847 _image_init_set(NULL, NULL, NULL, eo_obj, obj, o, &lo); 853 _image_init_set(NULL, NULL, NULL, eo_obj, obj, o, &lo);
848 o->engine_data = ENFN->image_load(ENDT, o->cur->u.file, o->cur->key, &o->load_error, &lo); 854 o->engine_data = ENFN->image_load(ENDT, o->cur->u.file, o->cur->key, &o->load_error, &lo);
849 _image_done_set(eo_obj, obj, o); 855 _image_done_set(eo_obj, obj, o);
@@ -872,6 +878,7 @@ _evas_image_border_set(Eo *eo_obj, Evas_Image_Data *o, int l, int r, int t, int
872 (o->cur->border.t == t) && 878 (o->cur->border.t == t) &&
873 (o->cur->border.b == b)) return; 879 (o->cur->border.b == b)) return;
874 880
881 evas_object_async_block(obj);
875 EINA_COW_IMAGE_STATE_WRITE_BEGIN(o, state_write) 882 EINA_COW_IMAGE_STATE_WRITE_BEGIN(o, state_write)
876 { 883 {
877 state_write->border.l = l; 884 state_write->border.l = l;
@@ -896,13 +903,14 @@ _evas_image_border_get(Eo *eo_obj EINA_UNUSED, Evas_Image_Data *o, int *l, int *
896EOLIAN static void 903EOLIAN static void
897_evas_image_border_center_fill_set(Eo *eo_obj, Evas_Image_Data *o, Evas_Border_Fill_Mode fill) 904_evas_image_border_center_fill_set(Eo *eo_obj, Evas_Image_Data *o, Evas_Border_Fill_Mode fill)
898{ 905{
906 Evas_Object_Protected_Data *obj = eo_data_scope_get(eo_obj, EVAS_OBJECT_CLASS);
899 if (fill == o->cur->border.fill) return; 907 if (fill == o->cur->border.fill) return;
908 evas_object_async_block(obj);
900 EINA_COW_IMAGE_STATE_WRITE_BEGIN(o, state_write) 909 EINA_COW_IMAGE_STATE_WRITE_BEGIN(o, state_write)
901 state_write->border.fill = fill; 910 state_write->border.fill = fill;
902 EINA_COW_IMAGE_STATE_WRITE_END(o, state_write); 911 EINA_COW_IMAGE_STATE_WRITE_END(o, state_write);
903 912
904 o->changed = EINA_TRUE; 913 o->changed = EINA_TRUE;
905 Evas_Object_Protected_Data *obj = eo_data_scope_get(eo_obj, EVAS_OBJECT_CLASS);
906 evas_object_change(eo_obj, obj); 914 evas_object_change(eo_obj, obj);
907} 915}
908 916
@@ -915,9 +923,11 @@ _evas_image_border_center_fill_get(Eo *eo_obj EINA_UNUSED, Evas_Image_Data *o)
915static void 923static void
916_evas_image_filled_set(Eo *eo_obj, Evas_Image_Data* o, Eina_Bool setting) 924_evas_image_filled_set(Eo *eo_obj, Evas_Image_Data* o, Eina_Bool setting)
917{ 925{
926 Evas_Object_Protected_Data *obj = eo_data_scope_get(eo_obj, EVAS_OBJECT_CLASS);
918 setting = !!setting; 927 setting = !!setting;
919 if (o->filled == setting) return; 928 if (o->filled == setting) return;
920 929
930 evas_object_async_block(obj);
921 o->filled = setting; 931 o->filled = setting;
922 if (!o->filled) 932 if (!o->filled)
923 evas_object_event_callback_del(eo_obj, EVAS_CALLBACK_RESIZE, 933 evas_object_event_callback_del(eo_obj, EVAS_CALLBACK_RESIZE,
@@ -944,15 +954,15 @@ _evas_image_filled_get(Eo *eo_obj EINA_UNUSED, Evas_Image_Data *o)
944EOLIAN static void 954EOLIAN static void
945_evas_image_border_scale_set(Eo *eo_obj, Evas_Image_Data *o, double scale) 955_evas_image_border_scale_set(Eo *eo_obj, Evas_Image_Data *o, double scale)
946{ 956{
947 Evas_Object_Protected_Data *obj; 957 Evas_Object_Protected_Data *obj = eo_data_scope_get(eo_obj, EVAS_OBJECT_CLASS);
948 958
949 if (scale == o->cur->border.scale) return; 959 if (scale == o->cur->border.scale) return;
960 evas_object_async_block(obj);
950 EINA_COW_IMAGE_STATE_WRITE_BEGIN(o, state_write) 961 EINA_COW_IMAGE_STATE_WRITE_BEGIN(o, state_write)
951 state_write->border.scale = scale; 962 state_write->border.scale = scale;
952 EINA_COW_IMAGE_STATE_WRITE_END(o, state_write); 963 EINA_COW_IMAGE_STATE_WRITE_END(o, state_write);
953 964
954 o->changed = EINA_TRUE; 965 o->changed = EINA_TRUE;
955 obj = eo_data_scope_get(eo_obj, EVAS_OBJECT_CLASS);
956 evas_object_change(eo_obj, obj); 966 evas_object_change(eo_obj, obj);
957} 967}
958 968
@@ -965,7 +975,7 @@ _evas_image_border_scale_get(Eo *eo_obj EINA_UNUSED, Evas_Image_Data *o)
965EOLIAN static void 975EOLIAN static void
966_evas_image_fill_set(Eo *eo_obj, Evas_Image_Data *o, Evas_Coord x, Evas_Coord y, Evas_Coord w, Evas_Coord h) 976_evas_image_fill_set(Eo *eo_obj, Evas_Image_Data *o, Evas_Coord x, Evas_Coord y, Evas_Coord w, Evas_Coord h)
967{ 977{
968 Evas_Object_Protected_Data *obj; 978 Evas_Object_Protected_Data *obj = eo_data_scope_get(eo_obj, EVAS_OBJECT_CLASS);
969 979
970 if (w == 0) return; 980 if (w == 0) return;
971 if (h == 0) return; 981 if (h == 0) return;
@@ -977,6 +987,7 @@ _evas_image_fill_set(Eo *eo_obj, Evas_Image_Data *o, Evas_Coord x, Evas_Coord y,
977 (o->cur->fill.w == w) && 987 (o->cur->fill.w == w) &&
978 (o->cur->fill.h == h)) return; 988 (o->cur->fill.h == h)) return;
979 989
990 evas_object_async_block(obj);
980 EINA_COW_IMAGE_STATE_WRITE_BEGIN(o, state_write) 991 EINA_COW_IMAGE_STATE_WRITE_BEGIN(o, state_write)
981 { 992 {
982 state_write->fill.x = x; 993 state_write->fill.x = x;
@@ -988,7 +999,6 @@ _evas_image_fill_set(Eo *eo_obj, Evas_Image_Data *o, Evas_Coord x, Evas_Coord y,
988 EINA_COW_IMAGE_STATE_WRITE_END(o, state_write); 999 EINA_COW_IMAGE_STATE_WRITE_END(o, state_write);
989 1000
990 o->changed = EINA_TRUE; 1001 o->changed = EINA_TRUE;
991 obj = eo_data_scope_get(eo_obj, EVAS_OBJECT_CLASS);
992 evas_object_change(eo_obj, obj); 1002 evas_object_change(eo_obj, obj);
993} 1003}
994 1004
@@ -1004,16 +1014,16 @@ _evas_image_fill_get(Eo *eo_obj EINA_UNUSED, Evas_Image_Data *o, Evas_Coord *x,
1004EOLIAN static void 1014EOLIAN static void
1005_evas_image_fill_spread_set(Eo *eo_obj, Evas_Image_Data *o, Evas_Fill_Spread spread) 1015_evas_image_fill_spread_set(Eo *eo_obj, Evas_Image_Data *o, Evas_Fill_Spread spread)
1006{ 1016{
1007 Evas_Object_Protected_Data *obj; 1017 Evas_Object_Protected_Data *obj = eo_data_scope_get(eo_obj, EVAS_OBJECT_CLASS);
1008 1018
1009 if (spread == (Evas_Fill_Spread)o->cur->spread) return; 1019 if (spread == (Evas_Fill_Spread)o->cur->spread) return;
1010 1020
1021 evas_object_async_block(obj);
1011 EINA_COW_IMAGE_STATE_WRITE_BEGIN(o, state_write) 1022 EINA_COW_IMAGE_STATE_WRITE_BEGIN(o, state_write)
1012 state_write->spread = spread; 1023 state_write->spread = spread;
1013 EINA_COW_IMAGE_STATE_WRITE_END(o, state_write); 1024 EINA_COW_IMAGE_STATE_WRITE_END(o, state_write);
1014 1025
1015 o->changed = EINA_TRUE; 1026 o->changed = EINA_TRUE;
1016 obj = eo_data_scope_get(eo_obj, EVAS_OBJECT_CLASS);
1017 evas_object_change(eo_obj, obj); 1027 evas_object_change(eo_obj, obj);
1018} 1028}
1019 1029
@@ -1032,6 +1042,7 @@ _evas_image_size_set(Eo *eo_obj, Evas_Image_Data *o, int w, int h)
1032 1042
1033 if (o->cur->scene) return; 1043 if (o->cur->scene) return;
1034 1044
1045 evas_object_async_block(obj);
1035 _evas_object_image_cleanup(eo_obj, obj, o); 1046 _evas_object_image_cleanup(eo_obj, obj, o);
1036 if (w < 1) w = 1; 1047 if (w < 1) w = 1;
1037 if (h < 1) h = 1; 1048 if (h < 1) h = 1;
@@ -1112,6 +1123,7 @@ _evas_image_data_convert(Eo *eo_obj, Evas_Image_Data *o, Evas_Colorspace to_cspa
1112 DATA32 *data; 1123 DATA32 *data;
1113 void* result = NULL; 1124 void* result = NULL;
1114 1125
1126 evas_object_async_block(obj);
1115 if ((o->preloading) && (o->engine_data)) 1127 if ((o->preloading) && (o->engine_data))
1116 { 1128 {
1117 o->preloading = EINA_FALSE; 1129 o->preloading = EINA_FALSE;
@@ -1140,6 +1152,7 @@ _evas_image_data_set(Eo *eo_obj, Evas_Image_Data *o, void *data)
1140 Eina_Bool resize_call = EINA_FALSE; 1152 Eina_Bool resize_call = EINA_FALSE;
1141 1153
1142 1154
1155 evas_object_async_block(obj);
1143 evas_render_rendering_wait(obj->layer->evas); 1156 evas_render_rendering_wait(obj->layer->evas);
1144 1157
1145 _evas_object_image_cleanup(eo_obj, obj, o); 1158 _evas_object_image_cleanup(eo_obj, obj, o);
@@ -1224,6 +1237,7 @@ _evas_image_data_get(Eo *eo_obj, Evas_Image_Data *_pd EINA_UNUSED, Eina_Bool for
1224 1237
1225 Evas_Object_Protected_Data *obj = eo_data_scope_get(eo_obj, EVAS_OBJECT_CLASS); 1238 Evas_Object_Protected_Data *obj = eo_data_scope_get(eo_obj, EVAS_OBJECT_CLASS);
1226 1239
1240 if (for_writing) evas_object_async_block(obj);
1227 if (for_writing) evas_render_rendering_wait(obj->layer->evas); 1241 if (for_writing) evas_render_rendering_wait(obj->layer->evas);
1228 1242
1229 data = NULL; 1243 data = NULL;
@@ -1309,12 +1323,16 @@ _image_preload_internal(Eo *eo_obj, void *_pd, Eina_Bool cancel)
1309EOLIAN static void 1323EOLIAN static void
1310_evas_image_preload_begin(Eo *eo_obj, Evas_Image_Data *_pd EINA_UNUSED) 1324_evas_image_preload_begin(Eo *eo_obj, Evas_Image_Data *_pd EINA_UNUSED)
1311{ 1325{
1326 Evas_Object_Protected_Data *obj = eo_data_scope_get(eo_obj, EVAS_OBJECT_CLASS);
1327 evas_object_async_block(obj);
1312 _image_preload_internal(eo_obj, _pd, EINA_FALSE); 1328 _image_preload_internal(eo_obj, _pd, EINA_FALSE);
1313} 1329}
1314 1330
1315EOLIAN static void 1331EOLIAN static void
1316_evas_image_preload_cancel(Eo *eo_obj, Evas_Image_Data *_pd EINA_UNUSED) 1332_evas_image_preload_cancel(Eo *eo_obj, Evas_Image_Data *_pd EINA_UNUSED)
1317{ 1333{
1334 Evas_Object_Protected_Data *obj = eo_data_scope_get(eo_obj, EVAS_OBJECT_CLASS);
1335 evas_object_async_block(obj);
1318 _image_preload_internal(eo_obj, _pd, EINA_TRUE); 1336 _image_preload_internal(eo_obj, _pd, EINA_TRUE);
1319} 1337}
1320 1338
@@ -1324,6 +1342,7 @@ _evas_image_data_copy_set(Eo *eo_obj, Evas_Image_Data *o, void *data)
1324 Evas_Object_Protected_Data *obj = eo_data_scope_get(eo_obj, EVAS_OBJECT_CLASS); 1342 Evas_Object_Protected_Data *obj = eo_data_scope_get(eo_obj, EVAS_OBJECT_CLASS);
1325 1343
1326 if (!data) return; 1344 if (!data) return;
1345 evas_object_async_block(obj);
1327 _evas_object_image_cleanup(eo_obj, obj, o); 1346 _evas_object_image_cleanup(eo_obj, obj, o);
1328 if ((o->cur->image.w <= 0) || 1347 if ((o->cur->image.w <= 0) ||
1329 (o->cur->image.h <= 0)) return; 1348 (o->cur->image.h <= 0)) return;
@@ -1365,12 +1384,14 @@ _evas_image_data_copy_set(Eo *eo_obj, Evas_Image_Data *o, void *data)
1365EOLIAN static void 1384EOLIAN static void
1366_evas_image_data_update_add(Eo *eo_obj, Evas_Image_Data *o, int x, int y, int w, int h) 1385_evas_image_data_update_add(Eo *eo_obj, Evas_Image_Data *o, int x, int y, int w, int h)
1367{ 1386{
1387 Evas_Object_Protected_Data *obj = eo_data_scope_get(eo_obj, EVAS_OBJECT_CLASS);
1368 Eina_Rectangle *r; 1388 Eina_Rectangle *r;
1369 int cnt; 1389 int cnt;
1370 1390
1371 RECTS_CLIP_TO_RECT(x, y, w, h, 0, 0, o->cur->image.w, o->cur->image.h); 1391 RECTS_CLIP_TO_RECT(x, y, w, h, 0, 0, o->cur->image.w, o->cur->image.h);
1372 if ((w <= 0) || (h <= 0)) return; 1392 if ((w <= 0) || (h <= 0)) return;
1373 if (!o->written) return; 1393 if (!o->written) return;
1394 evas_object_async_block(obj);
1374 cnt = eina_list_count(o->pixels->pixel_updates); 1395 cnt = eina_list_count(o->pixels->pixel_updates);
1375 if (cnt == 1) 1396 if (cnt == 1)
1376 { // detect single blob case already there to do a nop 1397 { // detect single blob case already there to do a nop
@@ -1399,7 +1420,6 @@ _evas_image_data_update_add(Eo *eo_obj, Evas_Image_Data *o, int x, int y, int w,
1399 } 1420 }
1400 1421
1401 o->changed = EINA_TRUE; 1422 o->changed = EINA_TRUE;
1402 Evas_Object_Protected_Data *obj = eo_data_scope_get(eo_obj, EVAS_OBJECT_CLASS);
1403 evas_object_change(eo_obj, obj); 1423 evas_object_change(eo_obj, obj);
1404} 1424}
1405 1425
@@ -1408,6 +1428,7 @@ _evas_image_alpha_set(Eo *eo_obj, Evas_Image_Data *o, Eina_Bool has_alpha)
1408{ 1428{
1409 Evas_Object_Protected_Data *obj = eo_data_scope_get(eo_obj, EVAS_OBJECT_CLASS); 1429 Evas_Object_Protected_Data *obj = eo_data_scope_get(eo_obj, EVAS_OBJECT_CLASS);
1410 1430
1431 evas_object_async_block(obj);
1411 if ((o->preloading) && (o->engine_data)) 1432 if ((o->preloading) && (o->engine_data))
1412 { 1433 {
1413 o->preloading = EINA_FALSE; 1434 o->preloading = EINA_FALSE;
@@ -1457,8 +1478,9 @@ _evas_image_alpha_get(Eo *eo_obj EINA_UNUSED, Evas_Image_Data *o)
1457EOLIAN static void 1478EOLIAN static void
1458_evas_image_efl_image_smooth_scale_set(Eo *eo_obj, Evas_Image_Data *o, Eina_Bool smooth_scale) 1479_evas_image_efl_image_smooth_scale_set(Eo *eo_obj, Evas_Image_Data *o, Eina_Bool smooth_scale)
1459{ 1480{
1460 Evas_Object_Protected_Data *obj; 1481 Evas_Object_Protected_Data *obj = eo_data_scope_get(eo_obj, EVAS_OBJECT_CLASS);
1461 1482
1483 evas_object_async_block(obj);
1462 if (((smooth_scale) && (o->cur->smooth_scale)) || 1484 if (((smooth_scale) && (o->cur->smooth_scale)) ||
1463 ((!smooth_scale) && (!o->cur->smooth_scale))) 1485 ((!smooth_scale) && (!o->cur->smooth_scale)))
1464 return; 1486 return;
@@ -1467,7 +1489,6 @@ _evas_image_efl_image_smooth_scale_set(Eo *eo_obj, Evas_Image_Data *o, Eina_Bool
1467 EINA_COW_IMAGE_STATE_WRITE_END(o, state_write); 1489 EINA_COW_IMAGE_STATE_WRITE_END(o, state_write);
1468 1490
1469 o->changed = EINA_TRUE; 1491 o->changed = EINA_TRUE;
1470 obj = eo_data_scope_get(eo_obj, EVAS_OBJECT_CLASS);
1471 evas_object_change(eo_obj, obj); 1492 evas_object_change(eo_obj, obj);
1472} 1493}
1473 1494
@@ -1482,6 +1503,7 @@ _evas_image_reload(Eo *eo_obj, Evas_Image_Data *o)
1482{ 1503{
1483 Evas_Object_Protected_Data *obj = eo_data_scope_get(eo_obj, EVAS_OBJECT_CLASS); 1504 Evas_Object_Protected_Data *obj = eo_data_scope_get(eo_obj, EVAS_OBJECT_CLASS);
1484 1505
1506 evas_object_async_block(obj);
1485 if ((o->preloading) && (o->engine_data)) 1507 if ((o->preloading) && (o->engine_data))
1486 { 1508 {
1487 o->preloading = EINA_FALSE; 1509 o->preloading = EINA_FALSE;
@@ -1516,6 +1538,7 @@ _evas_image_efl_file_save(Eo *eo_obj, Evas_Image_Data *o, const char *file, cons
1516 RGBA_Image *im; 1538 RGBA_Image *im;
1517 if (!o->engine_data) return 0; 1539 if (!o->engine_data) return 0;
1518 Evas_Object_Protected_Data *obj = eo_data_scope_get(eo_obj, EVAS_OBJECT_CLASS); 1540 Evas_Object_Protected_Data *obj = eo_data_scope_get(eo_obj, EVAS_OBJECT_CLASS);
1541 evas_object_async_block(obj);
1519 o->engine_data = ENFN->image_data_get(ENDT, o->engine_data, 0, &data, &o->load_error); 1542 o->engine_data = ENFN->image_data_get(ENDT, o->engine_data, 0, &data, &o->load_error);
1520 if (flags) 1543 if (flags)
1521 { 1544 {
@@ -1571,6 +1594,7 @@ _evas_image_pixels_import(Eo *eo_obj, Evas_Image_Data *o, Evas_Pixel_Import_Sour
1571{ 1594{
1572 Evas_Object_Protected_Data *obj = eo_data_scope_get(eo_obj, EVAS_OBJECT_CLASS); 1595 Evas_Object_Protected_Data *obj = eo_data_scope_get(eo_obj, EVAS_OBJECT_CLASS);
1573 1596
1597 evas_object_async_block(obj);
1574 _evas_object_image_cleanup(eo_obj, obj, o); 1598 _evas_object_image_cleanup(eo_obj, obj, o);
1575 if ((pixels->w != o->cur->image.w) || (pixels->h != o->cur->image.h)) return EINA_FALSE; 1599 if ((pixels->w != o->cur->image.w) || (pixels->h != o->cur->image.h)) return EINA_FALSE;
1576 1600
@@ -1631,6 +1655,8 @@ _evas_image_pixels_import(Eo *eo_obj, Evas_Image_Data *o, Evas_Pixel_Import_Sour
1631EOLIAN static void 1655EOLIAN static void
1632_evas_image_pixels_get_callback_set(Eo *eo_obj EINA_UNUSED, Evas_Image_Data *o, Evas_Object_Image_Pixels_Get_Cb func, void *data) 1656_evas_image_pixels_get_callback_set(Eo *eo_obj EINA_UNUSED, Evas_Image_Data *o, Evas_Object_Image_Pixels_Get_Cb func, void *data)
1633{ 1657{
1658 Evas_Object_Protected_Data *obj = eo_data_scope_get(eo_obj, EVAS_OBJECT_CLASS);
1659 evas_object_async_block(obj);
1634 EINA_COW_PIXEL_WRITE_BEGIN(o, pixi_write) 1660 EINA_COW_PIXEL_WRITE_BEGIN(o, pixi_write)
1635 { 1661 {
1636 pixi_write->func.get_pixels = func; 1662 pixi_write->func.get_pixels = func;
@@ -1643,7 +1669,7 @@ EOLIAN static void
1643_evas_image_pixels_dirty_set(Eo *eo_obj, Evas_Image_Data *o, Eina_Bool dirty) 1669_evas_image_pixels_dirty_set(Eo *eo_obj, Evas_Image_Data *o, Eina_Bool dirty)
1644{ 1670{
1645 Evas_Object_Protected_Data *obj = eo_data_scope_get(eo_obj, EVAS_OBJECT_CLASS); 1671 Evas_Object_Protected_Data *obj = eo_data_scope_get(eo_obj, EVAS_OBJECT_CLASS);
1646 1672 evas_object_async_block(obj);
1647 if (dirty) o->dirty_pixels = EINA_TRUE; 1673 if (dirty) o->dirty_pixels = EINA_TRUE;
1648 else o->dirty_pixels = EINA_FALSE; 1674 else o->dirty_pixels = EINA_FALSE;
1649 o->changed = EINA_TRUE; 1675 o->changed = EINA_TRUE;
@@ -1659,15 +1685,15 @@ _evas_image_pixels_dirty_get(Eo *eo_obj EINA_UNUSED, Evas_Image_Data *o)
1659EOLIAN static void 1685EOLIAN static void
1660_evas_image_load_dpi_set(Eo *eo_obj, Evas_Image_Data *o, double dpi) 1686_evas_image_load_dpi_set(Eo *eo_obj, Evas_Image_Data *o, double dpi)
1661{ 1687{
1688 Evas_Object_Protected_Data *obj = eo_data_scope_get(eo_obj, EVAS_OBJECT_CLASS);
1662 if (dpi == o->load_opts->dpi) return; 1689 if (dpi == o->load_opts->dpi) return;
1663 1690 evas_object_async_block(obj);
1664 EINA_COW_LOAD_OPTS_WRITE_BEGIN(o, low) 1691 EINA_COW_LOAD_OPTS_WRITE_BEGIN(o, low)
1665 low->dpi = dpi; 1692 low->dpi = dpi;
1666 EINA_COW_LOAD_OPTS_WRITE_END(o, low); 1693 EINA_COW_LOAD_OPTS_WRITE_END(o, low);
1667 1694
1668 if (o->cur->u.file) 1695 if (o->cur->u.file)
1669 { 1696 {
1670 Evas_Object_Protected_Data *obj = eo_data_scope_get(eo_obj, EVAS_OBJECT_CLASS);
1671 evas_object_image_unload(eo_obj, 0); 1697 evas_object_image_unload(eo_obj, 0);
1672 evas_object_inform_call_image_unloaded(eo_obj); 1698 evas_object_inform_call_image_unloaded(eo_obj);
1673 evas_object_image_load(eo_obj, obj, o); 1699 evas_object_image_load(eo_obj, obj, o);
@@ -1685,8 +1711,9 @@ _evas_image_load_dpi_get(Eo *eo_obj EINA_UNUSED, Evas_Image_Data *o)
1685EOLIAN static void 1711EOLIAN static void
1686_evas_image_efl_image_load_size_set(Eo *eo_obj, Evas_Image_Data *o, int w, int h) 1712_evas_image_efl_image_load_size_set(Eo *eo_obj, Evas_Image_Data *o, int w, int h)
1687{ 1713{
1714 Evas_Object_Protected_Data *obj = eo_data_scope_get(eo_obj, EVAS_OBJECT_CLASS);
1688 if ((o->load_opts->w == w) && (o->load_opts->h == h)) return; 1715 if ((o->load_opts->w == w) && (o->load_opts->h == h)) return;
1689 1716 evas_object_async_block(obj);
1690 EINA_COW_LOAD_OPTS_WRITE_BEGIN(o, low) 1717 EINA_COW_LOAD_OPTS_WRITE_BEGIN(o, low)
1691 { 1718 {
1692 low->w = w; 1719 low->w = w;
@@ -1696,7 +1723,6 @@ _evas_image_efl_image_load_size_set(Eo *eo_obj, Evas_Image_Data *o, int w, int h
1696 1723
1697 if (o->cur->u.file) 1724 if (o->cur->u.file)
1698 { 1725 {
1699 Evas_Object_Protected_Data *obj = eo_data_scope_get(eo_obj, EVAS_OBJECT_CLASS);
1700 evas_object_image_unload(eo_obj, 0); 1726 evas_object_image_unload(eo_obj, 0);
1701 evas_object_inform_call_image_unloaded(eo_obj); 1727 evas_object_inform_call_image_unloaded(eo_obj);
1702 evas_object_image_load(eo_obj, obj, o); 1728 evas_object_image_load(eo_obj, obj, o);
@@ -1716,14 +1742,15 @@ _evas_image_efl_image_load_size_get(Eo *eo_obj EINA_UNUSED, Evas_Image_Data *o,
1716EOLIAN static void 1742EOLIAN static void
1717_evas_image_load_scale_down_set(Eo *eo_obj, Evas_Image_Data *o, int scale_down) 1743_evas_image_load_scale_down_set(Eo *eo_obj, Evas_Image_Data *o, int scale_down)
1718{ 1744{
1745 Evas_Object_Protected_Data *obj = eo_data_scope_get(eo_obj, EVAS_OBJECT_CLASS);
1719 if (o->load_opts->scale_down_by == scale_down) return; 1746 if (o->load_opts->scale_down_by == scale_down) return;
1747 evas_object_async_block(obj);
1720 EINA_COW_LOAD_OPTS_WRITE_BEGIN(o, low) 1748 EINA_COW_LOAD_OPTS_WRITE_BEGIN(o, low)
1721 low->scale_down_by = scale_down; 1749 low->scale_down_by = scale_down;
1722 EINA_COW_LOAD_OPTS_WRITE_END(o, low); 1750 EINA_COW_LOAD_OPTS_WRITE_END(o, low);
1723 1751
1724 if (o->cur->u.file) 1752 if (o->cur->u.file)
1725 { 1753 {
1726 Evas_Object_Protected_Data *obj = eo_data_scope_get(eo_obj, EVAS_OBJECT_CLASS);
1727 evas_object_image_unload(eo_obj, 0); 1754 evas_object_image_unload(eo_obj, 0);
1728 evas_object_inform_call_image_unloaded(eo_obj); 1755 evas_object_inform_call_image_unloaded(eo_obj);
1729 evas_object_image_load(eo_obj, obj, o); 1756 evas_object_image_load(eo_obj, obj, o);
@@ -1741,9 +1768,10 @@ _evas_image_load_scale_down_get(Eo *eo_obj EINA_UNUSED, Evas_Image_Data *o)
1741EOLIAN static void 1768EOLIAN static void
1742_evas_image_load_region_set(Eo *eo_obj, Evas_Image_Data *o, int x, int y, int w, int h) 1769_evas_image_load_region_set(Eo *eo_obj, Evas_Image_Data *o, int x, int y, int w, int h)
1743{ 1770{
1771 Evas_Object_Protected_Data *obj = eo_data_scope_get(eo_obj, EVAS_OBJECT_CLASS);
1744 if ((o->load_opts->region.x == x) && (o->load_opts->region.y == y) && 1772 if ((o->load_opts->region.x == x) && (o->load_opts->region.y == y) &&
1745 (o->load_opts->region.w == w) && (o->load_opts->region.h == h)) return; 1773 (o->load_opts->region.w == w) && (o->load_opts->region.h == h)) return;
1746 1774 evas_object_async_block(obj);
1747 EINA_COW_LOAD_OPTS_WRITE_BEGIN(o, low) 1775 EINA_COW_LOAD_OPTS_WRITE_BEGIN(o, low)
1748 { 1776 {
1749 low->region.x = x; 1777 low->region.x = x;
@@ -1755,7 +1783,6 @@ _evas_image_load_region_set(Eo *eo_obj, Evas_Image_Data *o, int x, int y, int w,
1755 1783
1756 if (o->cur->u.file) 1784 if (o->cur->u.file)
1757 { 1785 {
1758 Evas_Object_Protected_Data *obj = eo_data_scope_get(eo_obj, EVAS_OBJECT_CLASS);
1759 evas_object_image_unload(eo_obj, 0); 1786 evas_object_image_unload(eo_obj, 0);
1760 evas_object_inform_call_image_unloaded(eo_obj); 1787 evas_object_inform_call_image_unloaded(eo_obj);
1761 evas_object_image_load(eo_obj, obj, o); 1788 evas_object_image_load(eo_obj, obj, o);
@@ -1776,7 +1803,9 @@ _evas_image_load_region_get(Eo *eo_obj EINA_UNUSED, Evas_Image_Data *o, int *x,
1776EOLIAN static void 1803EOLIAN static void
1777_evas_image_load_orientation_set(Eo *eo_obj EINA_UNUSED, Evas_Image_Data *o, Eina_Bool enable) 1804_evas_image_load_orientation_set(Eo *eo_obj EINA_UNUSED, Evas_Image_Data *o, Eina_Bool enable)
1778{ 1805{
1806 Evas_Object_Protected_Data *obj = eo_data_scope_get(eo_obj, EVAS_OBJECT_CLASS);
1779 if (o->load_opts->orientation == !!enable) return; 1807 if (o->load_opts->orientation == !!enable) return;
1808 evas_object_async_block(obj);
1780 1809
1781 EINA_COW_LOAD_OPTS_WRITE_BEGIN(o, low) 1810 EINA_COW_LOAD_OPTS_WRITE_BEGIN(o, low)
1782 low->orientation = !!enable; 1811 low->orientation = !!enable;
@@ -1793,6 +1822,7 @@ EOLIAN static void
1793_evas_image_colorspace_set(Eo *eo_obj, Evas_Image_Data *o, Evas_Colorspace cspace) 1822_evas_image_colorspace_set(Eo *eo_obj, Evas_Image_Data *o, Evas_Colorspace cspace)
1794{ 1823{
1795 Evas_Object_Protected_Data *obj = eo_data_scope_get(eo_obj, EVAS_OBJECT_CLASS); 1824 Evas_Object_Protected_Data *obj = eo_data_scope_get(eo_obj, EVAS_OBJECT_CLASS);
1825 evas_object_async_block(obj);
1796 1826
1797 _evas_object_image_cleanup(eo_obj, obj, o); 1827 _evas_object_image_cleanup(eo_obj, obj, o);
1798 1828
@@ -1814,6 +1844,7 @@ EOLIAN static void
1814_evas_image_video_surface_set(Eo *eo_obj, Evas_Image_Data *o, Evas_Video_Surface *surf) 1844_evas_image_video_surface_set(Eo *eo_obj, Evas_Image_Data *o, Evas_Video_Surface *surf)
1815{ 1845{
1816 Evas_Object_Protected_Data *obj = eo_data_scope_get(eo_obj, EVAS_OBJECT_CLASS); 1846 Evas_Object_Protected_Data *obj = eo_data_scope_get(eo_obj, EVAS_OBJECT_CLASS);
1847 evas_object_async_block(obj);
1817 1848
1818 _evas_object_image_cleanup(eo_obj, obj, o); 1849 _evas_object_image_cleanup(eo_obj, obj, o);
1819 if (o->video_surface) 1850 if (o->video_surface)
@@ -1877,6 +1908,7 @@ EOLIAN static void
1877_evas_image_video_surface_caps_set(Eo *eo_obj, Evas_Image_Data *o, unsigned int caps) 1908_evas_image_video_surface_caps_set(Eo *eo_obj, Evas_Image_Data *o, unsigned int caps)
1878{ 1909{
1879 Evas_Object_Protected_Data *obj = eo_data_scope_get(eo_obj, EVAS_OBJECT_CLASS); 1910 Evas_Object_Protected_Data *obj = eo_data_scope_get(eo_obj, EVAS_OBJECT_CLASS);
1911 evas_object_async_block(obj);
1880 1912
1881 _evas_object_image_cleanup(eo_obj, obj, o); 1913 _evas_object_image_cleanup(eo_obj, obj, o);
1882 1914
@@ -1906,6 +1938,8 @@ evas_object_image_native_surface_set(Evas_Object *eo_obj, Evas_Native_Surface *s
1906 MAGIC_CHECK(eo_obj, Evas_Object, MAGIC_OBJ); 1938 MAGIC_CHECK(eo_obj, Evas_Object, MAGIC_OBJ);
1907 return; 1939 return;
1908 MAGIC_CHECK_END(); 1940 MAGIC_CHECK_END();
1941 Evas_Object_Protected_Data *obj = eo_data_scope_get(eo_obj, EVAS_OBJECT_CLASS);
1942 evas_object_async_block(obj);
1909 evas_object_event_callback_del_full 1943 evas_object_event_callback_del_full
1910 (eo_obj, EVAS_CALLBACK_DEL, _on_image_native_surface_del, NULL); 1944 (eo_obj, EVAS_CALLBACK_DEL, _on_image_native_surface_del, NULL);
1911 if (surf) // We need to unset native surf on del to remove shared hash refs 1945 if (surf) // We need to unset native surf on del to remove shared hash refs
@@ -1918,7 +1952,7 @@ EOLIAN static void
1918_evas_image_native_surface_set(Eo *eo_obj, Evas_Image_Data *o, Evas_Native_Surface *surf) 1952_evas_image_native_surface_set(Eo *eo_obj, Evas_Image_Data *o, Evas_Native_Surface *surf)
1919{ 1953{
1920 Evas_Object_Protected_Data *obj = eo_data_scope_get(eo_obj, EVAS_OBJECT_CLASS); 1954 Evas_Object_Protected_Data *obj = eo_data_scope_get(eo_obj, EVAS_OBJECT_CLASS);
1921 1955 evas_object_async_block(obj);
1922 evas_render_rendering_wait(obj->layer->evas); 1956 evas_render_rendering_wait(obj->layer->evas);
1923 1957
1924 _evas_object_image_cleanup(eo_obj, obj, o); 1958 _evas_object_image_cleanup(eo_obj, obj, o);
@@ -1945,6 +1979,7 @@ EOLIAN static void
1945_evas_image_scale_hint_set(Eo *eo_obj, Evas_Image_Data *o, Evas_Image_Scale_Hint hint) 1979_evas_image_scale_hint_set(Eo *eo_obj, Evas_Image_Data *o, Evas_Image_Scale_Hint hint)
1946{ 1980{
1947 Evas_Object_Protected_Data *obj = eo_data_scope_get(eo_obj, EVAS_OBJECT_CLASS); 1981 Evas_Object_Protected_Data *obj = eo_data_scope_get(eo_obj, EVAS_OBJECT_CLASS);
1982 evas_object_async_block(obj);
1948 if (o->scale_hint == hint) return; 1983 if (o->scale_hint == hint) return;
1949 o->scale_hint = hint; 1984 o->scale_hint = hint;
1950 if (o->engine_data) 1985 if (o->engine_data)
@@ -1977,6 +2012,7 @@ EOLIAN static void
1977_evas_image_content_hint_set(Eo *eo_obj, Evas_Image_Data *o, Evas_Image_Content_Hint hint) 2012_evas_image_content_hint_set(Eo *eo_obj, Evas_Image_Data *o, Evas_Image_Content_Hint hint)
1978{ 2013{
1979 Evas_Object_Protected_Data *obj = eo_data_scope_get(eo_obj, EVAS_OBJECT_CLASS); 2014 Evas_Object_Protected_Data *obj = eo_data_scope_get(eo_obj, EVAS_OBJECT_CLASS);
2015 evas_object_async_block(obj);
1980 if (o->content_hint == hint) return; 2016 if (o->content_hint == hint) return;
1981 o->content_hint = hint; 2017 o->content_hint = hint;
1982 if (o->engine_data) 2018 if (o->engine_data)
@@ -2005,6 +2041,8 @@ evas_object_image_alpha_mask_set(Evas_Object *eo_obj, Eina_Bool ismask)
2005 MAGIC_CHECK(eo_obj, Evas_Object, MAGIC_OBJ); 2041 MAGIC_CHECK(eo_obj, Evas_Object, MAGIC_OBJ);
2006 return; 2042 return;
2007 MAGIC_CHECK_END(); 2043 MAGIC_CHECK_END();
2044 Evas_Object_Protected_Data *obj = eo_data_scope_get(eo_obj, EVAS_OBJECT_CLASS);
2045 evas_object_async_block(obj);
2008 if (!ismask) return; 2046 if (!ismask) return;
2009 /* Convert to A8 if not already */ 2047 /* Convert to A8 if not already */
2010 2048
@@ -2122,7 +2160,7 @@ _evas_image_animated_frame_set(Eo *eo_obj, Evas_Image_Data *o, int frame_index)
2122 if (o->cur->frame == frame_index) return; 2160 if (o->cur->frame == frame_index) return;
2123 2161
2124 if (!evas_object_image_animated_get(eo_obj)) return; 2162 if (!evas_object_image_animated_get(eo_obj)) return;
2125 2163 evas_object_async_block(obj);
2126 frame_count = evas_object_image_animated_frame_count_get(eo_obj); 2164 frame_count = evas_object_image_animated_frame_count_get(eo_obj);
2127 2165
2128 /* limit the size of frame to FRAME_MAX */ 2166 /* limit the size of frame to FRAME_MAX */
@@ -2149,6 +2187,7 @@ _evas_image_animated_frame_set(Eo *eo_obj, Evas_Image_Data *o, int frame_index)
2149EOLIAN void 2187EOLIAN void
2150_evas_canvas_image_cache_flush(Eo *eo_e EINA_UNUSED, Evas_Public_Data *e) 2188_evas_canvas_image_cache_flush(Eo *eo_e EINA_UNUSED, Evas_Public_Data *e)
2151{ 2189{
2190 evas_canvas_async_block(e);
2152 evas_render_rendering_wait(e); 2191 evas_render_rendering_wait(e);
2153 e->engine.func->image_cache_flush(e->engine.data.output); 2192 e->engine.func->image_cache_flush(e->engine.data.output);
2154} 2193}
@@ -2158,6 +2197,7 @@ _evas_canvas_image_cache_reload(Eo *eo_e, Evas_Public_Data *e)
2158{ 2197{
2159 Evas_Layer *layer; 2198 Evas_Layer *layer;
2160 2199
2200 evas_canvas_async_block(e);
2161 evas_image_cache_flush(eo_e); 2201 evas_image_cache_flush(eo_e);
2162 EINA_INLIST_FOREACH(e->layers, layer) 2202 EINA_INLIST_FOREACH(e->layers, layer)
2163 { 2203 {
@@ -2195,6 +2235,7 @@ EOLIAN void
2195_evas_canvas_image_cache_set(Eo *eo_e EINA_UNUSED, Evas_Public_Data *e, int size) 2235_evas_canvas_image_cache_set(Eo *eo_e EINA_UNUSED, Evas_Public_Data *e, int size)
2196{ 2236{
2197 if (size < 0) size = 0; 2237 if (size < 0) size = 0;
2238 evas_canvas_async_block(e);
2198 evas_render_rendering_wait(e); 2239 evas_render_rendering_wait(e);
2199 e->engine.func->image_cache_set(e->engine.data.output, size); 2240 e->engine.func->image_cache_set(e->engine.data.output, size);
2200} 2241}
@@ -2513,6 +2554,7 @@ evas_object_image_unload(Evas_Object *eo_obj, Eina_Bool dirty)
2513 (o->pixels_checked_out > 0)) return; 2554 (o->pixels_checked_out > 0)) return;
2514 2555
2515 Evas_Object_Protected_Data *obj = eo_data_scope_get(eo_obj, EVAS_OBJECT_CLASS); 2556 Evas_Object_Protected_Data *obj = eo_data_scope_get(eo_obj, EVAS_OBJECT_CLASS);
2557 evas_object_async_block(obj);
2516 if (dirty) 2558 if (dirty)
2517 { 2559 {
2518 if (o->engine_data) 2560 if (o->engine_data)
@@ -4660,13 +4702,14 @@ _evas_object_image_video_overlay_do(Evas_Object *eo_obj)
4660EOLIAN static void 4702EOLIAN static void
4661_evas_image_filter_program_set(Eo *eo_obj, Evas_Image_Data *o, const char *arg) 4703_evas_image_filter_program_set(Eo *eo_obj, Evas_Image_Data *o, const char *arg)
4662{ 4704{
4663 Evas_Object_Protected_Data *obj; 4705 Evas_Object_Protected_Data *obj = eo_data_scope_get(eo_obj, EVAS_OBJECT_CLASS);
4664 Evas_Filter_Program *pgm = NULL; 4706 Evas_Filter_Program *pgm = NULL;
4665 4707
4666 if (!o) return; 4708 if (!o) return;
4667 if (o->cur->filter->code == arg) return; 4709 if (o->cur->filter->code == arg) return;
4668 if (o->cur->filter->code && arg && !strcmp(arg, o->cur->filter->code)) return; 4710 if (o->cur->filter->code && arg && !strcmp(arg, o->cur->filter->code)) return;
4669 4711
4712 evas_object_async_block(obj);
4670 EINA_COW_IMAGE_STATE_WRITE_BEGIN(o, state_write) 4713 EINA_COW_IMAGE_STATE_WRITE_BEGIN(o, state_write)
4671 EINA_COW_IMAGE_FILTER_WRITE_BEGIN(state_write, fcow) 4714 EINA_COW_IMAGE_FILTER_WRITE_BEGIN(state_write, fcow)
4672 { 4715 {
@@ -4693,7 +4736,6 @@ _evas_image_filter_program_set(Eo *eo_obj, Evas_Image_Data *o, const char *arg)
4693 EINA_COW_IMAGE_STATE_WRITE_END(o, state_write); 4736 EINA_COW_IMAGE_STATE_WRITE_END(o, state_write);
4694 4737
4695 // Update object 4738 // Update object
4696 obj = eo_data_scope_get(eo_obj, EVAS_OBJECT_CLASS);
4697 o->changed = EINA_TRUE; 4739 o->changed = EINA_TRUE;
4698 evas_object_change(eo_obj, obj); 4740 evas_object_change(eo_obj, obj);
4699} 4741}
@@ -4745,6 +4787,7 @@ _evas_image_filter_source_set(Eo *eo_obj, Evas_Image_Data *o, const char *name,
4745 Eina_Hash *sources = o->cur->filter->sources; 4787 Eina_Hash *sources = o->cur->filter->sources;
4746 4788
4747 obj = eo_data_scope_get(eo_obj, EVAS_OBJECT_CLASS); 4789 obj = eo_data_scope_get(eo_obj, EVAS_OBJECT_CLASS);
4790 evas_object_async_block(obj);
4748 if (eo_source) source = eo_data_scope_get(eo_source, EVAS_OBJECT_CLASS); 4791 if (eo_source) source = eo_data_scope_get(eo_source, EVAS_OBJECT_CLASS);
4749 4792
4750 if (!name) 4793 if (!name)
diff --git a/src/lib/evas/canvas/evas_object_line.c b/src/lib/evas/canvas/evas_object_line.c
index 4c2d789..8090c61 100644
--- a/src/lib/evas/canvas/evas_object_line.c
+++ b/src/lib/evas/canvas/evas_object_line.c
@@ -118,6 +118,7 @@ _evas_line_xy_set(Eo *eo_obj, Evas_Line_Data *_pd, Evas_Coord x1, Evas_Coord y1,
118 (y1 == (obj->cur->geometry.y + o->cur.y1)) && 118 (y1 == (obj->cur->geometry.y + o->cur.y1)) &&
119 (x2 == (obj->cur->geometry.x + o->cur.x2)) && 119 (x2 == (obj->cur->geometry.x + o->cur.x2)) &&
120 (y2 == (obj->cur->geometry.y + o->cur.y2))) return; 120 (y2 == (obj->cur->geometry.y + o->cur.y2))) return;
121 evas_object_async_block(obj);
121 122
122 if (!(obj->layer->evas->is_frozen)) 123 if (!(obj->layer->evas->is_frozen))
123 { 124 {
diff --git a/src/lib/evas/canvas/evas_object_main.c b/src/lib/evas/canvas/evas_object_main.c
index da97914..8d286fd 100644
--- a/src/lib/evas/canvas/evas_object_main.c
+++ b/src/lib/evas/canvas/evas_object_main.c
@@ -645,6 +645,7 @@ evas_object_del(Evas_Object *eo_obj)
645 Evas_Object_Protected_Data *obj = eo_data_scope_get(eo_obj, MY_CLASS); 645 Evas_Object_Protected_Data *obj = eo_data_scope_get(eo_obj, MY_CLASS);
646 646
647 if (!obj) return; 647 if (!obj) return;
648 evas_object_async_block(obj);
648 if (obj->delete_me || obj->eo_del_called) return; 649 if (obj->delete_me || obj->eo_del_called) return;
649 if (obj->ref > 0) 650 if (obj->ref > 0)
650 { 651 {
@@ -764,6 +765,7 @@ _evas_object_position_set(Eo *eo_obj, Evas_Object_Protected_Data *obj, Evas_Coor
764 if (obj->delete_me) return; 765 if (obj->delete_me) return;
765 if (!obj->layer) return; 766 if (!obj->layer) return;
766 767
768 evas_object_async_block(obj);
767 if (evas_object_intercept_call_move(eo_obj, obj, x, y)) return; 769 if (evas_object_intercept_call_move(eo_obj, obj, x, y)) return;
768 770
769 if (obj->doing.in_move > 0) 771 if (obj->doing.in_move > 0)
@@ -846,6 +848,7 @@ _evas_object_size_set(Eo *eo_obj, Evas_Object_Protected_Data *obj, Evas_Coord w,
846 if (!obj->layer) return; 848 if (!obj->layer) return;
847 if (w < 0) w = 0; if (h < 0) h = 0; 849 if (w < 0) w = 0; if (h < 0) h = 0;
848 850
851 evas_object_async_block(obj);
849 if (evas_object_intercept_call_resize(eo_obj, obj, w, h)) return; 852 if (evas_object_intercept_call_resize(eo_obj, obj, w, h)) return;
850 853
851 if (obj->doing.in_resize > 0) 854 if (obj->doing.in_resize > 0)
@@ -978,6 +981,7 @@ _evas_object_size_hint_display_mode_set(Eo *eo_obj EINA_UNUSED, Evas_Object_Prot
978{ 981{
979 if (!obj) return; 982 if (!obj) return;
980 if (obj->delete_me) return; 983 if (obj->delete_me) return;
984 evas_object_async_block(obj);
981 _evas_object_size_hint_alloc(eo_obj, obj); 985 _evas_object_size_hint_alloc(eo_obj, obj);
982 if (obj->size_hints->dispmode == dispmode) return; 986 if (obj->size_hints->dispmode == dispmode) return;
983 obj->size_hints->dispmode = dispmode; 987 obj->size_hints->dispmode = dispmode;
@@ -1002,6 +1006,7 @@ _evas_object_size_hint_min_set(Eo *eo_obj, Evas_Object_Protected_Data *obj, Evas
1002{ 1006{
1003 if (obj->delete_me) 1007 if (obj->delete_me)
1004 return; 1008 return;
1009 evas_object_async_block(obj);
1005 _evas_object_size_hint_alloc(eo_obj, obj); 1010 _evas_object_size_hint_alloc(eo_obj, obj);
1006 if ((obj->size_hints->min.w == w) && (obj->size_hints->min.h == h)) return; 1011 if ((obj->size_hints->min.w == w) && (obj->size_hints->min.h == h)) return;
1007 obj->size_hints->min.w = w; 1012 obj->size_hints->min.w = w;
@@ -1027,6 +1032,7 @@ _evas_object_size_hint_max_set(Eo *eo_obj, Evas_Object_Protected_Data *obj, Evas
1027{ 1032{
1028 if (obj->delete_me) 1033 if (obj->delete_me)
1029 return; 1034 return;
1035 evas_object_async_block(obj);
1030 _evas_object_size_hint_alloc(eo_obj, obj); 1036 _evas_object_size_hint_alloc(eo_obj, obj);
1031 if ((obj->size_hints->max.w == w) && (obj->size_hints->max.h == h)) return; 1037 if ((obj->size_hints->max.w == w) && (obj->size_hints->max.h == h)) return;
1032 obj->size_hints->max.w = w; 1038 obj->size_hints->max.w = w;
@@ -1052,6 +1058,7 @@ _evas_object_size_hint_request_set(Eo *eo_obj, Evas_Object_Protected_Data *obj,
1052{ 1058{
1053 if (obj->delete_me) 1059 if (obj->delete_me)
1054 return; 1060 return;
1061 evas_object_async_block(obj);
1055 _evas_object_size_hint_alloc(eo_obj, obj); 1062 _evas_object_size_hint_alloc(eo_obj, obj);
1056 if ((obj->size_hints->request.w == w) && (obj->size_hints->request.h == h)) return; 1063 if ((obj->size_hints->request.w == w) && (obj->size_hints->request.h == h)) return;
1057 obj->size_hints->request.w = w; 1064 obj->size_hints->request.w = w;
@@ -1079,6 +1086,7 @@ _evas_object_size_hint_aspect_set(Eo *eo_obj, Evas_Object_Protected_Data *obj, E
1079{ 1086{
1080 if (obj->delete_me) 1087 if (obj->delete_me)
1081 return; 1088 return;
1089 evas_object_async_block(obj);
1082 _evas_object_size_hint_alloc(eo_obj, obj); 1090 _evas_object_size_hint_alloc(eo_obj, obj);
1083 if ((obj->size_hints->aspect.mode == aspect) && (obj->size_hints->aspect.size.w == w) && (obj->size_hints->aspect.size.h == h)) return; 1091 if ((obj->size_hints->aspect.mode == aspect) && (obj->size_hints->aspect.size.w == w) && (obj->size_hints->aspect.size.h == h)) return;
1084 obj->size_hints->aspect.mode = aspect; 1092 obj->size_hints->aspect.mode = aspect;
@@ -1105,6 +1113,7 @@ _evas_object_size_hint_align_set(Eo *eo_obj, Evas_Object_Protected_Data *obj, do
1105{ 1113{
1106 if (obj->delete_me) 1114 if (obj->delete_me)
1107 return; 1115 return;
1116 evas_object_async_block(obj);
1108 _evas_object_size_hint_alloc(eo_obj, obj); 1117 _evas_object_size_hint_alloc(eo_obj, obj);
1109 if ((obj->size_hints->align.x == x) && (obj->size_hints->align.y == y)) return; 1118 if ((obj->size_hints->align.x == x) && (obj->size_hints->align.y == y)) return;
1110 obj->size_hints->align.x = x; 1119 obj->size_hints->align.x = x;
@@ -1130,6 +1139,7 @@ _evas_object_size_hint_weight_set(Eo *eo_obj, Evas_Object_Protected_Data *obj, d
1130{ 1139{
1131 if (obj->delete_me) 1140 if (obj->delete_me)
1132 return; 1141 return;
1142 evas_object_async_block(obj);
1133 _evas_object_size_hint_alloc(eo_obj, obj); 1143 _evas_object_size_hint_alloc(eo_obj, obj);
1134 if ((obj->size_hints->weight.x == x) && (obj->size_hints->weight.y == y)) return; 1144 if ((obj->size_hints->weight.x == x) && (obj->size_hints->weight.y == y)) return;
1135 obj->size_hints->weight.x = x; 1145 obj->size_hints->weight.x = x;
@@ -1158,6 +1168,7 @@ _evas_object_size_hint_padding_set(Eo *eo_obj, Evas_Object_Protected_Data *obj,
1158{ 1168{
1159 if (obj->delete_me) 1169 if (obj->delete_me)
1160 return; 1170 return;
1171 evas_object_async_block(obj);
1161 _evas_object_size_hint_alloc(eo_obj, obj); 1172 _evas_object_size_hint_alloc(eo_obj, obj);
1162 if ((obj->size_hints->padding.l == l) && (obj->size_hints->padding.r == r) && (obj->size_hints->padding.t == t) && (obj->size_hints->padding.b == b)) return; 1173 if ((obj->size_hints->padding.l == l) && (obj->size_hints->padding.r == r) && (obj->size_hints->padding.t == t) && (obj->size_hints->padding.b == b)) return;
1163 obj->size_hints->padding.l = l; 1174 obj->size_hints->padding.l = l;
@@ -1187,6 +1198,7 @@ evas_object_hide(Evas_Object *eo_obj)
1187static void 1198static void
1188_evas_object_visibility_set(Eo *eo_obj, Evas_Object_Protected_Data *obj, Eina_Bool visible) 1199_evas_object_visibility_set(Eo *eo_obj, Evas_Object_Protected_Data *obj, Eina_Bool visible)
1189{ 1200{
1201 evas_object_async_block(obj);
1190 if (visible) _show(eo_obj, obj); 1202 if (visible) _show(eo_obj, obj);
1191 else _hide(eo_obj, obj); 1203 else _hide(eo_obj, obj);
1192} 1204}
@@ -1390,6 +1402,7 @@ _evas_object_color_set(Eo *eo_obj, Evas_Object_Protected_Data *obj, int r, int g
1390 ERR("Evas only handles pre multiplied colors!"); 1402 ERR("Evas only handles pre multiplied colors!");
1391 } 1403 }
1392 1404
1405 evas_object_async_block(obj);
1393 if (evas_object_intercept_call_color_set(eo_obj, obj, r, g, b, a)) return; 1406 if (evas_object_intercept_call_color_set(eo_obj, obj, r, g, b, a)) return;
1394 if (obj->is_smart) 1407 if (obj->is_smart)
1395 { 1408 {
@@ -1442,6 +1455,7 @@ _evas_object_anti_alias_set(Eo *eo_obj, Evas_Object_Protected_Data *obj, Eina_Bo
1442 anti_alias = !!anti_alias; 1455 anti_alias = !!anti_alias;
1443 if (obj->cur->anti_alias == anti_alias)return; 1456 if (obj->cur->anti_alias == anti_alias)return;
1444 1457
1458 evas_object_async_block(obj);
1445 EINA_COW_STATE_WRITE_BEGIN(obj, state_write, cur) 1459 EINA_COW_STATE_WRITE_BEGIN(obj, state_write, cur)
1446 { 1460 {
1447 state_write->anti_alias = anti_alias; 1461 state_write->anti_alias = anti_alias;
@@ -1464,6 +1478,7 @@ _evas_object_scale_set(Eo *eo_obj, Evas_Object_Protected_Data *obj, double scale
1464 if (obj->delete_me) return; 1478 if (obj->delete_me) return;
1465 if (obj->cur->scale == scale) return; 1479 if (obj->cur->scale == scale) return;
1466 1480
1481 evas_object_async_block(obj);
1467 EINA_COW_STATE_WRITE_BEGIN(obj, state_write, cur) 1482 EINA_COW_STATE_WRITE_BEGIN(obj, state_write, cur)
1468 { 1483 {
1469 state_write->scale = scale; 1484 state_write->scale = scale;
@@ -1487,6 +1502,7 @@ _evas_object_render_op_set(Eo *eo_obj, Evas_Object_Protected_Data *obj, Evas_Ren
1487 if (obj->delete_me) return; 1502 if (obj->delete_me) return;
1488 if (obj->cur->render_op == render_op) return; 1503 if (obj->cur->render_op == render_op) return;
1489 1504
1505 evas_object_async_block(obj);
1490 EINA_COW_STATE_WRITE_BEGIN(obj, state_write, cur) 1506 EINA_COW_STATE_WRITE_BEGIN(obj, state_write, cur)
1491 { 1507 {
1492 state_write->render_op = render_op; 1508 state_write->render_op = render_op;
@@ -1841,6 +1857,7 @@ _evas_object_type_set(Eo *eo_obj EINA_UNUSED, Evas_Object_Protected_Data *obj, c
1841EOLIAN static void 1857EOLIAN static void
1842_evas_object_precise_is_inside_set(Eo *eo_obj EINA_UNUSED, Evas_Object_Protected_Data *obj, Eina_Bool precise) 1858_evas_object_precise_is_inside_set(Eo *eo_obj EINA_UNUSED, Evas_Object_Protected_Data *obj, Eina_Bool precise)
1843{ 1859{
1860 evas_object_async_block(obj);
1844 obj->precise_is_inside = precise; 1861 obj->precise_is_inside = precise;
1845} 1862}
1846 1863
@@ -1853,6 +1870,7 @@ _evas_object_precise_is_inside_get(Eo *eo_obj EINA_UNUSED, Evas_Object_Protected
1853EOLIAN static void 1870EOLIAN static void
1854_evas_object_static_clip_set(Eo *eo_obj EINA_UNUSED, Evas_Object_Protected_Data *obj, Eina_Bool is_static_clip) 1871_evas_object_static_clip_set(Eo *eo_obj EINA_UNUSED, Evas_Object_Protected_Data *obj, Eina_Bool is_static_clip)
1855{ 1872{
1873 evas_object_async_block(obj);
1856 obj->is_static_clip = is_static_clip; 1874 obj->is_static_clip = is_static_clip;
1857} 1875}
1858 1876
@@ -1881,6 +1899,7 @@ _evas_object_is_frame_object_set(Eo *eo_obj, Evas_Object_Protected_Data *obj, Ei
1881{ 1899{
1882 Evas_Coord x, y; 1900 Evas_Coord x, y;
1883 1901
1902 evas_object_async_block(obj);
1884 evas_object_geometry_get(eo_obj, &x, &y, NULL, NULL); 1903 evas_object_geometry_get(eo_obj, &x, &y, NULL, NULL);
1885 1904
1886 _is_frame_flag_set(obj, is_frame); 1905 _is_frame_flag_set(obj, is_frame);
diff --git a/src/lib/evas/canvas/evas_object_polygon.c b/src/lib/evas/canvas/evas_object_polygon.c
index cd27199..4e5ed04 100644
--- a/src/lib/evas/canvas/evas_object_polygon.c
+++ b/src/lib/evas/canvas/evas_object_polygon.c
@@ -124,7 +124,7 @@ _evas_polygon_point_add(Eo *eo_obj, Evas_Polygon_Data *_pd, Evas_Coord x, Evas_C
124 Evas_Coord min_x, max_x, min_y, max_y; 124 Evas_Coord min_x, max_x, min_y, max_y;
125 int is, was = 0; 125 int is, was = 0;
126 126
127 127 evas_object_async_block(obj);
128 if (!obj->layer->evas->is_frozen) 128 if (!obj->layer->evas->is_frozen)
129 { 129 {
130 if (!evas_event_passes_through(eo_obj, obj) && 130 if (!evas_event_passes_through(eo_obj, obj) &&
@@ -230,6 +230,7 @@ _evas_polygon_points_clear(Eo *eo_obj, Evas_Polygon_Data *_pd)
230 void *list_data; 230 void *list_data;
231 int is, was; 231 int is, was;
232 232
233 evas_object_async_block(obj);
233 was = evas_object_is_in_output_rect(eo_obj, obj, 234 was = evas_object_is_in_output_rect(eo_obj, obj,
234 obj->layer->evas->pointer.x, 235 obj->layer->evas->pointer.x,
235 obj->layer->evas->pointer.y, 1, 1); 236 obj->layer->evas->pointer.y, 1, 1);
diff --git a/src/lib/evas/canvas/evas_object_smart.c b/src/lib/evas/canvas/evas_object_smart.c
index 3345776..4623fc0 100644
--- a/src/lib/evas/canvas/evas_object_smart.c
+++ b/src/lib/evas/canvas/evas_object_smart.c
@@ -237,6 +237,7 @@ _evas_object_smart_member_add(Eo *smart_obj, Evas_Smart_Data *o, Evas_Object *eo
237 237
238 if (obj->smart.parent == smart_obj) return; 238 if (obj->smart.parent == smart_obj) return;
239 239
240 evas_object_async_block(obj);
240 if (obj->smart.parent) evas_object_smart_member_del(eo_obj); 241 if (obj->smart.parent) evas_object_smart_member_del(eo_obj);
241 242
242 o->member_count++; 243 o->member_count++;
@@ -283,6 +284,7 @@ _evas_object_smart_member_del(Eo *smart_obj, Evas_Smart_Data *_pd EINA_UNUSED, E
283 284
284 if (!obj->smart.parent) return; 285 if (!obj->smart.parent) return;
285 286
287 evas_object_async_block(obj);
286 Evas_Object_Protected_Data *smart = eo_data_scope_get(smart_obj, EVAS_OBJECT_CLASS); 288 Evas_Object_Protected_Data *smart = eo_data_scope_get(smart_obj, EVAS_OBJECT_CLASS);
287 if (smart->smart.smart && smart->smart.smart->smart_class->member_del) 289 if (smart->smart.smart && smart->smart.smart->smart_class->member_del)
288 smart->smart.smart->smart_class->member_del(smart_obj, eo_obj); 290 smart->smart.smart->smart_class->member_del(smart_obj, eo_obj);
@@ -403,17 +405,19 @@ _evas_object_smart_iterator_free(Evas_Object_Smart_Iterator *it)
403 405
404// Should we have an eo_children_iterator_new API and just inherit from it ? 406// Should we have an eo_children_iterator_new API and just inherit from it ?
405EOLIAN static Eina_Iterator* 407EOLIAN static Eina_Iterator*
406_evas_object_smart_iterator_new(Eo *o, Evas_Smart_Data *priv) 408_evas_object_smart_iterator_new(Eo *eo_obj, Evas_Smart_Data *priv)
407{ 409{
408 Evas_Object_Smart_Iterator *it; 410 Evas_Object_Smart_Iterator *it;
411 Evas_Object_Protected_Data *obj = eo_data_scope_get(eo_obj, EVAS_OBJECT_CLASS);
409 412
410 if (!priv->contained) return NULL; 413 if (!priv->contained) return NULL;
411 414
415 evas_object_async_block(obj);
412 it = calloc(1, sizeof(Evas_Object_Smart_Iterator)); 416 it = calloc(1, sizeof(Evas_Object_Smart_Iterator));
413 if (!it) return NULL; 417 if (!it) return NULL;
414 418
415 EINA_MAGIC_SET(&it->iterator, EINA_MAGIC_ITERATOR); 419 EINA_MAGIC_SET(&it->iterator, EINA_MAGIC_ITERATOR);
416 it->parent = eo_ref(o); 420 it->parent = eo_ref(eo_obj);
417 it->current = priv->contained; 421 it->current = priv->contained;
418 422
419 it->iterator.next = FUNC_ITERATOR_NEXT(_evas_object_smart_iterator_next); 423 it->iterator.next = FUNC_ITERATOR_NEXT(_evas_object_smart_iterator_next);
@@ -424,13 +428,13 @@ _evas_object_smart_iterator_new(Eo *o, Evas_Smart_Data *priv)
424} 428}
425 429
426EOLIAN static Eina_List* 430EOLIAN static Eina_List*
427_evas_object_smart_members_get(Eo *eo_obj EINA_UNUSED, Evas_Smart_Data *o) 431_evas_object_smart_members_get(Eo *eo_obj, Evas_Smart_Data *o)
428{ 432{
429 Eina_List *members; 433 Evas_Object_Protected_Data *obj = eo_data_scope_get(eo_obj, EVAS_OBJECT_CLASS);
430 434 Eina_List *members = NULL;
431 Eina_Inlist *member; 435 Eina_Inlist *member;
432 436
433 members = NULL; 437 evas_object_async_block(obj);
434 for (member = o->contained; member; member = member->next) 438 for (member = o->contained; member; member = member->next)
435 members = eina_list_append(members, ((Evas_Object_Protected_Data *)member)->object); 439 members = eina_list_append(members, ((Evas_Object_Protected_Data *)member)->object);
436 440
@@ -440,9 +444,11 @@ _evas_object_smart_members_get(Eo *eo_obj EINA_UNUSED, Evas_Smart_Data *o)
440const Eina_Inlist * 444const Eina_Inlist *
441evas_object_smart_members_get_direct(const Evas_Object *eo_obj) 445evas_object_smart_members_get_direct(const Evas_Object *eo_obj)
442{ 446{
447 Evas_Object_Protected_Data *obj = eo_data_scope_get(eo_obj, EVAS_OBJECT_CLASS);
443 MAGIC_CHECK(eo_obj, Evas_Object, MAGIC_OBJ); 448 MAGIC_CHECK(eo_obj, Evas_Object, MAGIC_OBJ);
444 return NULL; 449 return NULL;
445 MAGIC_CHECK_END(); 450 MAGIC_CHECK_END();
451 evas_object_async_block(obj);
446 if (!eo_isa(eo_obj, MY_CLASS)) return NULL; 452 if (!eo_isa(eo_obj, MY_CLASS)) return NULL;
447 Evas_Smart_Data *o = eo_data_scope_get(eo_obj, MY_CLASS); 453 Evas_Smart_Data *o = eo_data_scope_get(eo_obj, MY_CLASS);
448 return o->contained; 454 return o->contained;
@@ -858,6 +864,7 @@ _evas_object_smart_need_recalculate_set(Eo *eo_obj, Evas_Smart_Data *o, Eina_Boo
858 // XXX: do i need this? 864 // XXX: do i need this?
859 if (!obj || !obj->layer || obj->delete_me) return; 865 if (!obj || !obj->layer || obj->delete_me) return;
860 866
867 evas_object_async_block(obj);
861 /* remove this entry from calc_list or processed list */ 868 /* remove this entry from calc_list or processed list */
862 if (eina_clist_element_is_linked(&o->calc_entry)) 869 if (eina_clist_element_is_linked(&o->calc_entry))
863 eina_clist_remove(&o->calc_entry); 870 eina_clist_remove(&o->calc_entry);
@@ -893,6 +900,7 @@ _evas_object_smart_calculate(Eo *eo_obj, Evas_Smart_Data *o)
893 if (!obj->smart.smart || !obj->smart.smart->smart_class->calculate) 900 if (!obj->smart.smart || !obj->smart.smart->smart_class->calculate)
894 return; 901 return;
895 902
903 evas_object_async_block(obj);
896 o->need_recalculate = 0; 904 o->need_recalculate = 0;
897 obj->smart.smart->smart_class->calculate(eo_obj); 905 obj->smart.smart->smart_class->calculate(eo_obj);
898} 906}
@@ -921,6 +929,7 @@ evas_call_smarts_calculate(Evas *eo_e)
921 Eina_Clist *elem; 929 Eina_Clist *elem;
922 Evas_Public_Data *e = eo_data_scope_get(eo_e, EVAS_CANVAS_CLASS); 930 Evas_Public_Data *e = eo_data_scope_get(eo_e, EVAS_CANVAS_CLASS);
923 931
932 evas_canvas_async_block(e);
924 evas_event_freeze(eo_e); 933 evas_event_freeze(eo_e);
925 e->in_smart_calc++; 934 e->in_smart_calc++;
926 935
@@ -963,6 +972,7 @@ EOLIAN static void
963_evas_object_smart_changed(Eo *eo_obj, Evas_Smart_Data *o EINA_UNUSED) 972_evas_object_smart_changed(Eo *eo_obj, Evas_Smart_Data *o EINA_UNUSED)
964{ 973{
965 Evas_Object_Protected_Data *obj = eo_data_scope_get(eo_obj, EVAS_OBJECT_CLASS); 974 Evas_Object_Protected_Data *obj = eo_data_scope_get(eo_obj, EVAS_OBJECT_CLASS);
975 evas_object_async_block(obj);
966 evas_object_change(eo_obj, obj); 976 evas_object_change(eo_obj, obj);
967 eo_do(eo_obj, evas_obj_smart_need_recalculate_set(1)); 977 eo_do(eo_obj, evas_obj_smart_need_recalculate_set(1));
968} 978}
@@ -1297,6 +1307,7 @@ evas_object_smart_need_bounding_box_update(Evas_Object *eo_obj)
1297 Evas_Object_Protected_Data *obj = eo_data_scope_get(eo_obj, EVAS_OBJECT_CLASS); 1307 Evas_Object_Protected_Data *obj = eo_data_scope_get(eo_obj, EVAS_OBJECT_CLASS);
1298 Evas_Smart_Data *o = eo_data_scope_get(eo_obj, MY_CLASS); 1308 Evas_Smart_Data *o = eo_data_scope_get(eo_obj, MY_CLASS);
1299 1309
1310 evas_object_async_block(obj);
1300 if (o->update_boundingbox_needed) return; 1311 if (o->update_boundingbox_needed) return;
1301 o->update_boundingbox_needed = EINA_TRUE; 1312 o->update_boundingbox_needed = EINA_TRUE;
1302 1313
@@ -1318,6 +1329,7 @@ evas_object_smart_bounding_box_update(Evas_Object *eo_obj, Evas_Object_Protected
1318 return; 1329 return;
1319 MAGIC_CHECK_END(); 1330 MAGIC_CHECK_END();
1320 1331
1332 evas_object_async_block(obj);
1321 os = eo_data_scope_get(eo_obj, MY_CLASS); 1333 os = eo_data_scope_get(eo_obj, MY_CLASS);
1322 1334
1323 if (!os->update_boundingbox_needed) return; 1335 if (!os->update_boundingbox_needed) return;
diff --git a/src/lib/evas/canvas/evas_object_text.c b/src/lib/evas/canvas/evas_object_text.c
index 8eadf07..004001f 100644
--- a/src/lib/evas/canvas/evas_object_text.c
+++ b/src/lib/evas/canvas/evas_object_text.c
@@ -380,11 +380,13 @@ _evas_text_eo_base_constructor(Eo *eo_obj, Evas_Text_Data *o)
380} 380}
381 381
382EOLIAN static void 382EOLIAN static void
383_evas_text_efl_text_properties_font_source_set(Eo *eo_obj EINA_UNUSED, Evas_Text_Data *o, const char *font_source) 383_evas_text_efl_text_properties_font_source_set(Eo *eo_obj, Evas_Text_Data *o, const char *font_source)
384{ 384{
385 Evas_Object_Protected_Data *obj = eo_data_scope_get(eo_obj, EVAS_OBJECT_CLASS);
385 if ((o->cur.source) && (font_source) && 386 if ((o->cur.source) && (font_source) &&
386 (!strcmp(o->cur.source, font_source))) 387 (!strcmp(o->cur.source, font_source)))
387 return; 388 return;
389 evas_object_async_block(obj);
388 /* 390 /*
389 if (o->cur.source) eina_stringshare_del(o->cur.source); 391 if (o->cur.source) eina_stringshare_del(o->cur.source);
390 if (font_source) o->cur.source = eina_stringshare_add(font_source); 392 if (font_source) o->cur.source = eina_stringshare_add(font_source);
@@ -415,6 +417,7 @@ _evas_text_filter_changed_set(Evas_Text_Data *o, Eina_Bool val)
415EOLIAN static void 417EOLIAN static void
416_evas_text_efl_text_properties_font_set(Eo *eo_obj, Evas_Text_Data *o, const char *font, Evas_Font_Size size) 418_evas_text_efl_text_properties_font_set(Eo *eo_obj, Evas_Text_Data *o, const char *font, Evas_Font_Size size)
417{ 419{
420 Evas_Object_Protected_Data *obj = eo_data_scope_get(eo_obj, EVAS_OBJECT_CLASS);
418 Eina_Bool is, was = EINA_FALSE; 421 Eina_Bool is, was = EINA_FALSE;
419 Eina_Bool pass = EINA_FALSE, freeze = EINA_FALSE; 422 Eina_Bool pass = EINA_FALSE, freeze = EINA_FALSE;
420 Eina_Bool source_invisible = EINA_FALSE; 423 Eina_Bool source_invisible = EINA_FALSE;
@@ -423,6 +426,7 @@ _evas_text_efl_text_properties_font_set(Eo *eo_obj, Evas_Text_Data *o, const cha
423 426
424 if ((!font) || (size <= 0)) return; 427 if ((!font) || (size <= 0)) return;
425 428
429 evas_object_async_block(obj);
426 if (!(o->cur.font && !strcmp(font, o->cur.font))) 430 if (!(o->cur.font && !strcmp(font, o->cur.font)))
427 { 431 {
428 fdesc = evas_font_desc_new(); 432 fdesc = evas_font_desc_new();
@@ -447,7 +451,6 @@ _evas_text_efl_text_properties_font_set(Eo *eo_obj, Evas_Text_Data *o, const cha
447 eina_stringshare_replace(&o->cur.font, font); 451 eina_stringshare_replace(&o->cur.font, font);
448 o->prev.font = NULL; 452 o->prev.font = NULL;
449 453
450 Evas_Object_Protected_Data *obj = eo_data_scope_get(eo_obj, EVAS_OBJECT_CLASS);
451 if (!(obj->layer->evas->is_frozen)) 454 if (!(obj->layer->evas->is_frozen))
452 { 455 {
453 pass = evas_event_passes_through(eo_obj, obj); 456 pass = evas_event_passes_through(eo_obj, obj);
@@ -927,6 +930,7 @@ _evas_text_evas_object_size_set(Eo *eo_obj, Evas_Text_Data *o, Evas_Coord w, Eva
927{ 930{
928 Evas_Object_Protected_Data *obj = eo_data_scope_get(eo_obj, EVAS_OBJECT_CLASS); 931 Evas_Object_Protected_Data *obj = eo_data_scope_get(eo_obj, EVAS_OBJECT_CLASS);
929 932
933 evas_object_async_block(obj);
930 EINA_COW_STATE_WRITE_BEGIN(obj, state_write, cur) 934 EINA_COW_STATE_WRITE_BEGIN(obj, state_write, cur)
931 { 935 {
932 state_write->geometry.w = w; 936 state_write->geometry.w = w;
@@ -944,6 +948,7 @@ _evas_text_ellipsis_set(Eo *eo_obj, Evas_Text_Data *o, double ellipsis)
944 948
945 if (o->cur.ellipsis == ellipsis) return; 949 if (o->cur.ellipsis == ellipsis) return;
946 950
951 evas_object_async_block(obj);
947 o->cur.ellipsis = ellipsis; 952 o->cur.ellipsis = ellipsis;
948 o->changed = 1; 953 o->changed = 1;
949 _evas_text_filter_changed_set(o, EINA_TRUE); 954 _evas_text_filter_changed_set(o, EINA_TRUE);
@@ -979,15 +984,16 @@ _evas_text_eo_base_dbg_info_get(Eo *eo_obj, Evas_Text_Data *o EINA_UNUSED, Eo_Db
979EOLIAN static void 984EOLIAN static void
980_evas_text_efl_text_text_set(Eo *eo_obj, Evas_Text_Data *o, const char *_text) 985_evas_text_efl_text_text_set(Eo *eo_obj, Evas_Text_Data *o, const char *_text)
981{ 986{
987 Evas_Object_Protected_Data *obj = eo_data_scope_get(eo_obj, EVAS_OBJECT_CLASS);
982 int is, was, len; 988 int is, was, len;
983 Eina_Unicode *text; 989 Eina_Unicode *text;
984 990
985 if ((o->cur.utf8_text) && (_text) && (!strcmp(o->cur.utf8_text, _text))) 991 if ((o->cur.utf8_text) && (_text) && (!strcmp(o->cur.utf8_text, _text)))
986 return; 992 return;
993 evas_object_async_block(obj);
987 text = eina_unicode_utf8_to_unicode(_text, &len); 994 text = eina_unicode_utf8_to_unicode(_text, &len);
988 995
989 if (!text) text = eina_unicode_strdup(EINA_UNICODE_EMPTY_STRING); 996 if (!text) text = eina_unicode_strdup(EINA_UNICODE_EMPTY_STRING);
990 Evas_Object_Protected_Data *obj = eo_data_scope_get(eo_obj, EVAS_OBJECT_CLASS);
991 was = evas_object_is_in_output_rect(eo_obj, obj, 997 was = evas_object_is_in_output_rect(eo_obj, obj,
992 obj->layer->evas->pointer.x, 998 obj->layer->evas->pointer.x,
993 obj->layer->evas->pointer.y, 1, 1); 999 obj->layer->evas->pointer.y, 1, 1);
@@ -1020,8 +1026,10 @@ _evas_text_efl_text_text_set(Eo *eo_obj, Evas_Text_Data *o, const char *_text)
1020} 1026}
1021 1027
1022EOLIAN static void 1028EOLIAN static void
1023_evas_text_bidi_delimiters_set(Eo *eo_obj EINA_UNUSED, Evas_Text_Data *o, const char *delim) 1029_evas_text_bidi_delimiters_set(Eo *eo_obj, Evas_Text_Data *o, const char *delim)
1024{ 1030{
1031 Evas_Object_Protected_Data *obj = eo_data_scope_get(eo_obj, EVAS_OBJECT_CLASS);
1032 evas_object_async_block(obj);
1025 eina_stringshare_replace(&o->bidi_delimiters, delim); 1033 eina_stringshare_replace(&o->bidi_delimiters, delim);
1026} 1034}
1027 1035
@@ -1212,11 +1220,12 @@ _evas_text_char_coords_get(Eo *eo_obj, Evas_Text_Data *o, Evas_Coord x, Evas_Coo
1212EOLIAN static void 1220EOLIAN static void
1213_evas_text_style_set(Eo *eo_obj, Evas_Text_Data *o, Evas_Text_Style_Type style) 1221_evas_text_style_set(Eo *eo_obj, Evas_Text_Data *o, Evas_Text_Style_Type style)
1214{ 1222{
1223 Evas_Object_Protected_Data *obj = eo_data_scope_get(eo_obj, EVAS_OBJECT_CLASS);
1215 int pl = 0, pr = 0, pt = 0, pb = 0, l = 0, r = 0, t = 0, b = 0; 1224 int pl = 0, pr = 0, pt = 0, pb = 0, l = 0, r = 0, t = 0, b = 0;
1216 int w = 0, h = 0; 1225 int w = 0, h = 0;
1217 1226
1218 if (o->cur.style == style) return; 1227 if (o->cur.style == style) return;
1219 Evas_Object_Protected_Data *obj = eo_data_scope_get(eo_obj, EVAS_OBJECT_CLASS); 1228 evas_object_async_block(obj);
1220 1229
1221 evas_text_style_pad_get(o->cur.style, &pl, &pr, &pt, &pb); 1230 evas_text_style_pad_get(o->cur.style, &pl, &pr, &pt, &pb);
1222 o->cur.style = style; 1231 o->cur.style = style;
@@ -1239,15 +1248,16 @@ _evas_text_style_get(Eo *eo_obj EINA_UNUSED, Evas_Text_Data *o)
1239EOLIAN static void 1248EOLIAN static void
1240_evas_text_shadow_color_set(Eo *eo_obj, Evas_Text_Data *o, int r, int g, int b, int a) 1249_evas_text_shadow_color_set(Eo *eo_obj, Evas_Text_Data *o, int r, int g, int b, int a)
1241{ 1250{
1251 Evas_Object_Protected_Data *obj = eo_data_scope_get(eo_obj, EVAS_OBJECT_CLASS);
1242 if ((o->cur.shadow.r == r) && (o->cur.shadow.g == g) && 1252 if ((o->cur.shadow.r == r) && (o->cur.shadow.g == g) &&
1243 (o->cur.shadow.b == b) && (o->cur.shadow.a == a)) 1253 (o->cur.shadow.b == b) && (o->cur.shadow.a == a))
1244 return; 1254 return;
1255 evas_object_async_block(obj);
1245 o->cur.shadow.r = r; 1256 o->cur.shadow.r = r;
1246 o->cur.shadow.g = g; 1257 o->cur.shadow.g = g;
1247 o->cur.shadow.b = b; 1258 o->cur.shadow.b = b;
1248 o->cur.shadow.a = a; 1259 o->cur.shadow.a = a;
1249 o->changed = 1; 1260 o->changed = 1;
1250 Evas_Object_Protected_Data *obj = eo_data_scope_get(eo_obj, EVAS_OBJECT_CLASS);
1251 evas_object_change(eo_obj, obj); 1261 evas_object_change(eo_obj, obj);
1252} 1262}
1253 1263
@@ -1263,15 +1273,16 @@ _evas_text_shadow_color_get(Eo *eo_obj EINA_UNUSED, Evas_Text_Data *o, int *r, i
1263EOLIAN static void 1273EOLIAN static void
1264_evas_text_glow_color_set(Eo *eo_obj, Evas_Text_Data *o, int r, int g, int b, int a) 1274_evas_text_glow_color_set(Eo *eo_obj, Evas_Text_Data *o, int r, int g, int b, int a)
1265{ 1275{
1276 Evas_Object_Protected_Data *obj = eo_data_scope_get(eo_obj, EVAS_OBJECT_CLASS);
1266 if ((o->cur.glow.r == r) && (o->cur.glow.g == g) && 1277 if ((o->cur.glow.r == r) && (o->cur.glow.g == g) &&
1267 (o->cur.glow.b == b) && (o->cur.glow.a == a)) 1278 (o->cur.glow.b == b) && (o->cur.glow.a == a))
1268 return; 1279 return;
1280 evas_object_async_block(obj);
1269 o->cur.glow.r = r; 1281 o->cur.glow.r = r;
1270 o->cur.glow.g = g; 1282 o->cur.glow.g = g;
1271 o->cur.glow.b = b; 1283 o->cur.glow.b = b;
1272 o->cur.glow.a = a; 1284 o->cur.glow.a = a;
1273 o->changed = 1; 1285 o->changed = 1;
1274 Evas_Object_Protected_Data *obj = eo_data_scope_get(eo_obj, EVAS_OBJECT_CLASS);
1275 evas_object_change(eo_obj, obj); 1286 evas_object_change(eo_obj, obj);
1276} 1287}
1277 1288
@@ -1287,15 +1298,16 @@ _evas_text_glow_color_get(Eo *eo_obj EINA_UNUSED, Evas_Text_Data *o, int *r, int
1287EOLIAN static void 1298EOLIAN static void
1288_evas_text_glow2_color_set(Eo *eo_obj, Evas_Text_Data *o, int r, int g, int b, int a) 1299_evas_text_glow2_color_set(Eo *eo_obj, Evas_Text_Data *o, int r, int g, int b, int a)
1289{ 1300{
1301 Evas_Object_Protected_Data *obj = eo_data_scope_get(eo_obj, EVAS_OBJECT_CLASS);
1290 if ((o->cur.glow2.r == r) && (o->cur.glow2.g == g) && 1302 if ((o->cur.glow2.r == r) && (o->cur.glow2.g == g) &&
1291 (o->cur.glow2.b == b) && (o->cur.glow2.a == a)) 1303 (o->cur.glow2.b == b) && (o->cur.glow2.a == a))
1292 return; 1304 return;
1305 evas_object_async_block(obj);
1293 o->cur.glow2.r = r; 1306 o->cur.glow2.r = r;
1294 o->cur.glow2.g = g; 1307 o->cur.glow2.g = g;
1295 o->cur.glow2.b = b; 1308 o->cur.glow2.b = b;
1296 o->cur.glow2.a = a; 1309 o->cur.glow2.a = a;
1297 o->changed = 1; 1310 o->changed = 1;
1298 Evas_Object_Protected_Data *obj = eo_data_scope_get(eo_obj, EVAS_OBJECT_CLASS);
1299 evas_object_change(eo_obj, obj); 1311 evas_object_change(eo_obj, obj);
1300} 1312}
1301 1313
@@ -1311,15 +1323,16 @@ _evas_text_glow2_color_get(Eo *eo_obj EINA_UNUSED, Evas_Text_Data *o, int *r, in
1311EOLIAN static void 1323EOLIAN static void
1312_evas_text_outline_color_set(Eo *eo_obj, Evas_Text_Data *o, int r, int g, int b, int a) 1324_evas_text_outline_color_set(Eo *eo_obj, Evas_Text_Data *o, int r, int g, int b, int a)
1313{ 1325{
1326 Evas_Object_Protected_Data *obj = eo_data_scope_get(eo_obj, EVAS_OBJECT_CLASS);
1314 if ((o->cur.outline.r == r) && (o->cur.outline.g == g) && 1327 if ((o->cur.outline.r == r) && (o->cur.outline.g == g) &&
1315 (o->cur.outline.b == b) && (o->cur.outline.a == a)) 1328 (o->cur.outline.b == b) && (o->cur.outline.a == a))
1316 return; 1329 return;
1330 evas_object_async_block(obj);
1317 o->cur.outline.r = r; 1331 o->cur.outline.r = r;
1318 o->cur.outline.g = g; 1332 o->cur.outline.g = g;
1319 o->cur.outline.b = b; 1333 o->cur.outline.b = b;
1320 o->cur.outline.a = a; 1334 o->cur.outline.a = a;
1321 o->changed = 1; 1335 o->changed = 1;
1322 Evas_Object_Protected_Data *obj = eo_data_scope_get(eo_obj, EVAS_OBJECT_CLASS);
1323 evas_object_change(eo_obj, obj); 1336 evas_object_change(eo_obj, obj);
1324} 1337}
1325 1338
@@ -2357,13 +2370,15 @@ _evas_object_text_recalc(Evas_Object *eo_obj, Eina_Unicode *text)
2357EOLIAN static void 2370EOLIAN static void
2358_evas_text_filter_program_set(Eo *eo_obj, Evas_Text_Data *o, const char *arg) 2371_evas_text_filter_program_set(Eo *eo_obj, Evas_Text_Data *o, const char *arg)
2359{ 2372{
2360 Evas_Object_Protected_Data *obj; 2373 Evas_Object_Protected_Data *obj = eo_data_scope_get(eo_obj, EVAS_OBJECT_CLASS);
2374
2361 Evas_Filter_Program *pgm = NULL; 2375 Evas_Filter_Program *pgm = NULL;
2362 2376
2363 if (!o) return; 2377 if (!o) return;
2364 if (o->cur.filter->code == arg) return; 2378 if (o->cur.filter->code == arg) return;
2365 if (o->cur.filter->code && arg && !strcmp(arg, o->cur.filter->code)) return; 2379 if (o->cur.filter->code && arg && !strcmp(arg, o->cur.filter->code)) return;
2366 2380
2381 evas_object_async_block(obj);
2367 EINA_COW_WRITE_BEGIN(evas_object_filter_cow, o->cur.filter, Evas_Object_Filter_Data, fcow) 2382 EINA_COW_WRITE_BEGIN(evas_object_filter_cow, o->cur.filter, Evas_Object_Filter_Data, fcow)
2368 { 2383 {
2369 // Parse filter program 2384 // Parse filter program
@@ -2387,7 +2402,6 @@ _evas_text_filter_program_set(Eo *eo_obj, Evas_Text_Data *o, const char *arg)
2387 EINA_COW_WRITE_END(evas_object_filter_cow, o->cur.filter, fcow); 2402 EINA_COW_WRITE_END(evas_object_filter_cow, o->cur.filter, fcow);
2388 2403
2389 // Update object 2404 // Update object
2390 obj = eo_data_scope_get(eo_obj, EVAS_OBJECT_CLASS);
2391 _evas_object_text_items_clear(o); 2405 _evas_object_text_items_clear(o);
2392 o->changed = 1; 2406 o->changed = 1;
2393 _evas_object_text_recalc(eo_obj, o->cur.text); 2407 _evas_object_text_recalc(eo_obj, o->cur.text);
@@ -2435,14 +2449,14 @@ _filter_source_hash_free_cb(void *data)
2435EOLIAN static void 2449EOLIAN static void
2436_evas_text_filter_source_set(Eo *eo_obj, Evas_Text_Data *o, const char *name, Evas_Object *eo_source) 2450_evas_text_filter_source_set(Eo *eo_obj, Evas_Text_Data *o, const char *name, Evas_Object *eo_source)
2437{ 2451{
2438 Evas_Object_Protected_Data *obj; 2452 Evas_Object_Protected_Data *obj = eo_data_scope_get(eo_obj, EVAS_OBJECT_CLASS);
2439 Evas_Filter_Proxy_Binding *pb, *pb_old = NULL; 2453 Evas_Filter_Proxy_Binding *pb, *pb_old = NULL;
2440 Evas_Object_Protected_Data *source = NULL; 2454 Evas_Object_Protected_Data *source = NULL;
2441 Evas_Object_Filter_Data *fcow = NULL; 2455 Evas_Object_Filter_Data *fcow = NULL;
2442 2456
2443 obj = eo_data_scope_get(eo_obj, EVAS_OBJECT_CLASS);
2444 if (eo_source) source = eo_data_scope_get(eo_source, EVAS_OBJECT_CLASS); 2457 if (eo_source) source = eo_data_scope_get(eo_source, EVAS_OBJECT_CLASS);
2445 2458
2459 evas_object_async_block(obj);
2446 if (!name) 2460 if (!name)
2447 { 2461 {
2448 if (!eo_source || !o->cur.filter->sources) return; 2462 if (!eo_source || !o->cur.filter->sources) return;
diff --git a/src/lib/evas/canvas/evas_object_textblock.c b/src/lib/evas/canvas/evas_object_textblock.c
index e9db7bb..52805ed 100644
--- a/src/lib/evas/canvas/evas_object_textblock.c
+++ b/src/lib/evas/canvas/evas_object_textblock.c
@@ -5842,6 +5842,8 @@ evas_textblock_style_set(Evas_Textblock_Style *ts, const char *text)
5842 EINA_LIST_FOREACH(ts->objects, l, eo_obj) 5842 EINA_LIST_FOREACH(ts->objects, l, eo_obj)
5843 { 5843 {
5844 Evas_Textblock_Data *o = eo_data_scope_get(eo_obj, MY_CLASS); 5844 Evas_Textblock_Data *o = eo_data_scope_get(eo_obj, MY_CLASS);
5845 Evas_Object_Protected_Data *obj = eo_data_scope_get(eo_obj, EVAS_OBJECT_CLASS);
5846 evas_object_async_block(obj);
5845 _evas_textblock_invalidate_all(o); 5847 _evas_textblock_invalidate_all(o);
5846 _evas_textblock_changed(o, eo_obj); 5848 _evas_textblock_changed(o, eo_obj);
5847 } 5849 }
@@ -6060,6 +6062,8 @@ _textblock_style_generic_set(Evas_Object *eo_obj, Evas_Textblock_Style *ts,
6060EOLIAN static void 6062EOLIAN static void
6061_evas_textblock_style_set(Eo *eo_obj, Evas_Textblock_Data *o, const Evas_Textblock_Style *ts) 6063_evas_textblock_style_set(Eo *eo_obj, Evas_Textblock_Data *o, const Evas_Textblock_Style *ts)
6062{ 6064{
6065 Evas_Object_Protected_Data *obj = eo_data_scope_get(eo_obj, EVAS_OBJECT_CLASS);
6066 evas_object_async_block(obj);
6063 _textblock_style_generic_set(eo_obj, (Evas_Textblock_Style *) ts, &(o->style)); 6067 _textblock_style_generic_set(eo_obj, (Evas_Textblock_Style *) ts, &(o->style));
6064} 6068}
6065 6069
@@ -6072,6 +6076,8 @@ _evas_textblock_style_get(Eo *eo_obj EINA_UNUSED, Evas_Textblock_Data *o)
6072EOLIAN static void 6076EOLIAN static void
6073_evas_textblock_style_user_push(Eo *eo_obj, Evas_Textblock_Data *o, Evas_Textblock_Style *ts) 6077_evas_textblock_style_user_push(Eo *eo_obj, Evas_Textblock_Data *o, Evas_Textblock_Style *ts)
6074{ 6078{
6079 Evas_Object_Protected_Data *obj = eo_data_scope_get(eo_obj, EVAS_OBJECT_CLASS);
6080 evas_object_async_block(obj);
6075 _textblock_style_generic_set(eo_obj, ts, &(o->style_user)); 6081 _textblock_style_generic_set(eo_obj, ts, &(o->style_user));
6076} 6082}
6077 6083
@@ -6084,12 +6090,16 @@ _evas_textblock_style_user_peek(Eo *eo_obj EINA_UNUSED, Evas_Textblock_Data *o)
6084EOLIAN static void 6090EOLIAN static void
6085_evas_textblock_style_user_pop(Eo *eo_obj, Evas_Textblock_Data *o) 6091_evas_textblock_style_user_pop(Eo *eo_obj, Evas_Textblock_Data *o)
6086{ 6092{
6093 Evas_Object_Protected_Data *obj = eo_data_scope_get(eo_obj, EVAS_OBJECT_CLASS);
6094 evas_object_async_block(obj);
6087 _textblock_style_generic_set(eo_obj, NULL, &(o->style_user)); 6095 _textblock_style_generic_set(eo_obj, NULL, &(o->style_user));
6088} 6096}
6089 6097
6090EOLIAN static void 6098EOLIAN static void
6091_evas_textblock_replace_char_set(Eo *eo_obj, Evas_Textblock_Data *o, const char *ch) 6099_evas_textblock_replace_char_set(Eo *eo_obj, Evas_Textblock_Data *o, const char *ch)
6092{ 6100{
6101 Evas_Object_Protected_Data *obj = eo_data_scope_get(eo_obj, EVAS_OBJECT_CLASS);
6102 evas_object_async_block(obj);
6093 if (o->repch) eina_stringshare_del(o->repch); 6103 if (o->repch) eina_stringshare_del(o->repch);
6094 if (ch) o->repch = eina_stringshare_add(ch); 6104 if (ch) o->repch = eina_stringshare_add(ch);
6095 else o->repch = NULL; 6105 else o->repch = NULL;
@@ -6100,6 +6110,8 @@ _evas_textblock_replace_char_set(Eo *eo_obj, Evas_Textblock_Data *o, const char
6100EOLIAN static void 6110EOLIAN static void
6101_evas_textblock_legacy_newline_set(Eo *eo_obj EINA_UNUSED, Evas_Textblock_Data *o, Eina_Bool mode) 6111_evas_textblock_legacy_newline_set(Eo *eo_obj EINA_UNUSED, Evas_Textblock_Data *o, Eina_Bool mode)
6102{ 6112{
6113 Evas_Object_Protected_Data *obj = eo_data_scope_get(eo_obj, EVAS_OBJECT_CLASS);
6114 evas_object_async_block(obj);
6103 if (o->legacy_newline == mode) 6115 if (o->legacy_newline == mode)
6104 return; 6116 return;
6105 6117
@@ -6117,6 +6129,8 @@ _evas_textblock_legacy_newline_get(Eo *eo_obj EINA_UNUSED, Evas_Textblock_Data *
6117EOLIAN static void 6129EOLIAN static void
6118_evas_textblock_valign_set(Eo *eo_obj, Evas_Textblock_Data *o, double align) 6130_evas_textblock_valign_set(Eo *eo_obj, Evas_Textblock_Data *o, double align)
6119{ 6131{
6132 Evas_Object_Protected_Data *obj = eo_data_scope_get(eo_obj, EVAS_OBJECT_CLASS);
6133 evas_object_async_block(obj);
6120 if (align < 0.0) align = 0.0; 6134 if (align < 0.0) align = 0.0;
6121 else if (align > 1.0) align = 1.0; 6135 else if (align > 1.0) align = 1.0;
6122 if (o->valign == align) return; 6136 if (o->valign == align) return;
@@ -6133,6 +6147,8 @@ _evas_textblock_valign_get(Eo *eo_obj EINA_UNUSED, Evas_Textblock_Data *o)
6133EOLIAN static void 6147EOLIAN static void
6134_evas_textblock_bidi_delimiters_set(Eo *eo_obj EINA_UNUSED, Evas_Textblock_Data *o, const char *delim) 6148_evas_textblock_bidi_delimiters_set(Eo *eo_obj EINA_UNUSED, Evas_Textblock_Data *o, const char *delim)
6135{ 6149{
6150 Evas_Object_Protected_Data *obj = eo_data_scope_get(eo_obj, EVAS_OBJECT_CLASS);
6151 evas_object_async_block(obj);
6136 eina_stringshare_replace(&o->bidi_delimiters, delim); 6152 eina_stringshare_replace(&o->bidi_delimiters, delim);
6137} 6153}
6138 6154
@@ -6350,6 +6366,8 @@ _prepend_escaped_char(Evas_Textblock_Cursor *cur, const char *s,
6350EOLIAN static void 6366EOLIAN static void
6351_evas_textblock_text_markup_set(Eo *eo_obj EINA_UNUSED, Evas_Textblock_Data *o, const char *text) 6367_evas_textblock_text_markup_set(Eo *eo_obj EINA_UNUSED, Evas_Textblock_Data *o, const char *text)
6352{ 6368{
6369 Evas_Object_Protected_Data *obj = eo_data_scope_get(eo_obj, EVAS_OBJECT_CLASS);
6370 evas_object_async_block(obj);
6353 if ((text != o->markup_text) && (o->markup_text)) 6371 if ((text != o->markup_text) && (o->markup_text))
6354 { 6372 {
6355 free(o->markup_text); 6373 free(o->markup_text);
@@ -6391,6 +6409,8 @@ evas_object_textblock_text_markup_prepend(Evas_Textblock_Cursor *cur, const char
6391{ 6409{
6392 if (!cur) return; 6410 if (!cur) return;
6393 Evas_Object *eo_obj = cur->obj; 6411 Evas_Object *eo_obj = cur->obj;
6412 Evas_Object_Protected_Data *obj = eo_data_scope_get(eo_obj, EVAS_OBJECT_CLASS);
6413 evas_object_async_block(obj);
6394 TB_HEAD(); 6414 TB_HEAD();
6395 if (text) 6415 if (text)
6396 { 6416 {
@@ -6595,6 +6615,8 @@ _evas_textblock_text_markup_get(Eo *eo_obj EINA_UNUSED, Evas_Textblock_Data *o)
6595 Evas_Object_Textblock_Node_Text *n; 6615 Evas_Object_Textblock_Node_Text *n;
6596 Eina_Strbuf *txt = NULL; 6616 Eina_Strbuf *txt = NULL;
6597 6617
6618 Evas_Object_Protected_Data *obj = eo_data_scope_get(eo_obj, EVAS_OBJECT_CLASS);
6619 evas_object_async_block(obj);
6598 const char *markup; 6620 const char *markup;
6599 if (o->markup_text) 6621 if (o->markup_text)
6600 { 6622 {
@@ -7112,14 +7134,15 @@ EOLIAN static Evas_Textblock_Cursor*
7112_evas_textblock_cursor_new(Eo *eo_obj, Evas_Textblock_Data *o) 7134_evas_textblock_cursor_new(Eo *eo_obj, Evas_Textblock_Data *o)
7113{ 7135{
7114 Evas_Textblock_Cursor *cur; 7136 Evas_Textblock_Cursor *cur;
7115 { 7137 Evas_Object_Protected_Data *obj = eo_data_scope_get(eo_obj, EVAS_OBJECT_CLASS);
7116 cur = calloc(1, sizeof(Evas_Textblock_Cursor)); 7138 evas_object_async_block(obj);
7117 (cur)->obj = (Evas_Object *) eo_obj;
7118 (cur)->node = o->text_nodes;
7119 (cur)->pos = 0;
7120 o->cursors = eina_list_append(o->cursors, cur);
7121 }
7122 7139
7140 cur = calloc(1, sizeof(Evas_Textblock_Cursor));
7141 if (!cur) return NULL;
7142 cur->obj = (Evas_Object *) eo_obj;
7143 cur->node = o->text_nodes;
7144 cur->pos = 0;
7145 o->cursors = eina_list_append(o->cursors, cur);
7123 return cur; 7146 return cur;
7124} 7147}
7125 7148
@@ -7127,6 +7150,8 @@ EAPI void
7127evas_textblock_cursor_free(Evas_Textblock_Cursor *cur) 7150evas_textblock_cursor_free(Evas_Textblock_Cursor *cur)
7128{ 7151{
7129 if (!cur) return; 7152 if (!cur) return;
7153 Evas_Object_Protected_Data *obj = eo_data_scope_get(cur->obj, EVAS_OBJECT_CLASS);
7154 evas_object_async_block(obj);
7130 Evas_Textblock_Data *o = eo_data_scope_get(cur->obj, MY_CLASS); 7155 Evas_Textblock_Data *o = eo_data_scope_get(cur->obj, MY_CLASS);
7131 if (cur == o->cursor) return; 7156 if (cur == o->cursor) return;
7132 o->cursors = eina_list_remove(o->cursors, cur); 7157 o->cursors = eina_list_remove(o->cursors, cur);
@@ -7136,14 +7161,18 @@ evas_textblock_cursor_free(Evas_Textblock_Cursor *cur)
7136EAPI Eina_Bool 7161EAPI Eina_Bool
7137evas_textblock_cursor_is_format(const Evas_Textblock_Cursor *cur) 7162evas_textblock_cursor_is_format(const Evas_Textblock_Cursor *cur)
7138{ 7163{
7164 Evas_Object_Protected_Data *obj = eo_data_scope_get(cur->obj, EVAS_OBJECT_CLASS);
7165 evas_object_async_block(obj);
7139 if (!cur || !cur->node) return EINA_FALSE; 7166 if (!cur || !cur->node) return EINA_FALSE;
7140 return (_evas_textblock_cursor_node_format_at_pos_get(cur)) ? 7167 return (_evas_textblock_cursor_node_format_at_pos_get(cur)) ?
7141 EINA_TRUE : EINA_FALSE; 7168 EINA_TRUE : EINA_FALSE;
7142} 7169}
7143 7170
7144EOLIAN static const Eina_List * 7171EOLIAN static const Eina_List *
7145_evas_textblock_node_format_list_get(Eo *eo_obj EINA_UNUSED, Evas_Textblock_Data *o, const char *anchor) 7172_evas_textblock_node_format_list_get(Eo *eo_obj, Evas_Textblock_Data *o, const char *anchor)
7146{ 7173{
7174 Evas_Object_Protected_Data *obj = eo_data_scope_get(eo_obj, EVAS_OBJECT_CLASS);
7175 evas_object_async_block(obj);
7147 if (!strcmp(anchor, "a")) 7176 if (!strcmp(anchor, "a"))
7148 return o->anchors_a; 7177 return o->anchors_a;
7149 else if (!strcmp(anchor, "item")) 7178 else if (!strcmp(anchor, "item"))
@@ -7152,14 +7181,18 @@ _evas_textblock_node_format_list_get(Eo *eo_obj EINA_UNUSED, Evas_Textblock_Data
7152} 7181}
7153 7182
7154EOLIAN static const Evas_Object_Textblock_Node_Format* 7183EOLIAN static const Evas_Object_Textblock_Node_Format*
7155_evas_textblock_node_format_first_get(Eo *eo_obj EINA_UNUSED, Evas_Textblock_Data *o) 7184_evas_textblock_node_format_first_get(Eo *eo_obj, Evas_Textblock_Data *o)
7156{ 7185{
7186 Evas_Object_Protected_Data *obj = eo_data_scope_get(eo_obj, EVAS_OBJECT_CLASS);
7187 evas_object_async_block(obj);
7157 return o->format_nodes; 7188 return o->format_nodes;
7158} 7189}
7159 7190
7160EOLIAN static const Evas_Object_Textblock_Node_Format* 7191EOLIAN static const Evas_Object_Textblock_Node_Format*
7161_evas_textblock_node_format_last_get(Eo *eo_obj EINA_UNUSED, Evas_Textblock_Data *o) 7192_evas_textblock_node_format_last_get(Eo *eo_obj, Evas_Textblock_Data *o)
7162{ 7193{
7194 Evas_Object_Protected_Data *obj = eo_data_scope_get(eo_obj, EVAS_OBJECT_CLASS);
7195 evas_object_async_block(obj);
7163 return o->format_nodes ? _NODE_FORMAT(EINA_INLIST_GET(o->format_nodes)->last) : NULL; 7196 return o->format_nodes ? _NODE_FORMAT(EINA_INLIST_GET(o->format_nodes)->last) : NULL;
7164} 7197}
7165 7198
@@ -7188,6 +7221,8 @@ _evas_textblock_node_format_remove_pair(Eo *eo_obj, Evas_Textblock_Data *o, Evas
7188 7221
7189 fmt = n; 7222 fmt = n;
7190 7223
7224 Evas_Object_Protected_Data *obj = eo_data_scope_get(eo_obj, EVAS_OBJECT_CLASS);
7225 evas_object_async_block(obj);
7191 do 7226 do
7192 { 7227 {
7193 const char *fstr = fmt->orig_format; 7228 const char *fstr = fmt->orig_format;
@@ -7287,6 +7322,8 @@ EAPI void
7287evas_textblock_cursor_paragraph_first(Evas_Textblock_Cursor *cur) 7322evas_textblock_cursor_paragraph_first(Evas_Textblock_Cursor *cur)
7288{ 7323{
7289 if (!cur) return; 7324 if (!cur) return;
7325 Evas_Object_Protected_Data *obj = eo_data_scope_get(cur->obj, EVAS_OBJECT_CLASS);
7326 evas_object_async_block(obj);
7290 Evas_Textblock_Data *o = eo_data_scope_get(cur->obj, MY_CLASS); 7327 Evas_Textblock_Data *o = eo_data_scope_get(cur->obj, MY_CLASS);
7291 cur->node = o->text_nodes; 7328 cur->node = o->text_nodes;
7292 cur->pos = 0; 7329 cur->pos = 0;
@@ -7299,6 +7336,8 @@ evas_textblock_cursor_paragraph_last(Evas_Textblock_Cursor *cur)
7299 Evas_Object_Textblock_Node_Text *node; 7336 Evas_Object_Textblock_Node_Text *node;
7300 7337
7301 if (!cur) return; 7338 if (!cur) return;
7339 Evas_Object_Protected_Data *obj = eo_data_scope_get(cur->obj, EVAS_OBJECT_CLASS);
7340 evas_object_async_block(obj);
7302 Evas_Textblock_Data *o = eo_data_scope_get(cur->obj, MY_CLASS); 7341 Evas_Textblock_Data *o = eo_data_scope_get(cur->obj, MY_CLASS);
7303 node = o->text_nodes; 7342 node = o->text_nodes;
7304 if (node) 7343 if (node)
@@ -7321,6 +7360,8 @@ EAPI Eina_Bool
7321evas_textblock_cursor_paragraph_next(Evas_Textblock_Cursor *cur) 7360evas_textblock_cursor_paragraph_next(Evas_Textblock_Cursor *cur)
7322{ 7361{
7323 if (!cur) return EINA_FALSE; 7362 if (!cur) return EINA_FALSE;
7363 Evas_Object_Protected_Data *obj = eo_data_scope_get(cur->obj, EVAS_OBJECT_CLASS);
7364 evas_object_async_block(obj);
7324 TB_NULL_CHECK(cur->node, EINA_FALSE); 7365 TB_NULL_CHECK(cur->node, EINA_FALSE);
7325 /* If there is a current text node, return the next text node (if exists) 7366 /* If there is a current text node, return the next text node (if exists)
7326 * otherwise, just return False. */ 7367 * otherwise, just return False. */
@@ -7344,6 +7385,8 @@ evas_textblock_cursor_paragraph_prev(Evas_Textblock_Cursor *cur)
7344{ 7385{
7345 Evas_Object_Textblock_Node_Text *node; 7386 Evas_Object_Textblock_Node_Text *node;
7346 if (!cur) return EINA_FALSE; 7387 if (!cur) return EINA_FALSE;
7388 Evas_Object_Protected_Data *obj = eo_data_scope_get(cur->obj, EVAS_OBJECT_CLASS);
7389 evas_object_async_block(obj);
7347 TB_NULL_CHECK(cur->node, EINA_FALSE); 7390 TB_NULL_CHECK(cur->node, EINA_FALSE);
7348 /* If the current node is a text node, just get the prev if any, 7391 /* If the current node is a text node, just get the prev if any,
7349 * if it's a format, get the current text node out of the format and return 7392 * if it's a format, get the current text node out of the format and return
@@ -7377,6 +7420,8 @@ evas_textblock_cursor_format_next(Evas_Textblock_Cursor *cur)
7377 Evas_Object_Textblock_Node_Format *node; 7420 Evas_Object_Textblock_Node_Format *node;
7378 7421
7379 if (!cur) return EINA_FALSE; 7422 if (!cur) return EINA_FALSE;
7423 Evas_Object_Protected_Data *obj = eo_data_scope_get(cur->obj, EVAS_OBJECT_CLASS);
7424 evas_object_async_block(obj);
7380 TB_NULL_CHECK(cur->node, EINA_FALSE); 7425 TB_NULL_CHECK(cur->node, EINA_FALSE);
7381 /* If the current node is a format node, just get the next if any, 7426 /* If the current node is a format node, just get the next if any,
7382 * if it's a text, get the current format node out of the text and return 7427 * if it's a text, get the current format node out of the text and return
@@ -7413,6 +7458,8 @@ evas_textblock_cursor_format_prev(Evas_Textblock_Cursor *cur)
7413{ 7458{
7414 const Evas_Object_Textblock_Node_Format *node; 7459 const Evas_Object_Textblock_Node_Format *node;
7415 if (!cur) return EINA_FALSE; 7460 if (!cur) return EINA_FALSE;
7461 Evas_Object_Protected_Data *obj = eo_data_scope_get(cur->obj, EVAS_OBJECT_CLASS);
7462 evas_object_async_block(obj);
7416 TB_NULL_CHECK(cur->node, EINA_FALSE); 7463 TB_NULL_CHECK(cur->node, EINA_FALSE);
7417 node = evas_textblock_cursor_format_get(cur); 7464 node = evas_textblock_cursor_format_get(cur);
7418 if (!node) 7465 if (!node)
@@ -7456,6 +7503,8 @@ evas_textblock_cursor_word_start(Evas_Textblock_Cursor *cur)
7456 char *breaks; 7503 char *breaks;
7457 7504
7458 if (!cur) return EINA_FALSE; 7505 if (!cur) return EINA_FALSE;
7506 Evas_Object_Protected_Data *obj = eo_data_scope_get(cur->obj, EVAS_OBJECT_CLASS);
7507 evas_object_async_block(obj);
7459 TB_NULL_CHECK(cur->node, EINA_FALSE); 7508 TB_NULL_CHECK(cur->node, EINA_FALSE);
7460 7509
7461 size_t len = eina_ustrbuf_length_get(cur->node->unicode); 7510 size_t len = eina_ustrbuf_length_get(cur->node->unicode);
@@ -7514,6 +7563,8 @@ evas_textblock_cursor_word_end(Evas_Textblock_Cursor *cur)
7514 char *breaks; 7563 char *breaks;
7515 7564
7516 if (!cur) return EINA_FALSE; 7565 if (!cur) return EINA_FALSE;
7566 Evas_Object_Protected_Data *obj = eo_data_scope_get(cur->obj, EVAS_OBJECT_CLASS);
7567 evas_object_async_block(obj);
7517 TB_NULL_CHECK(cur->node, EINA_FALSE); 7568 TB_NULL_CHECK(cur->node, EINA_FALSE);
7518 7569
7519 size_t len = eina_ustrbuf_length_get(cur->node->unicode); 7570 size_t len = eina_ustrbuf_length_get(cur->node->unicode);
@@ -7565,6 +7616,8 @@ evas_textblock_cursor_char_next(Evas_Textblock_Cursor *cur)
7565 const Eina_Unicode *text; 7616 const Eina_Unicode *text;
7566 7617
7567 if (!cur) return EINA_FALSE; 7618 if (!cur) return EINA_FALSE;
7619 Evas_Object_Protected_Data *obj = eo_data_scope_get(cur->obj, EVAS_OBJECT_CLASS);
7620 evas_object_async_block(obj);
7568 TB_NULL_CHECK(cur->node, EINA_FALSE); 7621 TB_NULL_CHECK(cur->node, EINA_FALSE);
7569 7622
7570 ind = cur->pos; 7623 ind = cur->pos;
@@ -7600,6 +7653,8 @@ EAPI Eina_Bool
7600evas_textblock_cursor_char_prev(Evas_Textblock_Cursor *cur) 7653evas_textblock_cursor_char_prev(Evas_Textblock_Cursor *cur)
7601{ 7654{
7602 if (!cur) return EINA_FALSE; 7655 if (!cur) return EINA_FALSE;
7656 Evas_Object_Protected_Data *obj = eo_data_scope_get(cur->obj, EVAS_OBJECT_CLASS);
7657 evas_object_async_block(obj);
7603 TB_NULL_CHECK(cur->node, EINA_FALSE); 7658 TB_NULL_CHECK(cur->node, EINA_FALSE);
7604 7659
7605 if (cur->pos != 0) 7660 if (cur->pos != 0)
@@ -7614,6 +7669,8 @@ EAPI void
7614evas_textblock_cursor_paragraph_char_first(Evas_Textblock_Cursor *cur) 7669evas_textblock_cursor_paragraph_char_first(Evas_Textblock_Cursor *cur)
7615{ 7670{
7616 if (!cur) return; 7671 if (!cur) return;
7672 Evas_Object_Protected_Data *obj = eo_data_scope_get(cur->obj, EVAS_OBJECT_CLASS);
7673 evas_object_async_block(obj);
7617 cur->pos = 0; 7674 cur->pos = 0;
7618 7675
7619} 7676}
@@ -7624,6 +7681,8 @@ evas_textblock_cursor_paragraph_char_last(Evas_Textblock_Cursor *cur)
7624 int ind; 7681 int ind;
7625 7682
7626 if (!cur) return; 7683 if (!cur) return;
7684 Evas_Object_Protected_Data *obj = eo_data_scope_get(cur->obj, EVAS_OBJECT_CLASS);
7685 evas_object_async_block(obj);
7627 TB_NULL_CHECK(cur->node); 7686 TB_NULL_CHECK(cur->node);
7628 ind = eina_ustrbuf_length_get(cur->node->unicode); 7687 ind = eina_ustrbuf_length_get(cur->node->unicode);
7629 /* If it's not the last paragraph, go back one, because we want to point 7688 /* If it's not the last paragraph, go back one, because we want to point
@@ -7645,6 +7704,8 @@ evas_textblock_cursor_line_char_first(Evas_Textblock_Cursor *cur)
7645 Evas_Object_Textblock_Item *it = NULL; 7704 Evas_Object_Textblock_Item *it = NULL;
7646 7705
7647 if (!cur) return; 7706 if (!cur) return;
7707 Evas_Object_Protected_Data *obj = eo_data_scope_get(cur->obj, EVAS_OBJECT_CLASS);
7708 evas_object_async_block(obj);
7648 TB_NULL_CHECK(cur->node); 7709 TB_NULL_CHECK(cur->node);
7649 Evas_Textblock_Data *o = eo_data_scope_get(cur->obj, MY_CLASS); 7710 Evas_Textblock_Data *o = eo_data_scope_get(cur->obj, MY_CLASS);
7650 7711
@@ -7679,6 +7740,8 @@ evas_textblock_cursor_line_char_last(Evas_Textblock_Cursor *cur)
7679 Evas_Object_Textblock_Item *it = NULL; 7740 Evas_Object_Textblock_Item *it = NULL;
7680 7741
7681 if (!cur) return; 7742 if (!cur) return;
7743 Evas_Object_Protected_Data *obj = eo_data_scope_get(cur->obj, EVAS_OBJECT_CLASS);
7744 evas_object_async_block(obj);
7682 TB_NULL_CHECK(cur->node); 7745 TB_NULL_CHECK(cur->node);
7683 Evas_Textblock_Data *o = eo_data_scope_get(cur->obj, MY_CLASS); 7746 Evas_Textblock_Data *o = eo_data_scope_get(cur->obj, MY_CLASS);
7684 7747
@@ -8150,6 +8213,8 @@ evas_textblock_cursor_pos_get(const Evas_Textblock_Cursor *cur)
8150 size_t npos = 0; 8213 size_t npos = 0;
8151 8214
8152 if (!cur) return -1; 8215 if (!cur) return -1;
8216 Evas_Object_Protected_Data *obj = eo_data_scope_get(cur->obj, EVAS_OBJECT_CLASS);
8217 evas_object_async_block(obj);
8153 TB_NULL_CHECK(cur->node, 0); 8218 TB_NULL_CHECK(cur->node, 0);
8154 Evas_Textblock_Data *o = eo_data_scope_get(cur->obj, MY_CLASS); 8219 Evas_Textblock_Data *o = eo_data_scope_get(cur->obj, MY_CLASS);
8155 n = o->text_nodes; 8220 n = o->text_nodes;
@@ -8168,6 +8233,8 @@ evas_textblock_cursor_pos_set(Evas_Textblock_Cursor *cur, int _pos)
8168 size_t pos; 8233 size_t pos;
8169 8234
8170 if (!cur) return; 8235 if (!cur) return;
8236 Evas_Object_Protected_Data *obj = eo_data_scope_get(cur->obj, EVAS_OBJECT_CLASS);
8237 evas_object_async_block(obj);
8171 Evas_Textblock_Data *o = eo_data_scope_get(cur->obj, MY_CLASS); 8238 Evas_Textblock_Data *o = eo_data_scope_get(cur->obj, MY_CLASS);
8172 8239
8173 if (_pos < 0) 8240 if (_pos < 0)
@@ -8213,6 +8280,8 @@ evas_textblock_cursor_line_set(Evas_Textblock_Cursor *cur, int line)
8213 Evas_Object_Textblock_Item *it; 8280 Evas_Object_Textblock_Item *it;
8214 8281
8215 if (!cur) return EINA_FALSE; 8282 if (!cur) return EINA_FALSE;
8283 Evas_Object_Protected_Data *obj = eo_data_scope_get(cur->obj, EVAS_OBJECT_CLASS);
8284 evas_object_async_block(obj);
8216 8285
8217 Evas_Textblock_Data *o = eo_data_scope_get(cur->obj, MY_CLASS); 8286 Evas_Textblock_Data *o = eo_data_scope_get(cur->obj, MY_CLASS);
8218 8287
@@ -8242,6 +8311,8 @@ evas_textblock_cursor_compare(const Evas_Textblock_Cursor *cur1, const Evas_Text
8242 8311
8243 if (!cur1) return 0; 8312 if (!cur1) return 0;
8244 if (!cur2) return 0; 8313 if (!cur2) return 0;
8314 Evas_Object_Protected_Data *obj = eo_data_scope_get(cur1->obj, EVAS_OBJECT_CLASS);
8315 evas_object_async_block(obj);
8245 if (cur1->obj != cur2->obj) return 0; 8316 if (cur1->obj != cur2->obj) return 0;
8246 if ((!cur1->node) || (!cur2->node)) return 0; 8317 if ((!cur1->node) || (!cur2->node)) return 0;
8247 if (cur1->node == cur2->node) 8318 if (cur1->node == cur2->node)
@@ -8269,6 +8340,8 @@ evas_textblock_cursor_copy(const Evas_Textblock_Cursor *cur, Evas_Textblock_Curs
8269 if (!cur) return; 8340 if (!cur) return;
8270 if (!cur_dest) return; 8341 if (!cur_dest) return;
8271 if (cur->obj != cur_dest->obj) return; 8342 if (cur->obj != cur_dest->obj) return;
8343 Evas_Object_Protected_Data *obj = eo_data_scope_get(cur->obj, EVAS_OBJECT_CLASS);
8344 evas_object_async_block(obj);
8272 cur_dest->pos = cur->pos; 8345 cur_dest->pos = cur->pos;
8273 cur_dest->node = cur->node; 8346 cur_dest->node = cur->node;
8274 8347
@@ -8521,6 +8594,8 @@ evas_textblock_cursor_text_append(Evas_Textblock_Cursor *cur, const char *_text)
8521 int len = 0; 8594 int len = 0;
8522 8595
8523 if (!cur) return 0; 8596 if (!cur) return 0;
8597 Evas_Object_Protected_Data *obj = eo_data_scope_get(cur->obj, EVAS_OBJECT_CLASS);
8598 evas_object_async_block(obj);
8524 text = eina_unicode_utf8_to_unicode(_text, &len); 8599 text = eina_unicode_utf8_to_unicode(_text, &len);
8525 Evas_Textblock_Data *o = eo_data_scope_get(cur->obj, MY_CLASS); 8600 Evas_Textblock_Data *o = eo_data_scope_get(cur->obj, MY_CLASS);
8526 8601
@@ -8589,6 +8664,9 @@ evas_textblock_cursor_text_prepend(Evas_Textblock_Cursor *cur, const char *_text
8589{ 8664{
8590 int len; 8665 int len;
8591 /*append is essentially prepend without advancing */ 8666 /*append is essentially prepend without advancing */
8667 if (!cur) return 0;
8668 Evas_Object_Protected_Data *obj = eo_data_scope_get(cur->obj, EVAS_OBJECT_CLASS);
8669 evas_object_async_block(obj);
8592 len = evas_textblock_cursor_text_append(cur, _text); 8670 len = evas_textblock_cursor_text_append(cur, _text);
8593 if (len == 0) return 0; 8671 if (len == 0) return 0;
8594 cur->pos += len; /*Advance */ 8672 cur->pos += len; /*Advance */
@@ -8768,6 +8846,8 @@ evas_textblock_cursor_format_append(Evas_Textblock_Cursor *cur, const char *form
8768 Eina_Bool is_visible; 8846 Eina_Bool is_visible;
8769 8847
8770 if (!cur) return EINA_FALSE; 8848 if (!cur) return EINA_FALSE;
8849 Evas_Object_Protected_Data *obj = eo_data_scope_get(cur->obj, EVAS_OBJECT_CLASS);
8850 evas_object_async_block(obj);
8771 if ((!format) || (format[0] == 0)) return EINA_FALSE; 8851 if ((!format) || (format[0] == 0)) return EINA_FALSE;
8772 Evas_Textblock_Data *o = eo_data_scope_get(cur->obj, MY_CLASS); 8852 Evas_Textblock_Data *o = eo_data_scope_get(cur->obj, MY_CLASS);
8773 /* We should always have at least one text node */ 8853 /* We should always have at least one text node */
@@ -8898,6 +8978,10 @@ EAPI Eina_Bool
8898evas_textblock_cursor_format_prepend(Evas_Textblock_Cursor *cur, const char *format) 8978evas_textblock_cursor_format_prepend(Evas_Textblock_Cursor *cur, const char *format)
8899{ 8979{
8900 Eina_Bool is_visible; 8980 Eina_Bool is_visible;
8981
8982 if (!cur) return EINA_FALSE;
8983 Evas_Object_Protected_Data *obj = eo_data_scope_get(cur->obj, EVAS_OBJECT_CLASS);
8984 evas_object_async_block(obj);
8901 /* append is essentially prepend without advancing */ 8985 /* append is essentially prepend without advancing */
8902 is_visible = evas_textblock_cursor_format_append(cur, format); 8986 is_visible = evas_textblock_cursor_format_append(cur, format);
8903 if (is_visible) 8987 if (is_visible)
@@ -8917,6 +9001,8 @@ evas_textblock_cursor_char_delete(Evas_Textblock_Cursor *cur)
8917 int chr, ind, ppos; 9001 int chr, ind, ppos;
8918 9002
8919 if (!cur || !cur->node) return; 9003 if (!cur || !cur->node) return;
9004 Evas_Object_Protected_Data *obj = eo_data_scope_get(cur->obj, EVAS_OBJECT_CLASS);
9005 evas_object_async_block(obj);
8920 Evas_Textblock_Data *o = eo_data_scope_get(cur->obj, MY_CLASS); 9006 Evas_Textblock_Data *o = eo_data_scope_get(cur->obj, MY_CLASS);
8921 n = cur->node; 9007 n = cur->node;
8922 9008
@@ -8994,6 +9080,8 @@ evas_textblock_cursor_range_delete(Evas_Textblock_Cursor *cur1, Evas_Textblock_C
8994 if (!cur1 || !cur1->node) return; 9080 if (!cur1 || !cur1->node) return;
8995 if (!cur2 || !cur2->node) return; 9081 if (!cur2 || !cur2->node) return;
8996 if (cur1->obj != cur2->obj) return; 9082 if (cur1->obj != cur2->obj) return;
9083 Evas_Object_Protected_Data *obj = eo_data_scope_get(cur1->obj, EVAS_OBJECT_CLASS);
9084 evas_object_async_block(obj);
8997 Evas_Textblock_Data *o = eo_data_scope_get(cur1->obj, MY_CLASS); 9085 Evas_Textblock_Data *o = eo_data_scope_get(cur1->obj, MY_CLASS);
8998 if (evas_textblock_cursor_compare(cur1, cur2) > 0) 9086 if (evas_textblock_cursor_compare(cur1, cur2) > 0)
8999 { 9087 {
@@ -9092,6 +9180,8 @@ EAPI char *
9092evas_textblock_cursor_content_get(const Evas_Textblock_Cursor *cur) 9180evas_textblock_cursor_content_get(const Evas_Textblock_Cursor *cur)
9093{ 9181{
9094 if (!cur || !cur->node) return NULL; 9182 if (!cur || !cur->node) return NULL;
9183 Evas_Object_Protected_Data *obj = eo_data_scope_get(cur->obj, EVAS_OBJECT_CLASS);
9184 evas_object_async_block(obj);
9095 if (evas_textblock_cursor_format_is_visible_get(cur)) 9185 if (evas_textblock_cursor_format_is_visible_get(cur))
9096 { 9186 {
9097 Eina_Strbuf *buf; 9187 Eina_Strbuf *buf;
@@ -9304,6 +9394,8 @@ evas_textblock_cursor_range_formats_get(const Evas_Textblock_Cursor *cur1, const
9304 if (!cur2 || !cur2->node) return NULL; 9394 if (!cur2 || !cur2->node) return NULL;
9305 if (cur1->obj != cur2->obj) return NULL; 9395 if (cur1->obj != cur2->obj) return NULL;
9306 9396
9397 Evas_Object_Protected_Data *obj = eo_data_scope_get(cur1->obj, EVAS_OBJECT_CLASS);
9398 evas_object_async_block(obj);
9307 eo_obj = cur1->obj; 9399 eo_obj = cur1->obj;
9308 TB_HEAD_RETURN(NULL); 9400 TB_HEAD_RETURN(NULL);
9309 9401
@@ -9365,6 +9457,8 @@ evas_textblock_cursor_range_formats_get(const Evas_Textblock_Cursor *cur1, const
9365EAPI char * 9457EAPI char *
9366evas_textblock_cursor_range_text_get(const Evas_Textblock_Cursor *cur1, const Evas_Textblock_Cursor *cur2, Evas_Textblock_Text_Type format) 9458evas_textblock_cursor_range_text_get(const Evas_Textblock_Cursor *cur1, const Evas_Textblock_Cursor *cur2, Evas_Textblock_Text_Type format)
9367{ 9459{
9460 Evas_Object_Protected_Data *obj = eo_data_scope_get(cur1->obj, EVAS_OBJECT_CLASS);
9461 evas_object_async_block(obj);
9368 if (format == EVAS_TEXTBLOCK_TEXT_MARKUP) 9462 if (format == EVAS_TEXTBLOCK_TEXT_MARKUP)
9369 return _evas_textblock_cursor_range_text_markup_get(cur1, cur2); 9463 return _evas_textblock_cursor_range_text_markup_get(cur1, cur2);
9370 else if (format == EVAS_TEXTBLOCK_TEXT_PLAIN) 9464 else if (format == EVAS_TEXTBLOCK_TEXT_PLAIN)
@@ -9378,6 +9472,8 @@ evas_textblock_cursor_paragraph_text_get(const Evas_Textblock_Cursor *cur)
9378{ 9472{
9379 Evas_Textblock_Cursor cur1, cur2; 9473 Evas_Textblock_Cursor cur1, cur2;
9380 if (!cur) return NULL; 9474 if (!cur) return NULL;
9475 Evas_Object_Protected_Data *obj = eo_data_scope_get(cur->obj, EVAS_OBJECT_CLASS);
9476 evas_object_async_block(obj);
9381 TB_NULL_CHECK(cur->node, NULL); 9477 TB_NULL_CHECK(cur->node, NULL);
9382 if (cur->node->utf8) 9478 if (cur->node->utf8)
9383 { 9479 {
@@ -9398,6 +9494,8 @@ evas_textblock_cursor_paragraph_text_length_get(const Evas_Textblock_Cursor *cur
9398{ 9494{
9399 int len; 9495 int len;
9400 if (!cur) return -1; 9496 if (!cur) return -1;
9497 Evas_Object_Protected_Data *obj = eo_data_scope_get(cur->obj, EVAS_OBJECT_CLASS);
9498 evas_object_async_block(obj);
9401 TB_NULL_CHECK(cur->node, -1); 9499 TB_NULL_CHECK(cur->node, -1);
9402 len = eina_ustrbuf_length_get(cur->node->unicode); 9500 len = eina_ustrbuf_length_get(cur->node->unicode);
9403 9501
@@ -9411,6 +9509,8 @@ EAPI const Evas_Object_Textblock_Node_Format *
9411evas_textblock_cursor_format_get(const Evas_Textblock_Cursor *cur) 9509evas_textblock_cursor_format_get(const Evas_Textblock_Cursor *cur)
9412{ 9510{
9413 if (!cur) return NULL; 9511 if (!cur) return NULL;
9512 Evas_Object_Protected_Data *obj = eo_data_scope_get(cur->obj, EVAS_OBJECT_CLASS);
9513 evas_object_async_block(obj);
9414 TB_NULL_CHECK(cur->node, NULL); 9514 TB_NULL_CHECK(cur->node, NULL);
9415 return _evas_textblock_cursor_node_format_at_pos_get(cur); 9515 return _evas_textblock_cursor_node_format_at_pos_get(cur);
9416} 9516}
@@ -9459,6 +9559,8 @@ EAPI void
9459evas_textblock_cursor_at_format_set(Evas_Textblock_Cursor *cur, const Evas_Object_Textblock_Node_Format *fmt) 9559evas_textblock_cursor_at_format_set(Evas_Textblock_Cursor *cur, const Evas_Object_Textblock_Node_Format *fmt)
9460{ 9560{
9461 if (!fmt || !cur) return; 9561 if (!fmt || !cur) return;
9562 Evas_Object_Protected_Data *obj = eo_data_scope_get(cur->obj, EVAS_OBJECT_CLASS);
9563 evas_object_async_block(obj);
9462 cur->node = fmt->text_node; 9564 cur->node = fmt->text_node;
9463 cur->pos = _evas_textblock_node_format_pos_get(fmt); 9565 cur->pos = _evas_textblock_node_format_pos_get(fmt);
9464} 9566}
@@ -9469,6 +9571,8 @@ evas_textblock_cursor_format_is_visible_get(const Evas_Textblock_Cursor *cur)
9469 const Eina_Unicode *text; 9571 const Eina_Unicode *text;
9470 9572
9471 if (!cur) return EINA_FALSE; 9573 if (!cur) return EINA_FALSE;
9574 Evas_Object_Protected_Data *obj = eo_data_scope_get(cur->obj, EVAS_OBJECT_CLASS);
9575 evas_object_async_block(obj);
9472 TB_NULL_CHECK(cur->node, EINA_FALSE); 9576 TB_NULL_CHECK(cur->node, EINA_FALSE);
9473 if (!evas_textblock_cursor_is_format(cur)) return EINA_FALSE; 9577 if (!evas_textblock_cursor_is_format(cur)) return EINA_FALSE;
9474 text = eina_ustrbuf_string_get(cur->node->unicode); 9578 text = eina_ustrbuf_string_get(cur->node->unicode);
@@ -9499,6 +9603,8 @@ EAPI Eina_Bool
9499evas_textblock_cursor_geometry_bidi_get(const Evas_Textblock_Cursor *cur, Evas_Coord *cx, Evas_Coord *cy, Evas_Coord *cw, Evas_Coord *ch, Evas_Coord *cx2, Evas_Coord *cy2, Evas_Coord *cw2, Evas_Coord *ch2, Evas_Textblock_Cursor_Type ctype) 9603evas_textblock_cursor_geometry_bidi_get(const Evas_Textblock_Cursor *cur, Evas_Coord *cx, Evas_Coord *cy, Evas_Coord *cw, Evas_Coord *ch, Evas_Coord *cx2, Evas_Coord *cy2, Evas_Coord *cw2, Evas_Coord *ch2, Evas_Textblock_Cursor_Type ctype)
9500{ 9604{
9501 if (!cur) return EINA_FALSE; 9605 if (!cur) return EINA_FALSE;
9606 Evas_Object_Protected_Data *obj = eo_data_scope_get(cur->obj, EVAS_OBJECT_CLASS);
9607 evas_object_async_block(obj);
9502 Evas_Textblock_Data *o = eo_data_scope_get(cur->obj, MY_CLASS); 9608 Evas_Textblock_Data *o = eo_data_scope_get(cur->obj, MY_CLASS);
9503 9609
9504 _relayout_if_needed(cur->obj, o); 9610 _relayout_if_needed(cur->obj, o);
@@ -9681,6 +9787,8 @@ evas_textblock_cursor_geometry_get(const Evas_Textblock_Cursor *cur, Evas_Coord
9681{ 9787{
9682 int ret = -1; 9788 int ret = -1;
9683 if (!cur) return -1; 9789 if (!cur) return -1;
9790 Evas_Object_Protected_Data *obj = eo_data_scope_get(cur->obj, EVAS_OBJECT_CLASS);
9791 evas_object_async_block(obj);
9684 Evas_Textblock_Data *o = eo_data_scope_get(cur->obj, MY_CLASS); 9792 Evas_Textblock_Data *o = eo_data_scope_get(cur->obj, MY_CLASS);
9685 9793
9686 _relayout_if_needed(cur->obj, o); 9794 _relayout_if_needed(cur->obj, o);
@@ -9869,6 +9977,7 @@ evas_textblock_cursor_char_geometry_get(const Evas_Textblock_Cursor *cur, Evas_C
9869{ 9977{
9870 if (!cur) return -1; 9978 if (!cur) return -1;
9871 Evas_Object_Protected_Data *obj = eo_data_scope_get(cur->obj, EVAS_OBJECT_CLASS); 9979 Evas_Object_Protected_Data *obj = eo_data_scope_get(cur->obj, EVAS_OBJECT_CLASS);
9980 evas_object_async_block(obj);
9872 return _evas_textblock_cursor_char_pen_geometry_common_get( 9981 return _evas_textblock_cursor_char_pen_geometry_common_get(
9873 ENFN->font_char_coords_get, cur, cx, cy, cw, ch); 9982 ENFN->font_char_coords_get, cur, cx, cy, cw, ch);
9874} 9983}
@@ -9878,6 +9987,7 @@ evas_textblock_cursor_pen_geometry_get(const Evas_Textblock_Cursor *cur, Evas_Co
9878{ 9987{
9879 if (!cur) return -1; 9988 if (!cur) return -1;
9880 Evas_Object_Protected_Data *obj = eo_data_scope_get(cur->obj, EVAS_OBJECT_CLASS); 9989 Evas_Object_Protected_Data *obj = eo_data_scope_get(cur->obj, EVAS_OBJECT_CLASS);
9990 evas_object_async_block(obj);
9881 return _evas_textblock_cursor_char_pen_geometry_common_get( 9991 return _evas_textblock_cursor_char_pen_geometry_common_get(
9882 ENFN->font_pen_coords_get, cur, cx, cy, cw, ch); 9992 ENFN->font_pen_coords_get, cur, cx, cy, cw, ch);
9883} 9993}
@@ -9890,6 +10000,8 @@ evas_textblock_cursor_line_geometry_get(const Evas_Textblock_Cursor *cur, Evas_C
9890 int x, y, w, h; 10000 int x, y, w, h;
9891 10001
9892 if (!cur) return -1; 10002 if (!cur) return -1;
10003 Evas_Object_Protected_Data *obj = eo_data_scope_get(cur->obj, EVAS_OBJECT_CLASS);
10004 evas_object_async_block(obj);
9893 Evas_Textblock_Data *o = eo_data_scope_get(cur->obj, MY_CLASS); 10005 Evas_Textblock_Data *o = eo_data_scope_get(cur->obj, MY_CLASS);
9894 10006
9895 _relayout_if_needed(cur->obj, o); 10007 _relayout_if_needed(cur->obj, o);
@@ -9921,6 +10033,7 @@ evas_textblock_cursor_visible_range_get(Evas_Textblock_Cursor *start, Evas_Textb
9921 Evas_Coord cy, ch; 10033 Evas_Coord cy, ch;
9922 Evas_Object *eo_obj = start->obj; 10034 Evas_Object *eo_obj = start->obj;
9923 Evas_Object_Protected_Data *obj = eo_data_scope_get(eo_obj, EVAS_OBJECT_CLASS); 10035 Evas_Object_Protected_Data *obj = eo_data_scope_get(eo_obj, EVAS_OBJECT_CLASS);
10036 evas_object_async_block(obj);
9924 TB_HEAD_RETURN(EINA_FALSE); 10037 TB_HEAD_RETURN(EINA_FALSE);
9925 eo_e = evas_object_evas_get(eo_obj); 10038 eo_e = evas_object_evas_get(eo_obj);
9926 Evas_Public_Data *e = eo_data_scope_get(eo_e, EVAS_CANVAS_CLASS); 10039 Evas_Public_Data *e = eo_data_scope_get(eo_e, EVAS_CANVAS_CLASS);
@@ -9941,6 +10054,8 @@ evas_textblock_cursor_char_coord_set(Evas_Textblock_Cursor *cur, Evas_Coord x, E
9941 Evas_Object_Textblock_Item *it = NULL; 10054 Evas_Object_Textblock_Item *it = NULL;
9942 10055
9943 if (!cur) return EINA_FALSE; 10056 if (!cur) return EINA_FALSE;
10057 Evas_Object_Protected_Data *obj = eo_data_scope_get(cur->obj, EVAS_OBJECT_CLASS);
10058 evas_object_async_block(obj);
9944 Evas_Textblock_Data *o = eo_data_scope_get(cur->obj, MY_CLASS); 10059 Evas_Textblock_Data *o = eo_data_scope_get(cur->obj, MY_CLASS);
9945 10060
9946 _relayout_if_needed(cur->obj, o); 10061 _relayout_if_needed(cur->obj, o);
@@ -10055,6 +10170,8 @@ evas_textblock_cursor_line_coord_set(Evas_Textblock_Cursor *cur, Evas_Coord y)
10055 Evas_Object_Textblock_Line *ln; 10170 Evas_Object_Textblock_Line *ln;
10056 10171
10057 if (!cur) return -1; 10172 if (!cur) return -1;
10173 Evas_Object_Protected_Data *obj = eo_data_scope_get(cur->obj, EVAS_OBJECT_CLASS);
10174 evas_object_async_block(obj);
10058 Evas_Textblock_Data *o = eo_data_scope_get(cur->obj, MY_CLASS); 10175 Evas_Textblock_Data *o = eo_data_scope_get(cur->obj, MY_CLASS);
10059 10176
10060 _relayout_if_needed(cur->obj, o); 10177 _relayout_if_needed(cur->obj, o);
@@ -10446,6 +10563,8 @@ evas_textblock_cursor_range_simple_geometry_get(const Evas_Textblock_Cursor *cur
10446 if (!cur1 || !cur1->node) return NULL; 10563 if (!cur1 || !cur1->node) return NULL;
10447 if (!cur2 || !cur2->node) return NULL; 10564 if (!cur2 || !cur2->node) return NULL;
10448 if (cur1->obj != cur2->obj) return NULL;