diff options
author | Carsten Haitzler (Rasterman) <raster@rasterman.com> | 2015-02-10 20:44:38 +0900 |
---|---|---|
committer | Carsten Haitzler (Rasterman) <raster@rasterman.com> | 2015-02-12 11:06:40 +0900 |
commit | 7c5f92d702e2534b7b664d2b20d060dcac5fa6e6 (patch) | |
tree | 79e7afb25d05574d63275dee05204f155eb38011 /src | |
parent | 9b24d378a39850f20bc84a0a533bb915897c3ef6 (diff) |
evas - render - have lock point to allow for async obj walk + update add
this adds a lock for when walking all the objects to generate render
commands for an async render. this allows even the object tree walk
plus update area caluclation to be moved off into async if every oject
that can change canvas state actually does so correctly. this change
adds all those lock block calls to synchronise with an async object
tree walk.
Diffstat (limited to 'src')
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 c6da2d3aa7..b72c173e46 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, | |||
15 | EOLIAN static void | 15 | EOLIAN 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 f9ca75b17b..48abf0fd20 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, | |||
15 | EOLIAN static void | 15 | EOLIAN 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) | |||
97 | EOLIAN static void | 98 | EOLIAN 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) | |||
106 | EOLIAN static void | 108 | EOLIAN 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) | |||
122 | EOLIAN static void | 125 | EOLIAN 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 | |||
142 | EOLIAN static void | 146 | EOLIAN 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 | |||
162 | EOLIAN static void | 167 | EOLIAN 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 | |||
182 | EOLIAN static void | 188 | EOLIAN 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) | |||
195 | EOLIAN static void | 202 | EOLIAN 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) | |||
209 | EOLIAN static void | 217 | EOLIAN 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 | |||
226 | EOLIAN static void | 235 | EOLIAN 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 8cd325d6a1..ca0b4037cf 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, | |||
15 | EOLIAN static void | 15 | EOLIAN 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 | ||
22 | EOLIAN static void | 23 | EOLIAN 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 | ||
123 | EOLIAN static void | 126 | EOLIAN 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 | |||
135 | EOLIAN static void | 139 | EOLIAN 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 | ||
151 | EOLIAN static void | 156 | EOLIAN 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) | |||
163 | EOLIAN static void | 169 | EOLIAN 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 4430438054..55b1d4795f 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 | ||
184 | EOLIAN static void | 184 | EOLIAN 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) | |||
259 | EOLIAN static void | 260 | EOLIAN 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 | ||
267 | EOLIAN static void | 269 | EOLIAN 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) | |||
283 | EOLIAN static void | 286 | EOLIAN 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 | |||
640 | EOLIAN static void | 651 | EOLIAN 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 | ||
735 | EOLIAN static void | 750 | EOLIAN 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 | |||
742 | EOLIAN static Evas_3D_Vertex_Assembly | 758 | EOLIAN 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 | ||
748 | EOLIAN static void | 765 | EOLIAN 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, | |||
765 | EOLIAN static void | 783 | EOLIAN 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) | |||
778 | EOLIAN static void | 797 | EOLIAN 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) | |||
791 | EOLIAN static void | 811 | EOLIAN 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) | |||
974 | EOLIAN static Eina_Bool | 998 | EOLIAN 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 62e2c1cb01..ead5694e81 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) | |||
457 | EOLIAN static void | 458 | EOLIAN 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) | |||
996 | EOLIAN static const Eina_List * | 1000 | EOLIAN 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 | ||
1002 | EOLIAN static void | 1007 | EOLIAN 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 | |||
1012 | EOLIAN static void | 1018 | EOLIAN 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, | |||
1042 | EOLIAN static void | 1050 | EOLIAN 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, | |||
1134 | EOLIAN static void | 1143 | EOLIAN 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 | |||
1141 | EOLIAN static void | 1151 | EOLIAN 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 | |||
1148 | EOLIAN static void | 1159 | EOLIAN 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) | |||
1418 | EOLIAN static const Eina_List * | 1435 | EOLIAN 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 8116d098c4..ba1ecdc352 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 | ||
24 | EOLIAN static void | 24 | EOLIAN 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 a26b6c8967..edab2922eb 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 | ||
26 | EOLIAN static void | 26 | EOLIAN 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 | ||
39 | EOLIAN static void | 40 | EOLIAN 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) | |||
135 | EOLIAN static void | 139 | EOLIAN 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) | |||
805 | EOLIAN static void | 814 | EOLIAN 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 | |||
818 | EOLIAN static Eina_Bool | 828 | EOLIAN 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 8945fadea8..a324eb67f5 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, | |||
203 | EOLIAN static void | 204 | EOLIAN 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 | |||
311 | EOLIAN static void | 313 | EOLIAN 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 | ||
319 | EOLIAN static void | 322 | EOLIAN 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 | ||
393 | EOLIAN static void | 399 | EOLIAN 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 0e1d43a0bd..833a7e4ccb 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 d540709918..31debb414f 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]) | |||
1326 | EOLIAN void | 1326 | EOLIAN 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 | |||
1452 | EOLIAN void | 1456 | EOLIAN 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 62b1c54c93..e1baf63d7b 100644 --- a/src/lib/evas/canvas/evas_layer.c +++ b/src/lib/evas/canvas/evas_layer.c | |||
@@ -7,10 +7,14 @@ void | |||
7 | evas_object_inject(Evas_Object *eo_obj, Evas_Object_Protected_Data *obj, Evas *e) | 7 | evas_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 00d1f24639..7e281a4efb 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 | ||
189 | EAPI void | 190 | EAPI 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) | |||
352 | EOLIAN static Eina_Bool | 358 | EOLIAN 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 | ||
362 | EOLIAN static void | 372 | EOLIAN 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 453caba615..86ceebeba5 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 * | |||
540 | EOLIAN void | 541 | EOLIAN 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 | |||
631 | EOLIAN Evas_Map * | 633 | EOLIAN 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 cf4309778c..cbeb11620d 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 * | |||
896 | EOLIAN static void | 903 | EOLIAN 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) | |||
915 | static void | 923 | static 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) | |||
944 | EOLIAN static void | 954 | EOLIAN 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) | |||
965 | EOLIAN static void | 975 | EOLIAN 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, | |||
1004 | EOLIAN static void | 1014 | EOLIAN 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) | |||
1309 | EOLIAN static void | 1323 | EOLIAN 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 | ||
1315 | EOLIAN static void | 1331 | EOLIAN 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) | |||
1365 | EOLIAN static void | 1384 | EOLIAN 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) | |||
1457 | EOLIAN static void | 1478 | EOLIAN 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 | |||
1631 | EOLIAN static void | 1655 | EOLIAN 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) | |||
1659 | EOLIAN static void | 1685 | EOLIAN 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) | |||
1685 | EOLIAN static void | 1711 | EOLIAN 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, | |||
1716 | EOLIAN static void | 1742 | EOLIAN 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) | |||
1741 | EOLIAN static void | 1768 | EOLIAN 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, | |||
1776 | EOLIAN static void | 1803 | EOLIAN 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) | |||
2149 | EOLIAN void | 2187 | EOLIAN 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) | |||
4660 | EOLIAN static void | 4702 | EOLIAN 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 4c2d7891b1..8090c611de 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 da97914345..8d286fd23b 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) | |||
1187 | static void | 1198 | static 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 | |||
1841 | EOLIAN static void | 1857 | EOLIAN 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 | |||
1853 | EOLIAN static void | 1870 | EOLIAN 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 cd27199282..4e5ed04836 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 3345776072..4623fc0b45 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 ? |
405 | EOLIAN static Eina_Iterator* | 407 | EOLIAN 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 | ||
426 | EOLIAN static Eina_List* | 430 | EOLIAN 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) | |||
440 | const Eina_Inlist * | 444 | const Eina_Inlist * |
441 | evas_object_smart_members_get_direct(const Evas_Object *eo_obj) | 445 | evas_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 8eadf07f17..004001fb34 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 | ||
382 | EOLIAN static void | 382 | EOLIAN 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) | |||
415 | EOLIAN static void | 417 | EOLIAN 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 | |||
979 | EOLIAN static void | 984 | EOLIAN 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 | ||
1022 | EOLIAN static void | 1028 | EOLIAN 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 | |||
1212 | EOLIAN static void | 1220 | EOLIAN 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) | |||
1239 | EOLIAN static void | 1248 | EOLIAN 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 | |||
1263 | EOLIAN static void | 1273 | EOLIAN 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 | |||
1287 | EOLIAN static void | 1298 | EOLIAN 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 | |||
1311 | EOLIAN static void | 1323 | EOLIAN 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) | |||
2357 | EOLIAN static void | 2370 | EOLIAN 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) | |||
2435 | EOLIAN static void | 2449 | EOLIAN 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 e9db7bb639..52805ed85c 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, | |||
6060 | EOLIAN static void | 6062 | EOLIAN 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) | |||
6072 | EOLIAN static void | 6076 | EOLIAN 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) | |||
6084 | EOLIAN static void | 6090 | EOLIAN 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 | ||
6090 | EOLIAN static void | 6098 | EOLIAN 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 | |||
6100 | EOLIAN static void | 6110 | EOLIAN 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 * | |||
6117 | EOLIAN static void | 6129 | EOLIAN 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) | |||
6133 | EOLIAN static void | 6147 | EOLIAN 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, | |||
6350 | EOLIAN static void | 6366 | EOLIAN 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 | |||
7127 | evas_textblock_cursor_free(Evas_Textblock_Cursor *cur) | 7150 | evas_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) | |||
7136 | EAPI Eina_Bool | 7161 | EAPI Eina_Bool |
7137 | evas_textblock_cursor_is_format(const Evas_Textblock_Cursor *cur) | 7162 | evas_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 | ||
7144 | EOLIAN static const Eina_List * | 7171 | EOLIAN 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 | ||
7154 | EOLIAN static const Evas_Object_Textblock_Node_Format* | 7183 | EOLIAN 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 | ||
7160 | EOLIAN static const Evas_Object_Textblock_Node_Format* | 7191 | EOLIAN 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 | |||
7287 | evas_textblock_cursor_paragraph_first(Evas_Textblock_Cursor *cur) | 7322 | evas_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 | |||
7321 | evas_textblock_cursor_paragraph_next(Evas_Textblock_Cursor *cur) | 7360 | evas_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 | |||
7600 | evas_textblock_cursor_char_prev(Evas_Textblock_Cursor *cur) | 7653 | evas_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 | |||
7614 | evas_textblock_cursor_paragraph_char_first(Evas_Textblock_Cursor *cur) | 7669 | evas_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 | |||
8898 | evas_textblock_cursor_format_prepend(Evas_Textblock_Cursor *cur, const char *format) | 8978 | evas_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 * | |||
9092 | evas_textblock_cursor_content_get(const Evas_Textblock_Cursor *cur) | 9180 | evas_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 | |||
9365 | EAPI char * | 9457 | EAPI char * |
9366 | evas_textblock_cursor_range_text_get(const Evas_Textblock_Cursor *cur1, const Evas_Textblock_Cursor *cur2, Evas_Textblock_Text_Type format) | 9458 | evas_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 * | |||
9411 | evas_textblock_cursor_format_get(const Evas_Textblock_Cursor *cur) | 9509 | evas_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 | |||
9459 | evas_textblock_cursor_at_format_set(Evas_Textblock_Cursor *cur, const Evas_Object_Textblock_Node_Format *fmt) | 9559 | evas_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 | |||
9499 | evas_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) | 9603 | evas_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 |