diff options
author | ChunEon Park <hermet@hermet.pe.kr> | 2013-11-18 16:10:55 +0900 |
---|---|---|
committer | ChunEon Park <hermet@hermet.pe.kr> | 2013-11-18 16:12:30 +0900 |
commit | 5cefa00d0ad0f542ac53d38cbce4495884b09136 (patch) | |
tree | e68df237ef8862aece138c1871682a8fede7f756 | |
parent | 1500338a8d56d530b0a7e2ba30f55e08b50eaffe (diff) |
evas/render - optimize proxy rendering.
redraw proxy if the source is smart object and it's changed visually.
-rw-r--r-- | src/lib/evas/canvas/evas_render.c | 23 |
1 files changed, 15 insertions, 8 deletions
diff --git a/src/lib/evas/canvas/evas_render.c b/src/lib/evas/canvas/evas_render.c index 7e0b16b6e..4a3a4e1df 100644 --- a/src/lib/evas/canvas/evas_render.c +++ b/src/lib/evas/canvas/evas_render.c @@ -345,15 +345,22 @@ _evas_render_phase1_direct(Evas_Public_Data *e, _evas_render_prev_cur_clip_cache_add(e, obj); if (obj->proxy->proxies) { - EINA_COW_WRITE_BEGIN(evas_object_proxy_cow, obj->proxy, Evas_Object_Proxy_Data, proxy_write) - proxy_write->redraw = EINA_TRUE; - EINA_COW_WRITE_END(evas_object_proxy_cow, obj->proxy, proxy_write); - - EINA_LIST_FOREACH(obj->proxy->proxies, l, eo_proxy) + if (obj->smart.smart && evas_object_smart_changed_get(eo_obj)) { - Evas_Object_Protected_Data *proxy = eo_data_scope_get(eo_proxy, EVAS_OBJ_CLASS); - proxy->func->render_pre(eo_proxy, proxy, proxy->private_data); - _evas_render_prev_cur_clip_cache_add(e, proxy); + EINA_COW_WRITE_BEGIN(evas_object_proxy_cow, obj->proxy, + Evas_Object_Proxy_Data, proxy_write) + proxy_write->redraw = EINA_TRUE; + EINA_COW_WRITE_END(evas_object_proxy_cow, obj->proxy, + proxy_write); + + EINA_LIST_FOREACH(obj->proxy->proxies, l, eo_proxy) + { + Evas_Object_Protected_Data *proxy = + eo_data_scope_get(eo_proxy, EVAS_OBJ_CLASS); + proxy->func->render_pre(eo_proxy, + proxy, proxy->private_data); + _evas_render_prev_cur_clip_cache_add(e, proxy); + } } } |