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