summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorChunEon Park <hermet@hermet.pe.kr>2013-04-26 20:05:46 +0900
committerChunEon Park <hermet@hermet.pe.kr>2013-04-26 20:05:46 +0900
commit911790b2367589ff922767f5144b0313ab8550d8 (patch)
tree060264e96102eaa18b6c5fd1f126f51f2867ec5f /src
parent188c345b27e2ab9a03d89a870c37fba08a6cf553 (diff)
evas - fixed logic fault in proxy clipping.
Diffstat (limited to 'src')
-rw-r--r--src/lib/evas/canvas/evas_object_image.c3
-rw-r--r--src/lib/evas/canvas/evas_render.c40
-rw-r--r--src/lib/evas/include/evas_private.h2
3 files changed, 21 insertions, 24 deletions
diff --git a/src/lib/evas/canvas/evas_object_image.c b/src/lib/evas/canvas/evas_object_image.c
index 7cc6c03..db572b4 100644
--- a/src/lib/evas/canvas/evas_object_image.c
+++ b/src/lib/evas/canvas/evas_object_image.c
@@ -3254,8 +3254,7 @@ _proxy_subrender(Evas *eo_e, Evas_Object *eo_source, Eina_Bool do_async)
3254 evas_render_mapped(e, eo_source, source, ctx, proxy_write->surface, 3254 evas_render_mapped(e, eo_source, source, ctx, proxy_write->surface,
3255 -source->cur->geometry.x, 3255 -source->cur->geometry.x,
3256 -source->cur->geometry.y, 3256 -source->cur->geometry.y,
3257 1, 0, 0, e->output.w, e->output.h, EINA_TRUE, 3257 1, 0, 0, e->output.w, e->output.h, EINA_TRUE
3258 EINA_TRUE
3259#ifdef REND_DBG 3258#ifdef REND_DBG
3260 , 1 3259 , 1
3261#endif 3260#endif
diff --git a/src/lib/evas/canvas/evas_render.c b/src/lib/evas/canvas/evas_render.c
index d3f31cd..368a88c 100644
--- a/src/lib/evas/canvas/evas_render.c
+++ b/src/lib/evas/canvas/evas_render.c
@@ -950,8 +950,7 @@ Eina_Bool
950evas_render_mapped(Evas_Public_Data *e, Evas_Object *eo_obj, 950evas_render_mapped(Evas_Public_Data *e, Evas_Object *eo_obj,
951 Evas_Object_Protected_Data *obj, void *context, 951 Evas_Object_Protected_Data *obj, void *context,
952 void *surface, int off_x, int off_y, int mapped, int ecx, 952 void *surface, int off_x, int off_y, int mapped, int ecx,
953 int ecy, int ecw, int ech, Eina_Bool proxy_render, 953 int ecy, int ecw, int ech, Eina_Bool proxy_render
954 Eina_Bool proxy_src_clip
955#ifdef REND_DBG 954#ifdef REND_DBG
956 , int level 955 , int level
957#endif 956#endif
@@ -968,20 +967,22 @@ evas_render_mapped(Evas_Public_Data *e, Evas_Object *eo_obj,
968 967
969 RDI(level); 968 RDI(level);
970 RD(" { evas_render_mapped(%p, %p, %p, %p, %i, %i, %i, %i)\n", e, obj, context, surface, off_x, off_y, mapped, level); 969 RD(" { evas_render_mapped(%p, %p, %p, %p, %i, %i, %i, %i)\n", e, obj, context, surface, off_x, off_y, mapped, level);
970
971 if (mapped) 971 if (mapped)
972 { 972 {
973 if (obj->clip.clipees || obj->cur->have_clipees) 973 if (!proxy_render)
974 { 974 {
975 if (!proxy_render || proxy_src_clip) 975 if ((!evas_object_is_visible(eo_obj, obj)) || (obj->clip.clipees)
976 || (obj->cur->have_clipees))
976 { 977 {
977 if (!evas_object_is_visible(eo_obj, obj)) 978 RDI(level);
978 { 979 RD(" }\n");
979 RDI(level); 980 return clean_them;
980 RD(" }\n");
981 return clean_them;
982 }
983 } 981 }
984 else 982 }
983 else
984 {
985 if ((obj->clip.clipees) || (obj->cur->have_clipees))
985 { 986 {
986 RDI(level); 987 RDI(level);
987 RD(" }\n"); 988 RD(" }\n");
@@ -989,9 +990,9 @@ evas_render_mapped(Evas_Public_Data *e, Evas_Object *eo_obj,
989 } 990 }
990 } 991 }
991 } 992 }
992 else if (!(evas_object_is_active(eo_obj, obj) && 993 else if (!(((evas_object_is_active(eo_obj, obj) && (!obj->clip.clipees) &&
993 (!obj->clip.clipees) && 994 (_evas_render_can_render(eo_obj, obj))))
994 _evas_render_can_render(eo_obj, obj))) 995 ))
995 { 996 {
996 RDI(level); 997 RDI(level);
997 RD(" }\n"); 998 RD(" }\n");
@@ -1133,8 +1134,7 @@ evas_render_mapped(Evas_Public_Data *e, Evas_Object *eo_obj,
1133 obj->map->surface, 1134 obj->map->surface,
1134 off_x2, off_y2, 1, 1135 off_x2, off_y2, 1,
1135 ecx, ecy, ecw, ech, 1136 ecx, ecy, ecw, ech,
1136 proxy_render, 1137 proxy_render
1137 proxy_src_clip
1138#ifdef REND_DBG 1138#ifdef REND_DBG
1139 , level + 1 1139 , level + 1
1140#endif 1140#endif
@@ -1265,8 +1265,7 @@ evas_render_mapped(Evas_Public_Data *e, Evas_Object *eo_obj,
1265 obj2, ctx, surface, 1265 obj2, ctx, surface,
1266 off_x, off_y, 1, 1266 off_x, off_y, 1,
1267 ecx, ecy, ecw, ech, 1267 ecx, ecy, ecw, ech,
1268 proxy_render, 1268 proxy_render
1269 proxy_src_clip
1270#ifdef REND_DBG 1269#ifdef REND_DBG
1271 , level + 1 1270 , level + 1
1272#endif 1271#endif
@@ -1278,7 +1277,7 @@ evas_render_mapped(Evas_Public_Data *e, Evas_Object *eo_obj,
1278 RDI(level); 1277 RDI(level);
1279 1278
1280 //FIXME: Consider to clip by the proxy clipper. 1279 //FIXME: Consider to clip by the proxy clipper.
1281 if ((!proxy_render || proxy_src_clip) && obj->cur->clipper) 1280 if (obj->cur->clipper && !proxy_render)
1282 { 1281 {
1283 RD(" clip: %i %i %ix%i [%i %i %ix%i]\n", 1282 RD(" clip: %i %i %ix%i [%i %i %ix%i]\n",
1284 obj->cur->cache.clip.x + off_x, 1283 obj->cur->cache.clip.x + off_x,
@@ -1323,7 +1322,7 @@ evas_render_mapped(Evas_Public_Data *e, Evas_Object *eo_obj,
1323 else 1322 else
1324 { 1323 {
1325 //FIXME: Consider to clip by the proxy clipper. 1324 //FIXME: Consider to clip by the proxy clipper.
1326 if ((!proxy_render || proxy_src_clip) && obj->cur->clipper) 1325 if (obj->cur->clipper && !proxy_render)
1327 { 1326 {
1328 int x, y, w, h; 1327 int x, y, w, h;
1329 1328
@@ -1745,7 +1744,6 @@ evas_render_updates_internal(Evas *eo_e,
1745 surface, off_x, 1744 surface, off_x,
1746 off_y, 0, 1745 off_y, 0,
1747 cx, cy, cw, ch, 1746 cx, cy, cw, ch,
1748 EINA_FALSE,
1749 EINA_FALSE 1747 EINA_FALSE
1750#ifdef REND_DBG 1748#ifdef REND_DBG
1751 , 1 1749 , 1
diff --git a/src/lib/evas/include/evas_private.h b/src/lib/evas/include/evas_private.h
index 1a03c29..9defa26 100644
--- a/src/lib/evas/include/evas_private.h
+++ b/src/lib/evas/include/evas_private.h
@@ -1239,7 +1239,7 @@ Eina_Bool evas_render_mapped(Evas_Public_Data *e, Evas_Object *obj,
1239 Evas_Object_Protected_Data *source_pd, 1239 Evas_Object_Protected_Data *source_pd,
1240 void *context, void *surface, int off_x, int off_y, 1240 void *context, void *surface, int off_x, int off_y,
1241 int mapped, int ecx, int ecy, int ecw, int ech, 1241 int mapped, int ecx, int ecy, int ecw, int ech,
1242 Eina_Bool proxy_render, Eina_Bool proxy_src_clip 1242 Eina_Bool proxy_render
1243#ifdef REND_DBG 1243#ifdef REND_DBG
1244 , int level 1244 , int level
1245#endif 1245#endif