summaryrefslogtreecommitdiff
path: root/src/lib/evas/canvas
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/evas/canvas')
-rw-r--r--src/lib/evas/canvas/evas_object_image.c11
-rw-r--r--src/lib/evas/canvas/evas_object_main.c15
2 files changed, 18 insertions, 8 deletions
diff --git a/src/lib/evas/canvas/evas_object_image.c b/src/lib/evas/canvas/evas_object_image.c
index 6a1b9e98ff..05e5fb8e55 100644
--- a/src/lib/evas/canvas/evas_object_image.c
+++ b/src/lib/evas/canvas/evas_object_image.c
@@ -280,11 +280,16 @@ Eina_Cow *evas_object_image_state_cow = NULL;
280static void 280static void
281_evas_object_image_cleanup(Evas_Object *eo_obj, Evas_Object_Protected_Data *obj, Evas_Image_Data *o) 281_evas_object_image_cleanup(Evas_Object *eo_obj, Evas_Object_Protected_Data *obj, Evas_Image_Data *o)
282{ 282{
283 EINA_COW_IMAGE_STATE_WRITE_BEGIN(o, state_write) 283 /* Eina_Cow doesn't know if the resulting memory has changed, better check
284 before we change it */
285 if (o->cur->opaque_valid)
284 { 286 {
285 state_write->opaque_valid = 0; 287 EINA_COW_IMAGE_STATE_WRITE_BEGIN(o, state_write)
288 {
289 state_write->opaque_valid = 0;
290 }
291 EINA_COW_IMAGE_STATE_WRITE_END(o, state_write);
286 } 292 }
287 EINA_COW_IMAGE_STATE_WRITE_END(o, state_write);
288 293
289 if ((o->preloading) && (o->engine_data)) 294 if ((o->preloading) && (o->engine_data))
290 { 295 {
diff --git a/src/lib/evas/canvas/evas_object_main.c b/src/lib/evas/canvas/evas_object_main.c
index e5317e2598..fded1ceee6 100644
--- a/src/lib/evas/canvas/evas_object_main.c
+++ b/src/lib/evas/canvas/evas_object_main.c
@@ -687,13 +687,18 @@ _evas_object_eo_base_destructor(Eo *eo_obj, Evas_Object_Protected_Data *obj)
687 eo_do(proxy, evas_obj_text_filter_source_set(NULL, eo_obj)); 687 eo_do(proxy, evas_obj_text_filter_source_set(NULL, eo_obj));
688 } 688 }
689 689
690 EINA_COW_WRITE_BEGIN(evas_object_proxy_cow, obj->proxy, 690 /* Eina_Cow has no way to know if we are going to really change something
691 Evas_Object_Proxy_Data, proxy_src) 691 or not. So before calling the cow, let's check if we want to do something */
692 if (obj->proxy->proxy_textures)
692 { 693 {
693 EINA_LIST_FREE(proxy_src->proxy_textures, texture) 694 EINA_COW_WRITE_BEGIN(evas_object_proxy_cow, obj->proxy,
694 eo_do(texture, evas_3d_texture_source_set(NULL)); 695 Evas_Object_Proxy_Data, proxy_src)
696 {
697 EINA_LIST_FREE(proxy_src->proxy_textures, texture)
698 eo_do(texture, evas_3d_texture_source_set(NULL));
699 }
700 EINA_COW_WRITE_END(evas_object_proxy_cow, obj->proxy, proxy_src);
695 } 701 }
696 EINA_COW_WRITE_END(evas_object_proxy_cow, obj->proxy, proxy_src);
697 702
698 if (obj->cur->clipper) evas_object_clip_unset(eo_obj); 703 if (obj->cur->clipper) evas_object_clip_unset(eo_obj);
699 evas_object_map_set(eo_obj, NULL); 704 evas_object_map_set(eo_obj, NULL);