summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChunEon Park <hermet@hermet.pe.kr>2014-05-12 16:47:54 +0900
committerChunEon Park <hermet@hermet.pe.kr>2014-05-12 16:47:54 +0900
commit97c7f36a50d94eeac585cefb1114c19366da1eec (patch)
tree0a64cb1830b89ff56449cea9f086c4fad9eeefc5
parent7ef3276a66099da6f2e7ec684ab699bc2e66f863 (diff)
downloadefl-97c7f36a50d94eeac585cefb1114c19366da1eec.tar.gz
evas/evas3d: discard proxy textures list properly.
this fixes evas-3d-proxy example to be exited correctly.
-rw-r--r--src/lib/evas/canvas/evas_object_main.c10
1 files changed, 8 insertions, 2 deletions
diff --git a/src/lib/evas/canvas/evas_object_main.c b/src/lib/evas/canvas/evas_object_main.c
index 15a3a4ed83..c4a47f3d7b 100644
--- a/src/lib/evas/canvas/evas_object_main.c
+++ b/src/lib/evas/canvas/evas_object_main.c
@@ -630,6 +630,7 @@ _evas_object_eo_base_destructor(Eo *eo_obj, Evas_Object_Protected_Data *obj)
MAGIC_CHECK_END();
Evas_Object *proxy;
Eina_List *l, *l2;
+ Evas_3D_Texture *texture;
evas_object_hide(eo_obj);
if (obj->focused)
@@ -676,8 +677,13 @@ _evas_object_eo_base_destructor(Eo *eo_obj, Evas_Object_Protected_Data *obj)
eo_do(proxy, evas_obj_text_filter_source_set(NULL, eo_obj));
}
- while (obj->proxy->proxy_textures)
- eo_do(obj->proxy->proxy_textures->data, evas_3d_texture_source_set(NULL));
+ EINA_COW_WRITE_BEGIN(evas_object_proxy_cow, obj->proxy,
+ Evas_Object_Proxy_Data, proxy_src)
+ {
+ EINA_LIST_FREE(proxy_src->proxy_textures, texture)
+ eo_do(texture, evas_3d_texture_source_set(NULL));
+ }
+ EINA_COW_WRITE_END(evas_object_proxy_cow, obj->proxy, proxy_src);
if (obj->cur->clipper) evas_object_clip_unset(eo_obj);
evas_object_map_set(eo_obj, NULL);