summaryrefslogtreecommitdiff
path: root/src
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 /src
parent1500338a8d56d530b0a7e2ba30f55e08b50eaffe (diff)
evas/render - optimize proxy rendering.
redraw proxy if the source is smart object and it's changed visually.
Diffstat (limited to 'src')
-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 7e0b16b6e8..4a3a4e1df0 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,
345 _evas_render_prev_cur_clip_cache_add(e, obj); 345 _evas_render_prev_cur_clip_cache_add(e, obj);
346 if (obj->proxy->proxies) 346 if (obj->proxy->proxies)
347 { 347 {
348 EINA_COW_WRITE_BEGIN(evas_object_proxy_cow, obj->proxy, Evas_Object_Proxy_Data, proxy_write) 348 if (obj->smart.smart && evas_object_smart_changed_get(eo_obj))
349 proxy_write->redraw = EINA_TRUE;
350 EINA_COW_WRITE_END(evas_object_proxy_cow, obj->proxy, proxy_write);
351
352 EINA_LIST_FOREACH(obj->proxy->proxies, l, eo_proxy)
353 { 349 {
354 Evas_Object_Protected_Data *proxy = eo_data_scope_get(eo_proxy, EVAS_OBJ_CLASS); 350 EINA_COW_WRITE_BEGIN(evas_object_proxy_cow, obj->proxy,
355 proxy->func->render_pre(eo_proxy, proxy, proxy->private_data); 351 Evas_Object_Proxy_Data, proxy_write)
356 _evas_render_prev_cur_clip_cache_add(e, proxy); 352 proxy_write->redraw = EINA_TRUE;
353 EINA_COW_WRITE_END(evas_object_proxy_cow, obj->proxy,
354 proxy_write);
355
356 EINA_LIST_FOREACH(obj->proxy->proxies, l, eo_proxy)
357 {
358 Evas_Object_Protected_Data *proxy =
359 eo_data_scope_get(eo_proxy, EVAS_OBJ_CLASS);
360 proxy->func->render_pre(eo_proxy,
361 proxy, proxy->private_data);
362 _evas_render_prev_cur_clip_cache_add(e, proxy);
363 }
357 } 364 }
358 } 365 }
359 366