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. |
||
---|---|---|
.. | ||
benchmarks | ||
bin | ||
bindings | ||
edje_external | ||
examples | ||
generic | ||
lib | ||
modules | ||
scripts | ||
static_libs | ||
tests | ||
utils/ecore | ||
Makefile.am | ||
Makefile_Cxx.am | ||
Makefile_EPhysics.am | ||
Makefile_Ecore.am | ||
Makefile_Ecore_Audio.am | ||
Makefile_Ecore_Avahi.am | ||
Makefile_Ecore_Buffer.am | ||
Makefile_Ecore_Cocoa.am | ||
Makefile_Ecore_Con.am | ||
Makefile_Ecore_Drm.am | ||
Makefile_Ecore_Drm2.am | ||
Makefile_Ecore_Evas.am | ||
Makefile_Ecore_FB.am | ||
Makefile_Ecore_File.am | ||
Makefile_Ecore_IMF.am | ||
Makefile_Ecore_IMF_Evas.am | ||
Makefile_Ecore_Input.am | ||
Makefile_Ecore_Input_Evas.am | ||
Makefile_Ecore_Ipc.am | ||
Makefile_Ecore_Js.am | ||
Makefile_Ecore_Psl1ght.am | ||
Makefile_Ecore_SDL.am | ||
Makefile_Ecore_Wayland.am | ||
Makefile_Ecore_Win32.am | ||
Makefile_Ecore_Wl2.am | ||
Makefile_Ecore_X.am | ||
Makefile_Ector.am | ||
Makefile_Edje.am | ||
Makefile_Edje_Helper.am | ||
Makefile_Eet.am | ||
Makefile_Eet_Helper.am | ||
Makefile_Eeze.am | ||
Makefile_Efl.am | ||
Makefile_Efl_Js.am | ||
Makefile_Efreet.am | ||
Makefile_Eina.am | ||
Makefile_Eio.am | ||
Makefile_Eldbus.am | ||
Makefile_Elementary.am | ||
Makefile_Elocation.am | ||
Makefile_Elput.am | ||
Makefile_Elua.am | ||
Makefile_Elua_Helper.am | ||
Makefile_Embryo.am | ||
Makefile_Emile.am | ||
Makefile_Emotion.am | ||
Makefile_Eo.am | ||
Makefile_Eolian.am | ||
Makefile_Eolian_Cxx.am | ||
Makefile_Eolian_Cxx_Helper.am | ||
Makefile_Eolian_Files_Helper.am | ||
Makefile_Eolian_Helper.am | ||
Makefile_Eolian_Js.am | ||
Makefile_Eolian_Js_Helper.am | ||
Makefile_Escape.am | ||
Makefile_Ethumb.am | ||
Makefile_Ethumb_Client.am | ||
Makefile_Evas.am | ||
Makefile_Evil.am |