diff options
author | ChunEon Park <hermet@hermet.pe.kr> | 2014-05-12 16:47:54 +0900 |
---|---|---|
committer | ChunEon Park <hermet@hermet.pe.kr> | 2014-05-12 16:47:54 +0900 |
commit | 97c7f36a50d94eeac585cefb1114c19366da1eec (patch) | |
tree | 0a64cb1830b89ff56449cea9f086c4fad9eeefc5 | |
parent | 7ef3276a66099da6f2e7ec684ab699bc2e66f863 (diff) | |
download | efl-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.c | 10 |
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); |