Evas render: Fix double-clipping issue with maps
authorJean-Philippe Andre <jp.andre@samsung.com>
Tue, 14 Apr 2015 07:20:00 +0000 (16:20 +0900)
committerJean-Philippe Andre <jp.andre@samsung.com>
Tue, 14 Apr 2015 07:37:12 +0000 (16:37 +0900)
commitb0c6a32d681aea398d53cda2d935d0ee10226903
tree03617d72f3d74850c57dad67e0c5a89ff27a7330
parent404ecdd8d7b0a91876c9ae11d1f0a80634b557d3
Evas render: Fix double-clipping issue with maps

Situation:
 - Evas Object A has a clip C and a map M.

Problem:
 - Clip C will be applied once inside the map surface S and
   again when the surface S is drawn to the canvas.

Solution:
 - Track whether the current object is the mapped object
   or a child of the mapped object. In the first case,
   discard the clipper when rendering to the map surface.
   In the second case, the child's clipper is PROBABLY[*]
   inside the map, so it should be applied when rendering the
   map surface itself.

Note: This also applies to masks.

[*] This is clearly not the ultimate clipping fix.
src/lib/evas/canvas/evas_3d_texture.c
src/lib/evas/canvas/evas_render.c