forked from enlightenment/efl
2bed30b398
Here's the situation: 1. A container (genlist) has a mask, M0. 2. An item I0 inside this container uses a proxy P0 as render object rather than the item directly (eg. for zooming in/out). 3. An element E0 inside this item has another mask, M1. Theory: 1. The proxy surface for P0 is rendered, and M1 is applied to the element E0. 2. The proxy P0 is rendered on the canvas, with M0 applied. Practice: 1. The element E0 is prepared for rendering, this triggers a mask subrender for M1. 2. M1 is rendered with M0 as a prev mask, then kept in cache and not redrawn (no geometry change, etc...) 3. When P0's surface is rendered, M1's surface is the result of M1+M0. 4. When P0 is drawn on screen, we can see the effect of M1+M0 as P0's geometry might be different from the item's I0. Solution: Discard prev masks and force a mask redraw when we're inside a proxy. Ideally we should detect if the prev mask belongs to the insides of the proxy or not. Problems: _mask_apply_inside_proxy() is definitely not correct, but it's not easy to test it. Anyway I believe that in order to properly implement all of this, we need to rethink evas_render and the draw context. Non-primary render surfaces (maps, proxies, masks, filters, ...) should be rendered with a clean context and clipping, masking, etc should be computed appropriately. |
||
---|---|---|
.. | ||
ecore | ||
ecore_audio | ||
ecore_avahi | ||
ecore_buffer | ||
ecore_cocoa | ||
ecore_con | ||
ecore_drm | ||
ecore_drm2 | ||
ecore_evas | ||
ecore_fb | ||
ecore_file | ||
ecore_imf | ||
ecore_imf_evas | ||
ecore_input | ||
ecore_input_evas | ||
ecore_ipc | ||
ecore_psl1ght | ||
ecore_sdl | ||
ecore_wayland | ||
ecore_win32 | ||
ecore_wl2 | ||
ecore_x | ||
ector | ||
edje | ||
eet | ||
eeze | ||
efl | ||
efreet | ||
eina | ||
eio | ||
eldbus | ||
elementary | ||
elocation | ||
elput | ||
elua | ||
embryo | ||
emile | ||
emotion | ||
eo | ||
eolian | ||
eolian_cxx | ||
ephysics | ||
escape | ||
ethumb | ||
ethumb_client | ||
evas | ||
evil | ||
.gitignore |