Evas render: Fix another bad proxy clipping issue
authorJean-Philippe Andre <jp.andre@samsung.com>
Tue, 6 Oct 2015 08:36:29 +0000 (17:36 +0900)
committerJean-Philippe Andre <jp.andre@samsung.com>
Wed, 7 Oct 2015 01:48:18 +0000 (10:48 +0900)
commit2b47181f4edaade0d774893d67e9707c6a8141ee
treeed98447d56156b57203d179e22eb05edf86570d5
parent12f9fea2a4d4d641a09fd6563a83b925d62e4868
Evas render: Fix another bad proxy clipping issue

This is an ugly hack to fix an issue reported in D3114. I don't
understand how the proposed patch could even fix anything given
the current situation.

Test case:
 - Create edje object with textblock inside
 - Clip out edje object (--> all children become not visible)
 - Take textblock from edje and set it as source of a proxy
 - Mark proxy as source_clip

Result: Nothing visible.

Expected: Proxy should contain the textblock object, since
  source_clip means we ignore the edje object's clipper, and
  only care about the textblock's clipper (entire canvas).

Here's what was happening:
 - During a first pass, textblock is not visible, cur->cache.clip
   is calculated, marked as clip_use=1 with geom 0,0 0x0
 - In a second pass, the proxy is rendered, which needs to draw
   the textblock in a surface. But cache.clip was used and it was
   wrong.

Solution:
 - Ignore cache.clip when rendering inside a proxy. I'm pretty
   sure there are other instances where cache.clip will still
   be a problem.

Problem: textblock never called relayout since it was not
  visible.

Conclusion: cache.clip needs to die. It's a legacy optimization
  that now causes more issues than it fixes.
src/lib/evas/canvas/evas_render.c