summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChunEon Park <hermet@hermet.pe.kr>2013-11-18 16:10:55 +0900
committerChunEon Park <hermet@hermet.pe.kr>2013-11-18 16:12:30 +0900
commit5cefa00d0ad0f542ac53d38cbce4495884b09136 (patch)
treee68df237ef8862aece138c1871682a8fede7f756
parent1500338a8d56d530b0a7e2ba30f55e08b50eaffe (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.c23
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);
+ }
}
}