efl/src/lib/evas/canvas
Jean-Philippe Andre 2bed30b398 evas: "fix" masks of masks inside a proxy
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.
2016-12-16 11:29:47 +09:00
..
render2 evas: Remove context from some engine function 2016-12-16 10:40:55 +09:00
common_interfaces.c Evas: Rename Zoomable_Interface to Efl.Ui.Zoomable 2016-06-10 18:06:15 +09:00
efl_canvas_filter_internal.eo docs: evas_canvas: fill gaps in evas canvas eo file documentation 2016-11-15 17:45:32 +01:00
efl_canvas_group.eo docs: evas_canvas: fill gaps in evas canvas eo file documentation 2016-11-15 17:45:32 +01:00
efl_canvas_group_clipped.eo evas/elm: Remove function group_move 2016-10-12 11:25:56 +09:00
efl_canvas_image.c evas: move the error listing in dbg info to the canvas image 2016-11-07 14:41:06 -08:00
efl_canvas_image.eo evas: move the error listing in dbg info to the canvas image 2016-11-07 14:41:06 -08:00
efl_canvas_image_internal.eo docs: evas_canvas: fill gaps in evas canvas eo file documentation 2016-11-15 17:45:32 +01:00
efl_canvas_object.eo evas: Make evas object loop users 2016-12-13 16:12:27 +09:00
efl_canvas_output.eo docs: evas_canvas: fill gaps in evas canvas eo file documentation 2016-11-15 17:45:32 +01:00
efl_canvas_polygon.eo Change the EFL to follow the new Eo rename. 2016-08-11 17:04:43 +01:00
efl_canvas_proxy.c evas: Add source_region property to proxy objects 2016-12-16 10:24:52 +09:00
efl_canvas_proxy.eo evas: Add source_region property to proxy objects 2016-12-16 10:24:52 +09:00
efl_canvas_rectangle.eo docs: evas_canvas: fill gaps in evas canvas eo file documentation 2016-11-15 17:45:32 +01:00
efl_canvas_scene3d.c evas: Switch EO APIs to Eina_Slice for gfx buffers (map) 2016-09-06 16:54:53 +09:00
efl_canvas_scene3d.eo Evas: Stop using Evas.Image in public inheritance 2016-06-16 13:10:34 +09:00
efl_canvas_snapshot.c Eo: Finish the renaming of Eo to the EFL. 2016-08-15 15:07:42 +01:00
efl_canvas_snapshot.eo Change the EFL to follow the new Eo rename. 2016-08-11 17:04:43 +01:00
efl_canvas_surface.c Eo: Finish the renaming of Eo to the EFL. 2016-08-15 15:07:42 +01:00
efl_canvas_surface.eo docs: evas_canvas: fill gaps in evas canvas eo file documentation 2016-11-15 17:45:32 +01:00
efl_canvas_surface.h Evas.Image: Move native surfaces to Efl.Canvas.Surface 2016-03-15 11:11:59 +09:00
efl_canvas_surface_tbm.c Eo: Finish the renaming of Eo to the EFL. 2016-08-15 15:07:42 +01:00
efl_canvas_surface_tbm.eo Change the EFL to follow the new Eo rename. 2016-08-11 17:04:43 +01:00
efl_canvas_surface_wayland.c Eo: Finish the renaming of Eo to the EFL. 2016-08-15 15:07:42 +01:00
efl_canvas_surface_wayland.eo Change the EFL to follow the new Eo rename. 2016-08-11 17:04:43 +01:00
efl_canvas_surface_x11.c Eo: Finish the renaming of Eo to the EFL. 2016-08-15 15:07:42 +01:00
efl_canvas_surface_x11.eo docs: evas_canvas: fill gaps in evas canvas eo file documentation 2016-11-15 17:45:32 +01:00
efl_canvas_text.eo docs: evas_canvas: fill gaps in evas canvas eo file documentation 2016-11-15 17:45:32 +01:00
efl_canvas_text_cursor.eo docs: evas_canvas: fill gaps in evas canvas eo file documentation 2016-11-15 17:45:32 +01:00
efl_gfx_map.eo docs: efl_gfx: fill gaps in efl_gfx eo file documentation 2016-11-15 17:45:32 +01:00
efl_input_event.c efl: Rename Efl.Event.XX to Efl.Input.XX 2016-08-26 10:18:01 +09:00
efl_input_event.eo docs: efl_input: fill gaps in efl_input eo file documentation 2016-11-15 12:00:21 +01:00
efl_input_focus.c Efl.Input: Properly unref the device if a new device is set. 2016-12-02 15:12:56 -02:00
efl_input_focus.eo efl_input_focus: fix typo and code style 2016-11-30 16:49:25 -02:00
efl_input_hold.c Efl.Input: Properly unref the device if a new device is set. 2016-12-02 15:12:56 -02:00
efl_input_hold.eo docs: efl_input: fill gaps in efl_input eo file documentation 2016-11-15 12:00:21 +01:00
efl_input_interface.eo Evas: Add seat_event_filter_set()/get() API. 2016-12-12 14:59:22 -02:00
efl_input_key.c Efl.Input: Properly unref the device if a new device is set. 2016-12-02 15:12:56 -02:00
efl_input_key.eo docs: efl_input: fill gaps in efl_input eo file documentation 2016-11-15 12:00:21 +01:00
efl_input_pointer.c evas: input_pointer: remove unreachable case statement 2016-12-06 11:05:41 +01:00
efl_input_pointer.eo docs: efl_input: add missing docs for efl input pointer 2016-11-07 12:07:28 +01:00
efl_input_state.eo docs: efl_input: fill gaps in efl_input eo file documentation 2016-11-15 12:00:21 +01:00
efl_ui_clickable.eo docs: efl_ui*: add docs for interfaces and events 2016-11-04 12:28:11 +01:00
efl_ui_draggable.eo docs: efl_ui: fill gaps in efl_ui eo file documentation 2016-11-15 12:00:22 +01:00
efl_ui_scrollable.eo docs: efl_ui: fill gaps in efl_ui eo file documentation 2016-11-15 12:00:22 +01:00
efl_ui_selectable.eo docs: evas: fill last gaps in evas eo file documentation 2016-11-23 14:16:24 +01:00
efl_ui_zoomable.eo docs: efl_ui*: add docs for interfaces and events 2016-11-04 12:28:11 +01:00
efl_vg.eo docs: efl_vg: fill gaps in efl vector graphics eo file documentation 2016-11-15 12:00:21 +01:00
efl_vg_container.eo docs: efl_vg: fill gaps in efl vector graphics eo file documentation 2016-11-15 12:00:21 +01:00
efl_vg_gradient.eo docs: efl_vg: fill gaps in efl vector graphics eo file documentation 2016-11-15 12:00:21 +01:00
efl_vg_gradient_linear.eo docs: efl_vg: fill gaps in efl vector graphics eo file documentation 2016-11-15 12:00:21 +01:00
efl_vg_gradient_radial.eo docs: efl_vg: fill gaps in efl vector graphics eo file documentation 2016-11-15 12:00:21 +01:00
efl_vg_root_node.eo docs: efl_vg: fill gaps in efl vector graphics eo file documentation 2016-11-15 12:00:21 +01:00
efl_vg_shape.eo docs: efl_vg: fill gaps in efl vector graphics eo file documentation 2016-11-15 12:00:21 +01:00
evas_async_events.c evas: Fix a few issues after init/shutdown/init 2016-11-23 23:48:53 +09:00
evas_box.eo docs: evas_canvas: fill gaps in evas canvas primitives eo file documentation 2016-11-15 12:00:21 +01:00
evas_callbacks.c Efl.Canvas.Object: Remove focus,in/out events. 2016-11-24 19:18:47 -02:00
evas_canvas.eo evas: Make evas object loop users 2016-12-13 16:12:27 +09:00
evas_canvas3d_camera.c Eo: Finish the renaming of Eo to the EFL. 2016-08-15 15:07:42 +01:00
evas_canvas3d_camera.eo docs: evas3d: fill gaps in evas 3D canvas eo file documentations 2016-11-15 12:00:21 +01:00
evas_canvas3d_eet.c all: use void if we really want to make sure we do not accept parameters 2016-12-06 17:16:24 +01:00
evas_canvas3d_light.c Eo: Finish the renaming of Eo to the EFL. 2016-08-15 15:07:42 +01:00
evas_canvas3d_light.eo docs: evas3d: fill gaps in evas 3D canvas eo file documentations 2016-11-15 12:00:21 +01:00
evas_canvas3d_material.c Eo: Finish the renaming of Eo to the EFL. 2016-08-15 15:07:42 +01:00
evas_canvas3d_material.eo docs: evas3d: fill gaps in evas 3D canvas eo file documentations 2016-11-15 12:00:21 +01:00
evas_canvas3d_mesh.c Eo: Finish the renaming of Eo to the EFL. 2016-08-15 15:07:42 +01:00
evas_canvas3d_mesh.eo docs: evas3d: fill gaps in evas 3D canvas eo file documentations 2016-11-15 12:00:21 +01:00
evas_canvas3d_node.c Rename efl_self to efl_added 2016-09-05 16:59:56 +01:00
evas_canvas3d_node.eo docs: evas3d: fill gaps in evas 3D canvas eo file documentations 2016-11-15 12:00:21 +01:00
evas_canvas3d_node_callback.h Efl object: Rename Eo_Event -> Efl_Event. 2016-08-30 13:34:10 +01:00
evas_canvas3d_object.c Eo: Finish the renaming of Eo to the EFL. 2016-08-15 15:07:42 +01:00
evas_canvas3d_object.eo docs: evas 3d: update and correct some docs for 3d object class 2016-10-27 00:03:01 +02:00
evas_canvas3d_primitive.c Eo: Finish the renaming of Eo to the EFL. 2016-08-15 15:07:42 +01:00
evas_canvas3d_primitive.eo docs: evas3d: fill gaps in evas 3D canvas eo file documentations 2016-11-15 12:00:21 +01:00
evas_canvas3d_scene.c Efl Object: remove legacy callback calls from event_callback_call 2016-08-26 15:45:07 -03:00
evas_canvas3d_scene.eo docs: evas3d: fill gaps in evas 3D canvas eo file documentations 2016-11-15 12:00:21 +01:00
evas_canvas3d_texture.c evas: Remove flag use_mapped_ctx and add do_async 2016-12-16 11:05:45 +09:00
evas_canvas3d_texture.eo docs: evas3d: fill gaps in evas 3D canvas eo file documentations 2016-11-15 12:00:21 +01:00
evas_clip.c Evas: Add support for per mouse pointer mode/properties. 2016-12-02 09:57:50 -02:00
evas_data.c evas_data: Fix safety checks in evas_object_data 2016-10-12 11:25:55 +09:00
evas_device.c Evas: Add support for per seat modifiers and locks. 2016-12-02 09:57:50 -02:00
evas_events.c Efl.Canvas.Object: Remove the extra parementer at _evas_object_pointer_data_get() 2016-12-13 03:28:31 -02:00
evas_events_legacy.c Evas: Add support for per mouse pointer mode/properties. 2016-12-02 09:57:50 -02:00
evas_filter_mixin.c evas: Fix directly dereferencing pointer which may be NULL 2016-10-13 12:47:38 -04:00
evas_focus.c Evas: Objects must not be focused with the seat is not allowed to emit events. 2016-12-12 14:59:22 -02:00
evas_font_dir.c Eo: Finish the renaming of Eo to the EFL. 2016-08-15 15:07:42 +01:00
evas_gl.c all: use void if we really want to make sure we do not accept parameters 2016-12-06 17:16:24 +01:00
evas_grid.eo docs: evas_canvas: fill gaps in evas canvas primitives eo file documentation 2016-11-15 12:00:21 +01:00
evas_image.eo Evas: Rename Evas.Image into Efl.Canvas.Image.Internal 2016-06-10 13:21:20 +09:00
evas_image_legacy.c Rename efl_self to efl_added 2016-09-05 16:59:56 +01:00
evas_image_private.h evas: Add source_region property to proxy objects 2016-12-16 10:24:52 +09:00
evas_key.c Evas: Add support for per seat modifiers and locks. 2016-12-02 09:57:50 -02:00
evas_key_grab.c Eo: Finish the renaming of Eo to the EFL. 2016-08-15 15:07:42 +01:00
evas_layer.c Evas: Add support for per mouse pointer mode/properties. 2016-12-02 09:57:50 -02:00
evas_line.eo docs: evas_canvas: fill gaps in evas canvas primitives eo file documentation 2016-11-15 12:00:21 +01:00
evas_main.c evas: Remove context from the evas public data 2016-12-16 10:51:05 +09:00
evas_map.c Evas: Add support for per mouse pointer mode/properties. 2016-12-02 09:57:50 -02:00
evas_name.c Eo: Finish the renaming of Eo to the EFL. 2016-08-15 15:07:42 +01:00
evas_object_box.c evas: Fix stacked box align 2016-12-13 16:12:27 +09:00
evas_object_grid.c Eo: Finish the renaming of Eo to the EFL. 2016-08-15 15:07:42 +01:00
evas_object_image.c evas: Avoid calling efl_isa in proxy_subrender 2016-12-16 10:24:52 +09:00
evas_object_inform.c evas: Simplify internal evas_object_event_callback_call 2016-08-26 10:18:01 +09:00
evas_object_intercept.c evas: Fix infinite recursion on smart object resize 2016-12-01 17:56:18 +09:00
evas_object_line.c Evas: Add support for per mouse pointer mode/properties. 2016-12-02 09:57:50 -02:00
evas_object_main.c evas: Make evas object loop users 2016-12-13 16:12:27 +09:00
evas_object_polygon.c evas: Remove context from polygon internal functions 2016-12-16 10:37:54 +09:00
evas_object_rectangle.c evas render - cache object arrays rto avoid processing them in phase1 2016-11-26 18:33:56 +09:00
evas_object_smart.c evas render cache - clean up memory in all cases 2016-12-03 12:43:11 +09:00
evas_object_smart_clipped.c evas: Fix masks of masks and clippers of clippers in general 2016-11-09 10:52:03 +09:00
evas_object_table.c evas: Mark group_add/del as internal 2016-10-12 11:47:50 +09:00
evas_object_text.c Evas: Add support for per mouse pointer mode/properties. 2016-12-02 09:57:50 -02:00
evas_object_textblock.c Canvas text: call "changed" on style_set 2016-12-12 10:48:28 +02:00
evas_object_textgrid.c Evas: Add support for per mouse pointer mode/properties. 2016-12-02 09:57:50 -02:00
evas_object_vg.c evas render - cache object arrays rto avoid processing them in phase1 2016-11-26 18:33:56 +09:00
evas_out.c evas: link output with evas canvas at finalize time. 2016-09-13 16:12:41 -07:00
evas_polygon_private.h evas: move Efl_Canvas_Polygon_Data struct to separate header 2016-05-05 10:49:30 -04:00
evas_rectangle.c
evas_render.c evas: "fix" masks of masks inside a proxy 2016-12-16 11:29:47 +09:00
evas_smart.c
evas_stack.c Evas: Add support for per mouse pointer mode/properties. 2016-12-02 09:57:50 -02:00
evas_stats.c
evas_table.eo docs: evas_canvas: fill gaps in evas canvas primitives eo file documentation 2016-11-15 12:00:21 +01:00
evas_text.eo eolian: unary expr eval for floats and add a signed number mask 2016-12-14 18:23:16 +01:00
evas_textblock_hyphenation.x Eo: Finish the renaming of Eo to the EFL. 2016-08-15 15:07:42 +01:00
evas_textblock_legacy.h Canvas Text: continue porting api and fixup bugs 2016-06-16 19:15:20 +01:00
evas_textgrid.eo docs: evas_canvas: fill gaps in evas canvas primitives eo file documentation 2016-11-15 12:00:21 +01:00
evas_touch_point.c win: Add EO API to query state of multi touch points 2016-09-01 14:57:11 +09:00
evas_types.eot docs: evas: document various type defines 2016-11-03 11:57:40 +01:00
evas_vg.eo docs: efl_vg: fill gaps in efl vector graphics eo file documentation 2016-11-15 12:00:21 +01:00
evas_vg_container.c Rename efl_self to efl_added 2016-09-05 16:59:56 +01:00
evas_vg_gradient.c Eo: Finish the renaming of Eo to the EFL. 2016-08-15 15:07:42 +01:00
evas_vg_gradient_linear.c evas: vg/gradient - add missing legacy api for gradient object creation. 2016-10-25 14:37:11 -07:00
evas_vg_gradient_radial.c evas: vg/gradient - add missing legacy api for gradient object creation. 2016-10-25 14:37:11 -07:00
evas_vg_node.c Rename efl_self to efl_added 2016-09-05 16:59:56 +01:00
evas_vg_private.h Efl Object: remove legacy callback calls from event_callback_call 2016-08-26 15:45:07 -03:00
evas_vg_root_node.c Efl object: Rename Eo_Event -> Efl_Event. 2016-08-30 13:34:10 +01:00
evas_vg_shape.c efl interface: introduce efl_gfx_path mixin. 2016-11-23 17:36:57 +09:00
evas_vg_utils.c