while at that, what about explicitly have 2 methods: shallow copy and deep copy?

the interface/mixin can have both, and implementers just do one... but
it's a common problem to identify "is this copy a shallow or deep? If
I modify that in X, will it reflect in Y?"



On Mon, Dec 4, 2017 at 7:27 AM, Jean-Philippe André <[email protected]> wrote:
> On Sun, Dec 3, 2017 at 3:45 AM, Andrew Williams <[email protected]>
> wrote:
>
>> Is there anyway we could use a more descriptive name? It just seems
>> unnecessarily short.
>>
>
> Absolutely. It didn't "think", and only changed the name from the method
> "dup".
> Cedric mentioned that to me and I think we'll rename to duplicate or
> cloneable.
>
>
>> Maybe that’s just me.
>> Andy
>> On Fri, 1 Dec 2017 at 18:50, Davide Andreoli <[email protected]>
>> wrote:
>>
>> > 2017-12-01 3:12 GMT+01:00 Jean-Philippe André <[email protected]>:
>> >
>> > > On Fri, Dec 1, 2017 at 3:49 AM, Davide Andreoli <
>> [email protected]>
>> > > wrote:
>> > >
>> > > > 2017-11-30 3:36 GMT+01:00 Jean-Philippe ANDRÉ <[email protected]>:
>> > > >
>> > > > > jpeg pushed a commit to branch master.
>> > > > >
>> > > > > http://git.enlightenment.org/core/efl.git/commit/?id=
>> > > > > bd5b76508b0b3bdc5d92f5f7db9741c100d47d3c
>> > > > >
>> > > > > commit bd5b76508b0b3bdc5d92f5f7db9741c100d47d3c
>> > > > > Author: Jean-Philippe Andre <[email protected]>
>> > > > > Date:   Wed Nov 29 20:03:16 2017 +0900
>> > > > >
>> > > > >     efl: Introduce interface Efl.Dup
>> > > > >
>> > > > >     A few classes allow their objects to be duplicated, so they
>> > should
>> > > > all
>> > > > >     use the same interface.
>> > > > >
>> > > > >     Also, rename VG's dup to copy_from as it's not conforming to
>> the
>> > > > >     definition of dup.
>> > > > >
>> > > >
>> > > > Is'nt the last rename (vg_dup) an abi break ?
>> > > >
>> > > > python-efl apps now crash like this:
>> > > > Traceback (most recent call last):
>> > > >   File "/usr/bin/epymc", line 5, in <module>
>> > > >     from epymc.main import start_epymc
>> > > >   File "/usr/lib/python3.6/site-packages/epymc/main.py", line 32, in
>> > > > <module>
>> > > >     from efl import edje
>> > > > ImportError: /usr/local/lib/libedje.so.1: undefined symbol:
>> > > > evas_vg_node_dup
>> > > >
>> > > > A python-efl rebuild fixed the issue, this is why I think it's an abi
>> > > > break.
>> > > >
>> > > > note that the bindings do not use/expose evas_vg in any way
>> > > >
>> > >
>> > > I was under the impression that Evas VG was still "beta".
>> > > In fact I can see EFL_BETA_API_SUPPORT.
>> > >
>> > > Could you double-check on your side what's happening?
>> > > Where is this symbol used?
>> > >
>> >
>> > Probably the symbol is used inside edje. PythonEFL is built with
>> > EFL_BETA_API_SUPPORT on, and I think this is the source of
>> > the issue
>> >
>> >
>> > >
>> > > TIA,
>> > >
>> > >
>> > > >
>> > > >
>> > > >
>> > > > > ---
>> > > > >  src/Makefile_Efl.am                           |  1 +
>> > > > >  src/bin/elementary/test_events.c              | 10 +++++-----
>> > > > >  src/lib/edje/edje_calc.c                      |  2 +-
>> > > > >  src/lib/efl/Efl.h                             |  1 +
>> > > > >  src/lib/efl/interfaces/efl_dup.eo             | 17
>> +++++++++++++++++
>> > > > >  src/lib/efl/interfaces/efl_gfx_path.c         |  4 ++--
>> > > > >  src/lib/efl/interfaces/efl_gfx_path.eo        |  3 ++-
>> > > > >  src/lib/efl/interfaces/efl_gfx_shape.c        | 12 +++++++-----
>> > > > >  src/lib/efl/interfaces/efl_gfx_shape.eo       | 12 +++---------
>> > > > >  src/lib/efl/interfaces/efl_interfaces_main.c  |  1 +
>> > > > >  src/lib/evas/canvas/efl_canvas_vg.c           |  2 +-
>> > > > >  src/lib/evas/canvas/efl_input_event.eo        | 13 +------------
>> > > > >  src/lib/evas/canvas/efl_input_focus.c         |  2 +-
>> > > > >  src/lib/evas/canvas/efl_input_focus.eo        | 10 +++++++++-
>> > > > >  src/lib/evas/canvas/efl_input_hold.c          |  2 +-
>> > > > >  src/lib/evas/canvas/efl_input_hold.eo         | 10 +++++++++-
>> > > > >  src/lib/evas/canvas/efl_input_key.c           |  2 +-
>> > > > >  src/lib/evas/canvas/efl_input_key.eo          | 10 +++++++++-
>> > > > >  src/lib/evas/canvas/efl_input_pointer.c       |  2 +-
>> > > > >  src/lib/evas/canvas/efl_input_pointer.eo      | 10 +++++++++-
>> > > > >  src/lib/evas/canvas/efl_vg.eo                 |  7 ++-----
>> > > > >  src/lib/evas/canvas/efl_vg_container.eo       |  2 +-
>> > > > >  src/lib/evas/canvas/efl_vg_gradient.eo        |  2 +-
>> > > > >  src/lib/evas/canvas/efl_vg_gradient_linear.eo |  2 +-
>> > > > >  src/lib/evas/canvas/efl_vg_gradient_radial.eo |  2 +-
>> > > > >  src/lib/evas/canvas/efl_vg_shape.eo           |  2 +-
>> > > > >  src/lib/evas/canvas/evas_device.c             |  2 +-
>> > > > >  src/lib/evas/canvas/evas_events.c             | 22
>> > > > +++++++++++-----------
>> > > > >  src/lib/evas/canvas/evas_vg_container.c       |  6 +++---
>> > > > >  src/lib/evas/canvas/evas_vg_gradient.c        |  4 ++--
>> > > > >  src/lib/evas/canvas/evas_vg_gradient_linear.c |  4 ++--
>> > > > >  src/lib/evas/canvas/evas_vg_gradient_radial.c |  4 ++--
>> > > > >  src/lib/evas/canvas/evas_vg_node.c            |  4 ++--
>> > > > >  src/lib/evas/canvas/evas_vg_shape.c           | 16
>> ++++++++--------
>> > > > >  src/lib/evas/vg/evas_vg_cache.c               |  2 +-
>> > > > >  35 files changed, 121 insertions(+), 86 deletions(-)
>> > > > >
>> > > > > diff --git a/src/Makefile_Efl.am b/src/Makefile_Efl.am
>> > > > > index 769abd6298..0584602894 100644
>> > > > > --- a/src/Makefile_Efl.am
>> > > > > +++ b/src/Makefile_Efl.am
>> > > > > @@ -16,6 +16,7 @@ efl_eolian_files = \
>> > > > >        lib/efl/interfaces/efl_canvas.eo \
>> > > > >        lib/efl/interfaces/efl_config.eo \
>> > > > >        lib/efl/interfaces/efl_control.eo \
>> > > > > +      lib/efl/interfaces/efl_dup.eo \
>> > > > >        lib/efl/interfaces/efl_file.eo \
>> > > > >        lib/efl/interfaces/efl_image_load.eo \
>> > > > >        lib/efl/interfaces/efl_part.eo \
>> > > > > diff --git a/src/bin/elementary/test_events.c
>> > > b/src/bin/elementary/test_
>> > > > > events.c
>> > > > > index c6a3ca5a0e..30831e8329 100644
>> > > > > --- a/src/bin/elementary/test_events.c
>> > > > > +++ b/src/bin/elementary/test_events.c
>> > > > > @@ -22,7 +22,7 @@ _pointer_down(void *data, const Efl_Event *ev)
>> > > > >     testdata *td = data;
>> > > > >     td->down = 1;
>> > > > >     efl_unref(td->evdown);
>> > > > > -   td->evdown = efl_input_dup(ev->info);
>> > > > > +   td->evdown = efl_dup(ev->info);
>> > > > >  }
>> > > > >
>> > > > >  static void
>> > > > > @@ -30,7 +30,7 @@ _pointer_move(void *data, const Efl_Event *ev)
>> > > > >  {
>> > > > >     testdata *td = data;
>> > > > >     efl_unref(td->evmove);
>> > > > > -   td->evmove = efl_input_dup(ev->info);
>> > > > > +   td->evmove = efl_dup(ev->info);
>> > > > >  }
>> > > > >
>> > > > >  static void
>> > > > > @@ -39,7 +39,7 @@ _pointer_up(void *data, const Efl_Event *ev)
>> > > > >     testdata *td = data;
>> > > > >     td->down = 0;
>> > > > >     efl_unref(td->evup);
>> > > > > -   td->evup = efl_input_dup(ev->info);
>> > > > > +   td->evup = efl_dup(ev->info);
>> > > > >  }
>> > > > >
>> > > > >  static void
>> > > > > @@ -64,7 +64,7 @@ _key_down(void *data, const Efl_Event *ev)
>> > > > >     if (!efl_input_fake_get(ev->info))
>> > > > >       {
>> > > > >          efl_unref(td->evkeydown);
>> > > > > -        td->evkeydown = efl_input_dup(ev->info);
>> > > > > +        td->evkeydown = efl_dup(ev->info);
>> > > > >       }
>> > > > >  }
>> > > > >
>> > > > > @@ -84,7 +84,7 @@ _key_up(void *data, const Efl_Event *ev)
>> > > > >     if (!efl_input_fake_get(ev->info))
>> > > > >       {
>> > > > >          efl_unref(td->evkeyup);
>> > > > > -        td->evkeyup = efl_input_dup(ev->info);
>> > > > > +        td->evkeyup = efl_dup(ev->info);
>> > > > >       }
>> > > > >
>> > > > >     if (td->f) efl_future_cancel(td->f);
>> > > > > diff --git a/src/lib/edje/edje_calc.c b/src/lib/edje/edje_calc.c
>> > > > > index f69cdedc7f..a071c6107a 100644
>> > > > > --- a/src/lib/edje/edje_calc.c
>> > > > > +++ b/src/lib/edje/edje_calc.c
>> > > > > @@ -3151,7 +3151,7 @@ _edje_svg_recalc_apply(Edje *ed,
>> Edje_Real_Part
>> > > > *ep,
>> > > > > Edje_Calc_Params *p3 EINA_U
>> > > > >          dest_root = efl_canvas_vg_root_node_get(ep->object);
>> > > > >          efl_ref(dest_root);
>> > > > >
>> > > > > -        root = evas_vg_node_dup(src_root);
>> > > > > +        root = efl_dup(src_root);
>> > > > >
>> > > > >          if (!evas_vg_node_interpolate(root, src_root, dest_root,
>> > > pos))
>> > > > >            {
>> > > > > diff --git a/src/lib/efl/Efl.h b/src/lib/efl/Efl.h
>> > > > > index 683745f10a..fa66d95044 100644
>> > > > > --- a/src/lib/efl/Efl.h
>> > > > > +++ b/src/lib/efl/Efl.h
>> > > > > @@ -76,6 +76,7 @@ typedef Efl_Gfx_Path_Command_Type
>> > > Efl_Gfx_Path_Command;
>> > > > >  /* Interfaces */
>> > > > >  #include "interfaces/efl_config.eo.h"
>> > > > >  #include "interfaces/efl_control.eo.h"
>> > > > > +#include "interfaces/efl_dup.eo.h"
>> > > > >  #include "interfaces/efl_file.eo.h"
>> > > > >  #include "interfaces/efl_image.eo.h"
>> > > > >  #include "interfaces/efl_image_animated.eo.h"
>> > > > > diff --git a/src/lib/efl/interfaces/efl_dup.eo
>> > > > > b/src/lib/efl/interfaces/efl_dup.eo
>> > > > > new file mode 100644
>> > > > > index 0000000000..9d40f1f895
>> > > > > --- /dev/null
>> > > > > +++ b/src/lib/efl/interfaces/efl_dup.eo
>> > > > > @@ -0,0 +1,17 @@
>> > > > > +interface Efl.Dup
>> > > > > +{
>> > > > > +   [[An interface for duplication of objects.
>> > > > > +
>> > > > > +     Objects implementing this interface can be duplicated with
>> > @.dup.
>> > > > > +   ]]
>> > > > > +   methods {
>> > > > > +      dup @const {
>> > > > > +         [[Creates a carbon copy of this object and returns it.
>> > > > > +
>> > > > > +           The newly created object will have no event handlers or
>> > > > > anything of
>> > > > > +           the sort.
>> > > > > +         ]]
>> > > > > +         return: Efl.Dup @owned;
>> > > > > +      }
>> > > > > +   }
>> > > > > +}
>> > > > > diff --git a/src/lib/efl/interfaces/efl_gfx_path.c
>> > > > > b/src/lib/efl/interfaces/efl_gfx_path.c
>> > > > > index df424c1d3e..85d017fd8c 100644
>> > > > > --- a/src/lib/efl/interfaces/efl_gfx_path.c
>> > > > > +++ b/src/lib/efl/interfaces/efl_gfx_path.c
>> > > > > @@ -1575,8 +1575,8 @@ _efl_gfx_path_append_svg_path(Eo *obj,
>> > > > > Efl_Gfx_Path_Data *pd,
>> > > > >       }
>> > > > >  }
>> > > > >
>> > > > > -static void
>> > > > > -_efl_gfx_path_dup(Eo *obj, Efl_Gfx_Path_Data *pd, const Eo
>> > *dup_from)
>> > > > > +EOLIAN static void
>> > > > > +_efl_gfx_path_copy_from(Eo *obj, Efl_Gfx_Path_Data *pd, const Eo
>> > > > > *dup_from)
>> > > > >  {
>> > > > >     Efl_Gfx_Path_Data *from;
>> > > > >
>> > > > > diff --git a/src/lib/efl/interfaces/efl_gfx_path.eo
>> > > > > b/src/lib/efl/interfaces/efl_gfx_path.eo
>> > > > > index 2311c74a33..4b8961dd74 100644
>> > > > > --- a/src/lib/efl/interfaces/efl_gfx_path.eo
>> > > > > +++ b/src/lib/efl/interfaces/efl_gfx_path.eo
>> > > > > @@ -49,7 +49,8 @@ mixin Efl.Gfx.Path
>> > > > >            y: double; [[Y co-ordinate of control point.]]
>> > > > >          }
>> > > > >        }
>> > > > > -      dup {
>> > > > > +      /* FIXME: Return a new object!!! */
>> > > > > +      copy_from {
>> > > > >          [[Copy the shape data from the object specified.
>> > > > >
>> > > > >            @since 1.18
>> > > > > diff --git a/src/lib/efl/interfaces/efl_gfx_shape.c
>> > > > > b/src/lib/efl/interfaces/efl_gfx_shape.c
>> > > > > index 922f6b9226..45bf04da43 100644
>> > > > > --- a/src/lib/efl/interfaces/efl_gfx_shape.c
>> > > > > +++ b/src/lib/efl/interfaces/efl_gfx_shape.c
>> > > > > @@ -8,6 +8,8 @@
>> > > > >
>> > > > >  #include <Efl.h>
>> > > > >
>> > > > > +#define MY_CLASS EFL_GFX_SHAPE_MIXIN
>> > > > > +
>> > > > >  typedef struct _Efl_Gfx_Shape_Data
>> > > > >  {
>> > > > >     Efl_Gfx_Shape_Public public;
>> > > > > @@ -260,15 +262,15 @@ _efl_gfx_shape_fill_rule_get(Eo *obj
>> > > EINA_UNUSED,
>> > > > >     return pd->fill_rule;
>> > > > >  }
>> > > > >
>> > > > > -static void
>> > > > > -_efl_gfx_shape_dup(Eo *obj, Efl_Gfx_Shape_Data *pd,
>> > > > > -                                const Eo *dup_from)
>> > > > > +EOLIAN static void
>> > > > > +_efl_gfx_shape_efl_gfx_path_copy_from(Eo *obj, Efl_Gfx_Shape_Data
>> > > *pd,
>> > > > > +                                      const Eo *dup_from)
>> > > > >  {
>> > > > >     Efl_Gfx_Shape_Data *from;
>> > > > >
>> > > > >     if (obj == dup_from) return;
>> > > > >
>> > > > > -   from = efl_data_scope_get(dup_from, EFL_GFX_SHAPE_MIXIN);
>> > > > > +   from = efl_data_scope_get(dup_from, MY_CLASS);
>> > > > >     if (!from) return;
>> > > > >
>> > > > >     pd->public.stroke.scale = from->public.stroke.scale;
>> > > > > @@ -285,7 +287,7 @@ _efl_gfx_shape_dup(Eo *obj, Efl_Gfx_Shape_Data
>> > *pd,
>> > > > >     _efl_gfx_shape_stroke_dash_set(obj, pd,
>> from->public.stroke.dash,
>> > > > >                                    from->public.stroke.dash_
>> length);
>> > > > >
>> > > > > -   efl_gfx_path_dup(obj, dup_from);
>> > > > > +   efl_gfx_path_copy_from(efl_super(obj, MY_CLASS), dup_from);
>> > > > >  }
>> > > > >
>> > > > >  #include "interfaces/efl_gfx_shape.eo.c"
>> > > > > diff --git a/src/lib/efl/interfaces/efl_gfx_shape.eo
>> > > > > b/src/lib/efl/interfaces/efl_gfx_shape.eo
>> > > > > index 14964b2fa6..e66b870615 100644
>> > > > > --- a/src/lib/efl/interfaces/efl_gfx_shape.eo
>> > > > > +++ b/src/lib/efl/interfaces/efl_gfx_shape.eo
>> > > > > @@ -134,14 +134,8 @@ mixin Efl.Gfx.Shape (Efl.Gfx.Path)
>> > > > >            @in pos_map: double; [[Position map in range 0.0 to
>> 1.0]]
>> > > > >          }
>> > > > >        }
>> > > > > -      dup {
>> > > > > -        [[Copy the shape data from the object specified.
>> > > > > -
>> > > > > -          @since 1.14
>> > > > > -        ]]
>> > > > > -        params {
>> > > > > -          @in dup_from: const(Efl.Object); [[Shape object from
>> where
>> > > > data
>> > > > > will be copied.]]
>> > > > > -        }
>> > > > > -      }
>> > > > > +   }
>> > > > > +   implements {
>> > > > > +      Efl.Gfx.Path.copy_from;
>> > > > >     }
>> > > > >  }
>> > > > > diff --git a/src/lib/efl/interfaces/efl_interfaces_main.c
>> > > > > b/src/lib/efl/interfaces/efl_interfaces_main.c
>> > > > > index e3b4e5682c..29a021e9c5 100644
>> > > > > --- a/src/lib/efl/interfaces/efl_interfaces_main.c
>> > > > > +++ b/src/lib/efl/interfaces/efl_interfaces_main.c
>> > > > > @@ -6,6 +6,7 @@
>> > > > >
>> > > > >  #include "interfaces/efl_config.eo.c"
>> > > > >  #include "interfaces/efl_control.eo.c"
>> > > > > +#include "interfaces/efl_dup.eo.c"
>> > > > >  #include "interfaces/efl_image.eo.c"
>> > > > >  #include "interfaces/efl_image_animated.eo.c"
>> > > > >  #include "interfaces/efl_image_load.eo.c"
>> > > > > diff --git a/src/lib/evas/canvas/efl_canvas_vg.c
>> > > > > b/src/lib/evas/canvas/efl_canvas_vg.c
>> > > > > index c8a83acbb1..2b16c88b9f 100644
>> > > > > --- a/src/lib/evas/canvas/efl_canvas_vg.c
>> > > > > +++ b/src/lib/evas/canvas/efl_canvas_vg.c
>> > > > > @@ -496,7 +496,7 @@ _cache_vg_entry_render(Evas_
>> Object_Protected_Data
>> > > > > *obj,
>> > > > >     buffer = obj->layer->evas->engine.func-
>> >ector_surface_cache_get(
>> > > > engine,
>> > > > > root);
>> > > > >     if (!buffer)
>> > > > >       {
>> > > > > -        dupe_root = evas_vg_node_dup(root);
>> > > > > +        dupe_root = efl_dup(root);
>> > > > >          // render to the buffer
>> > > > >          buffer = _render_to_buffer(obj, vd,
>> > > > >                                     engine, surface,
>> > > > > diff --git a/src/lib/evas/canvas/efl_input_event.eo
>> > > > > b/src/lib/evas/canvas/efl_input_event.eo
>> > > > > index b90f918221..45bd9372a3 100644
>> > > > > --- a/src/lib/evas/canvas/efl_input_event.eo
>> > > > > +++ b/src/lib/evas/canvas/efl_input_event.eo
>> > > > > @@ -1,6 +1,6 @@
>> > > > >  import efl_input_types;
>> > > > >
>> > > > > -mixin Efl.Input.Event (Efl.Interface, Efl.Object)
>> > > > > +mixin Efl.Input.Event (Efl.Interface, Efl.Object, Efl.Dup)
>> > > > >  {
>> > > > >     [[Represents a generic event data.
>> > > > >
>> > > > > @@ -30,17 +30,6 @@ mixin Efl.Input.Event (Efl.Interface,
>> Efl.Object)
>> > > > >        reset @pure_virtual {
>> > > > >           [[Resets the internal data to 0 or default values.]]
>> > > > >        }
>> > > > > -      dup @pure_virtual {
>> > > > > -         [[Creates a copy of this event.
>> > > > > -
>> > > > > -           The returned event object is similar to the given
>> object
>> > in
>> > > > > most
>> > > > > -           ways except that @.fake will be $true.
>> > > > > -
>> > > > > -           Note: A reference is given to the caller. In order to
>> > avoid
>> > > > > leaks
>> > > > > -           the C API users should call $efl_unref() after use.
>> > > > > -         ]]
>> > > > > -         return: Efl.Input.Event @owned; [[Event copy, marked as
>> > > > @.fake.]]
>> > > > > -      }
>> > > > >        @property device @pure_virtual {
>> > > > >           [[Input device that originated this event.]]
>> > > > >           values {
>> > > > > diff --git a/src/lib/evas/canvas/efl_input_focus.c
>> > > > > b/src/lib/evas/canvas/efl_input_focus.c
>> > > > > index 9350aedb51..e6d273fa5b 100644
>> > > > > --- a/src/lib/evas/canvas/efl_input_focus.c
>> > > > > +++ b/src/lib/evas/canvas/efl_input_focus.c
>> > > > > @@ -112,7 +112,7 @@ _efl_input_focus_efl_input_
>> event_timestamp_get(Eo
>> > > > > *obj EINA_UNUSED,
>> > > > >  }
>> > > > >
>> > > > >  EOLIAN static Efl_Input_Focus *
>> > > > > -_efl_input_focus_efl_input_event_dup(Eo *obj EINA_UNUSED,
>> > > > > Efl_Input_Focus_Data *pd)
>> > > > > +_efl_input_focus_efl_dup_dup(const Eo *obj, Efl_Input_Focus_Data
>> > *pd)
>> > > > >  {
>> > > > >     Efl_Input_Focus_Data *ev;
>> > > > >     Efl_Input_Focus *evt;
>> > > > > diff --git a/src/lib/evas/canvas/efl_input_focus.eo
>> > > > > b/src/lib/evas/canvas/efl_input_focus.eo
>> > > > > index 47c13af1fc..006ab68e80 100644
>> > > > > --- a/src/lib/evas/canvas/efl_input_focus.eo
>> > > > > +++ b/src/lib/evas/canvas/efl_input_focus.eo
>> > > > > @@ -17,7 +17,15 @@ class Efl.Input.Focus(Efl.Object,
>> Efl.Input.Event)
>> > > > >        Efl.Object.destructor;
>> > > > >        Efl.Input.Event.device { get; set; }
>> > > > >        Efl.Input.Event.reset;
>> > > > > -      Efl.Input.Event.dup;
>> > > > > +      Efl.Dup.dup;
>> > > > > +         [[Creates a copy of this event. @Efl.Input.Event.fake is
>> > > $true.
>> > > > > +
>> > > > > +           The returned event object is similar to the given
>> object
>> > in
>> > > > > most
>> > > > > +           ways except that @Efl.Input.Event.fake will be $true.
>> > > > > +
>> > > > > +           Note: A reference is given to the caller. In order to
>> > avoid
>> > > > > leaks
>> > > > > +           the C API users should call $efl_unref() after use.
>> > > > > +         ]]
>> > > > >        Efl.Input.Event.timestamp { get; set; }
>> > > > >     }
>> > > > >  }
>> > > > > diff --git a/src/lib/evas/canvas/efl_input_hold.c
>> > > > > b/src/lib/evas/canvas/efl_input_hold.c
>> > > > > index 8f84793ec5..edb9084766 100644
>> > > > > --- a/src/lib/evas/canvas/efl_input_hold.c
>> > > > > +++ b/src/lib/evas/canvas/efl_input_hold.c
>> > > > > @@ -101,7 +101,7 @@ _efl_input_hold_efl_input_event_reset(Eo *obj,
>> > > > > Efl_Input_Hold_Data *pd)
>> > > > >  }
>> > > > >
>> > > > >  EOLIAN static Efl_Input_Event *
>> > > > > -_efl_input_hold_efl_input_event_dup(Eo *obj EINA_UNUSED,
>> > > > > Efl_Input_Hold_Data *pd)
>> > > > > +_efl_input_hold_efl_dup_dup(const Eo *obj, Efl_Input_Hold_Data
>> *pd)
>> > > > >  {
>> > > > >     Efl_Input_Hold_Data *ev;
>> > > > >     Efl_Input_Hold *evt;
>> > > > > diff --git a/src/lib/evas/canvas/efl_input_hold.eo
>> > > > > b/src/lib/evas/canvas/efl_input_hold.eo
>> > > > > index 66919902cb..8deb3bcd3a 100644
>> > > > > --- a/src/lib/evas/canvas/efl_input_hold.eo
>> > > > > +++ b/src/lib/evas/canvas/efl_input_hold.eo
>> > > > > @@ -13,7 +13,15 @@ class Efl.Input.Hold (Efl.Object,
>> Efl.Input.Event)
>> > > > >        Efl.Object.constructor;
>> > > > >        Efl.Object.destructor;
>> > > > >        Efl.Input.Event.reset;
>> > > > > -      Efl.Input.Event.dup;
>> > > > > +      Efl.Dup.dup;
>> > > > > +         [[Creates a copy of this event. @Efl.Input.Event.fake is
>> > > $true.
>> > > > > +
>> > > > > +           The returned event object is similar to the given
>> object
>> > in
>> > > > > most
>> > > > > +           ways except that @Efl.Input.Event.fake will be $true.
>> > > > > +
>> > > > > +           Note: A reference is given to the caller. In order to
>> > avoid
>> > > > > leaks
>> > > > > +           the C API users should call $efl_unref() after use.
>> > > > > +         ]]
>> > > > >        Efl.Input.Event.timestamp { get; set; }
>> > > > >        Efl.Input.Event.event_flags { get; set; }
>> > > > >        Efl.Input.Event.device { get; set; }
>> > > > > diff --git a/src/lib/evas/canvas/efl_input_key.c
>> > > > > b/src/lib/evas/canvas/efl_input_key.c
>> > > > > index 895caf5598..f417da6e6b 100644
>> > > > > --- a/src/lib/evas/canvas/efl_input_key.c
>> > > > > +++ b/src/lib/evas/canvas/efl_input_key.c
>> > > > > @@ -188,7 +188,7 @@ _efl_input_key_efl_input_event_reset(Eo *obj
>> > > > > EINA_UNUSED, Efl_Input_Key_Data *pd
>> > > > >  }
>> > > > >
>> > > > >  EOLIAN static Efl_Input_Event *
>> > > > > -_efl_input_key_efl_input_event_dup(Eo *obj EINA_UNUSED,
>> > > > > Efl_Input_Key_Data *pd)
>> > > > > +_efl_input_key_efl_dup_dup(const Eo *obj, Efl_Input_Key_Data *pd)
>> > > > >  {
>> > > > >     Efl_Input_Key_Data *ev;
>> > > > >     Efl_Input_Key *evt;
>> > > > > diff --git a/src/lib/evas/canvas/efl_input_key.eo
>> > > > > b/src/lib/evas/canvas/efl_input_key.eo
>> > > > > index 2255cf5ae6..09938b82f1 100644
>> > > > > --- a/src/lib/evas/canvas/efl_input_key.eo
>> > > > > +++ b/src/lib/evas/canvas/efl_input_key.eo
>> > > > > @@ -56,7 +56,15 @@ class Efl.Input.Key (Efl.Object,
>> Efl.Input.Event,
>> > > > > Efl.Input.State, Efl.Input.Eve
>> > > > >        Efl.Object.constructor;
>> > > > >        Efl.Object.destructor;
>> > > > >        Efl.Input.Event.reset;
>> > > > > -      Efl.Input.Event.dup;
>> > > > > +      Efl.Dup.dup;
>> > > > > +         [[Creates a copy of this event. @Efl.Input.Event.fake is
>> > > $true.
>> > > > > +
>> > > > > +           The returned event object is similar to the given
>> object
>> > in
>> > > > > most
>> > > > > +           ways except that @Efl.Input.Event.fake will be $true.
>> > > > > +
>> > > > > +           Note: A reference is given to the caller. In order to
>> > avoid
>> > > > > leaks
>> > > > > +           the C API users should call $efl_unref() after use.
>> > > > > +         ]]
>> > > > >        Efl.Input.Event.timestamp { get; set; }
>> > > > >        Efl.Input.Event.fake { get; }
>> > > > >        Efl.Input.Event.event_flags { get; set; }
>> > > > > diff --git a/src/lib/evas/canvas/efl_input_pointer.c
>> > > > > b/src/lib/evas/canvas/efl_input_pointer.c
>> > > > > index 252f5934a1..fd84f9ba93 100644
>> > > > > --- a/src/lib/evas/canvas/efl_input_pointer.c
>> > > > > +++ b/src/lib/evas/canvas/efl_input_pointer.c
>> > > > > @@ -143,7 +143,7 @@ _efl_input_pointer_efl_input_event_reset(Eo
>> *obj,
>> > > > > Efl_Input_Pointer_Data *pd)
>> > > > >  }
>> > > > >
>> > > > >  EOLIAN static Efl_Input_Event *
>> > > > > -_efl_input_pointer_efl_input_event_dup(Eo *obj EINA_UNUSED,
>> > > > > Efl_Input_Pointer_Data *pd)
>> > > > > +_efl_input_pointer_efl_dup_dup(const Eo *obj,
>> Efl_Input_Pointer_Data
>> > > > *pd)
>> > > > >  {
>> > > > >     Efl_Input_Pointer_Data *ev;
>> > > > >     Efl_Input_Focus *evt;
>> > > > > diff --git a/src/lib/evas/canvas/efl_input_pointer.eo
>> > > > > b/src/lib/evas/canvas/efl_input_pointer.eo
>> > > > > index 1519e93243..878e27f2ae 100644
>> > > > > --- a/src/lib/evas/canvas/efl_input_pointer.eo
>> > > > > +++ b/src/lib/evas/canvas/efl_input_pointer.eo
>> > > > > @@ -161,7 +161,15 @@ class Efl.Input.Pointer (Efl.Object,
>> > > > Efl.Input.Event,
>> > > > > Efl.Input.State)
>> > > > >        Efl.Object.destructor;
>> > > > >        class.destructor;
>> > > > >        Efl.Input.Event.reset;
>> > > > > -      Efl.Input.Event.dup;
>> > > > > +      Efl.Dup.dup;
>> > > > > +         [[Creates a copy of this event. @Efl.Input.Event.fake is
>> > > $true.
>> > > > > +
>> > > > > +           The returned event object is similar to the given
>> object
>> > in
>> > > > > most
>> > > > > +           ways except that @Efl.Input.Event.fake will be $true.
>> > > > > +
>> > > > > +           Note: A reference is given to the caller. In order to
>> > avoid
>> > > > > leaks
>> > > > > +           the C API users should call $efl_unref() after use.
>> > > > > +         ]]
>> > > > >        Efl.Input.Event.timestamp { get; set; }
>> > > > >        Efl.Input.Event.fake { get; }
>> > > > >        Efl.Input.Event.event_flags { get; set; }
>> > > > > diff --git a/src/lib/evas/canvas/efl_vg.eo
>> > > b/src/lib/evas/canvas/efl_vg.
>> > > > eo
>> > > > > index 2d64ade17b..2457c0e36f 100644
>> > > > > --- a/src/lib/evas/canvas/efl_vg.eo
>> > > > > +++ b/src/lib/evas/canvas/efl_vg.eo
>> > > > > @@ -1,6 +1,6 @@
>> > > > >  import eina_types;
>> > > > >
>> > > > > -abstract Efl.VG (Efl.Object, Efl.Gfx, Efl.Gfx.Stack)
>> > > > > +abstract Efl.VG (Efl.Object, Efl.Gfx, Efl.Gfx.Stack, Efl.Dup)
>> > > > >  {
>> > > > >     [[Efl vector graphics abstract class]]
>> > > > >     eo_prefix: efl_vg;
>> > > > > @@ -103,10 +103,6 @@ abstract Efl.VG (Efl.Object, Efl.Gfx,
>> > > Efl.Gfx.Stack)
>> > > > >            @in pos_map: double; [[Interpolate mapping]]
>> > > > >          }
>> > > > >        }
>> > > > > -      dup @const {
>> > > > > -        [[Duplicate vector graphics object]]
>> > > > > -        return: Efl.VG @owned;
>> > > > > -      }
>> > > > >     }
>> > > > >     implements {
>> > > > >        Efl.Object.parent { set; }
>> > > > > @@ -123,5 +119,6 @@ abstract Efl.VG (Efl.Object, Efl.Gfx,
>> > > Efl.Gfx.Stack)
>> > > > >        Efl.Gfx.Stack.stack_above;
>> > > > >        Efl.Gfx.Stack.raise;
>> > > > >        Efl.Gfx.Stack.lower;
>> > > > > +      Efl.Dup.dup;
>> > > > >     }
>> > > > >  }
>> > > > > diff --git a/src/lib/evas/canvas/efl_vg_container.eo
>> > > > > b/src/lib/evas/canvas/efl_vg_container.eo
>> > > > > index 1faad56eda..fbf4add268 100644
>> > > > > --- a/src/lib/evas/canvas/efl_vg_container.eo
>> > > > > +++ b/src/lib/evas/canvas/efl_vg_container.eo
>> > > > > @@ -20,6 +20,6 @@ class Efl.VG.Container (Efl.VG)
>> > > > >        Efl.Object.destructor;
>> > > > >        Efl.VG.bounds_get;
>> > > > >        Efl.VG.interpolate;
>> > > > > -      Efl.VG.dup;
>> > > > > +      Efl.Dup.dup;
>> > > > >     }
>> > > > >  }
>> > > > > diff --git a/src/lib/evas/canvas/efl_vg_gradient.eo
>> > > > > b/src/lib/evas/canvas/efl_vg_gradient.eo
>> > > > > index 78f489ce7f..c6045683b7 100644
>> > > > > --- a/src/lib/evas/canvas/efl_vg_gradient.eo
>> > > > > +++ b/src/lib/evas/canvas/efl_vg_gradient.eo
>> > > > > @@ -6,6 +6,6 @@ abstract Efl.VG.Gradient (Efl.VG, Efl.Gfx.Gradient)
>> > > > >        Efl.Gfx.Gradient.stop { get; set; }
>> > > > >        Efl.Gfx.Gradient.spread { get; set; }
>> > > > >        Efl.VG.interpolate;
>> > > > > -      Efl.VG.dup;
>> > > > > +      Efl.Dup.dup;
>> > > > >     }
>> > > > >  }
>> > > > > diff --git a/src/lib/evas/canvas/efl_vg_gradient_linear.eo
>> > > > > b/src/lib/evas/canvas/efl_vg_gradient_linear.eo
>> > > > > index 3ff3adcb55..4f9ea61d29 100644
>> > > > > --- a/src/lib/evas/canvas/efl_vg_gradient_linear.eo
>> > > > > +++ b/src/lib/evas/canvas/efl_vg_gradient_linear.eo
>> > > > > @@ -7,7 +7,7 @@ class Efl.VG.Gradient.Linear (Efl.VG.Gradient,
>> > > > > Efl.Gfx.Gradient.Linear)
>> > > > >        Efl.Gfx.Gradient.Linear.end { get; set; }
>> > > > >        Efl.VG.bounds_get;
>> > > > >        Efl.VG.interpolate;
>> > > > > -      Efl.VG.dup;
>> > > > > +      Efl.Dup.dup;
>> > > > >        Efl.Object.constructor;
>> > > > >        Efl.Object.destructor;
>> > > > >     }
>> > > > > diff --git a/src/lib/evas/canvas/efl_vg_gradient_radial.eo
>> > > > > b/src/lib/evas/canvas/efl_vg_gradient_radial.eo
>> > > > > index d71af60398..3e3f74f04a 100644
>> > > > > --- a/src/lib/evas/canvas/efl_vg_gradient_radial.eo
>> > > > > +++ b/src/lib/evas/canvas/efl_vg_gradient_radial.eo
>> > > > > @@ -8,7 +8,7 @@ class Efl.VG.Gradient.Radial (Efl.VG.Gradient,
>> > > > > Efl.Gfx.Gradient.Radial)
>> > > > >        Efl.Gfx.Gradient.Radial.focal { get; set; }
>> > > > >        Efl.VG.bounds_get;
>> > > > >        Efl.VG.interpolate;
>> > > > > -      Efl.VG.dup;
>> > > > > +      Efl.Dup.dup;
>> > > > >        Efl.Object.constructor;
>> > > > >        Efl.Object.destructor;
>> > > > >     }
>> > > > > diff --git a/src/lib/evas/canvas/efl_vg_shape.eo
>> > > > > b/src/lib/evas/canvas/efl_vg_shape.eo
>> > > > > index 888ea4590c..a2503986fd 100644
>> > > > > --- a/src/lib/evas/canvas/efl_vg_shape.eo
>> > > > > +++ b/src/lib/evas/canvas/efl_vg_shape.eo
>> > > > > @@ -37,7 +37,7 @@ class Efl.VG.Shape (Efl.VG, Efl.Gfx.Shape)
>> > > > >     implements {
>> > > > >        Efl.VG.bounds_get;
>> > > > >        Efl.VG.interpolate;
>> > > > > -      Efl.VG.dup;
>> > > > > +      Efl.Dup.dup;
>> > > > >        Efl.Object.constructor;
>> > > > >        Efl.Object.destructor;
>> > > > >     }
>> > > > > diff --git a/src/lib/evas/canvas/evas_device.c
>> > > > b/src/lib/evas/canvas/evas_
>> > > > > device.c
>> > > > > index 9c740c0e0a..ab204ace37 100644
>> > > > > --- a/src/lib/evas/canvas/evas_device.c
>> > > > > +++ b/src/lib/evas/canvas/evas_device.c
>> > > > > @@ -475,7 +475,7 @@ _evas_device_cleanup(Evas *eo_e)
>> > > > >     /* If the device is deleted, _del_cb will remove the device
>> > > > >      * from the devices list. Ensure we delete them only once, and
>> > only
>> > > > if
>> > > > > this
>> > > > >      * Evas is the owner, otherwise we would kill external
>> references
>> > > > (eg.
>> > > > > -    * from efl_input_dup()). */
>> > > > > +    * from efl_dup()). */
>> > > > >  again:
>> > > > >     e->devices_modified = EINA_FALSE;
>> > > > >     cpy = eina_list_clone(e->devices);
>> > > > > diff --git a/src/lib/evas/canvas/evas_events.c
>> > > > b/src/lib/evas/canvas/evas_
>> > > > > events.c
>> > > > > index aee416a99a..8011ae3195 100644
>> > > > > --- a/src/lib/evas/canvas/evas_events.c
>> > > > > +++ b/src/lib/evas/canvas/evas_events.c
>> > > > > @@ -465,7 +465,7 @@ _evas_event_source_mouse_down_
>> events(Evas_Object
>> > > > > *eo_obj, Evas *eo_e,
>> > > > >
>> > > > >     if (obj->delete_me || src->delete_me || e->is_frozen) return;
>> > > > >
>> > > > > -   evt = efl_input_dup(parent_ev);
>> > > > > +   evt = efl_dup(parent_ev);
>> > > > >     ev = efl_data_scope_get(evt, EFL_INPUT_POINTER_CLASS);
>> > > > >     if (!ev) return;
>> > > > >
>> > > > > @@ -574,7 +574,7 @@ _evas_event_source_mouse_move_
>> events(Evas_Object
>> > > > > *eo_obj, Evas *eo_e,
>> > > > >
>> > > > >     if (obj->delete_me || src->delete_me || e->is_frozen) return;
>> > > > >
>> > > > > -   evt = efl_input_dup(parent_ev);
>> > > > > +   evt = efl_dup(parent_ev);
>> > > > >     ev = efl_data_scope_get(evt, EFL_INPUT_POINTER_CLASS);
>> > > > >     if (!ev) return;
>> > > > >
>> > > > > @@ -787,7 +787,7 @@ _evas_event_source_mouse_up_events(Evas_Object
>> > > > > *eo_obj, Evas *eo_e,
>> > > > >
>> > > > >     if (obj->delete_me || src->delete_me || e->is_frozen) return;
>> > > > >
>> > > > > -   evt = efl_input_dup(parent_ev);
>> > > > > +   evt = efl_dup(parent_ev);
>> > > > >     ev = efl_data_scope_get(evt, EFL_INPUT_POINTER_CLASS);
>> > > > >     if (!ev) return;
>> > > > >
>> > > > > @@ -877,7 +877,7 @@ _evas_event_source_wheel_events(Evas_Object
>> > > *eo_obj,
>> > > > > Evas *eo_e,
>> > > > >
>> > > > >     if (obj->delete_me || src->delete_me ||
>> > > obj->layer->evas->is_frozen)
>> > > > > return;
>> > > > >
>> > > > > -   evt = efl_input_dup(parent_ev);
>> > > > > +   evt = efl_dup(parent_ev);
>> > > > >     ev = efl_data_scope_get(evt, EFL_INPUT_POINTER_CLASS);
>> > > > >     if (!ev) return;
>> > > > >
>> > > > > @@ -936,7 +936,7 @@ _evas_event_source_multi_down_
>> > > > > events(Evas_Object_Protected_Data *obj, Evas_Publi
>> > > > >
>> > > > >     if (obj->delete_me || src->delete_me ||
>> > > obj->layer->evas->is_frozen)
>> > > > > return;
>> > > > >
>> > > > > -   evt = efl_input_dup(parent_ev);
>> > > > > +   evt = efl_dup(parent_ev);
>> > > > >     ev = efl_data_scope_get(evt, EFL_INPUT_POINTER_CLASS);
>> > > > >     if (!ev) return;
>> > > > >
>> > > > > @@ -1002,7 +1002,7 @@ _evas_event_source_multi_up_
>> > > > > events(Evas_Object_Protected_Data *obj, Evas_Public_
>> > > > >
>> > > > >     if (obj->delete_me || src->delete_me ||
>> > > obj->layer->evas->is_frozen)
>> > > > > return;
>> > > > >
>> > > > > -   evt = efl_input_dup(parent_ev);
>> > > > > +   evt = efl_dup(parent_ev);
>> > > > >     ev = efl_data_scope_get(evt, EFL_INPUT_POINTER_CLASS);
>> > > > >     if (!ev) return;
>> > > > >
>> > > > > @@ -1062,7 +1062,7 @@ _evas_event_source_multi_move_
>> > > > > events(Evas_Object_Protected_Data *obj, Evas_Publi
>> > > > >
>> > > > >     if (obj->delete_me || src->delete_me || e->is_frozen) return;
>> > > > >
>> > > > > -   evt = efl_input_dup(parent_ev);
>> > > > > +   evt = efl_dup(parent_ev);
>> > > > >     ev = efl_data_scope_get(evt, EFL_INPUT_POINTER_CLASS);
>> > > > >     if (!ev) return;
>> > > > >
>> > > > > @@ -1176,7 +1176,7 @@ _evas_event_source_mouse_in_
>> events(Evas_Object
>> > > > > *eo_obj, Evas *eo_e,
>> > > > >     Evas_Pointer_Data *pdata;
>> > > > >
>> > > > >     if (obj->delete_me || src->delete_me || e->is_frozen) return;
>> > > > > -   evt = efl_input_dup(parent_ev);
>> > > > > +   evt = efl_dup(parent_ev);
>> > > > >
>> > > > >     ev = efl_data_scope_get(evt, EFL_INPUT_POINTER_CLASS);
>> > > > >     if (!ev) return;
>> > > > > @@ -1267,7 +1267,7 @@ _evas_event_source_mouse_out_
>> events(Evas_Object
>> > > > > *eo_obj, Evas *eo_e,
>> > > > >
>> > > > >     if (obj->delete_me || src->delete_me || e->is_frozen) return;
>> > > > >
>> > > > > -   evt = efl_input_dup(parent_ev);
>> > > > > +   evt = efl_dup(parent_ev);
>> > > > >     ev = efl_data_scope_get(evt, EFL_INPUT_POINTER_CLASS);
>> > > > >     if (!ev) return;
>> > > > >
>> > > > > @@ -1594,7 +1594,7 @@ _post_up_handle(Evas_Public_Data *e,
>> > > > > Efl_Input_Pointer *parent_ev,
>> > > > >     int event_id;
>> > > > >
>> > > > >     /* Duplicating UP event */
>> > > > > -   evt = efl_input_dup(parent_ev);
>> > > > > +   evt = efl_dup(parent_ev);
>> > > > >     ev = efl_data_scope_get(evt, EFL_INPUT_POINTER_CLASS);
>> > > > >     if (!ev) return;
>> > > > >
>> > > > > @@ -1982,7 +1982,7 @@ _canvas_event_feed_mouse_wheel_internal(Eo
>> > > *eo_e,
>> > > > > Efl_Input_Pointer_Data *pe)
>> > > > >
>> > > > >     event_id = _evas_object_event_new();
>> > > > >
>> > > > > -   evt = efl_input_dup(pe->eo);
>> > > > > +   evt = efl_dup(pe->eo);
>> > > > >     ev = efl_data_scope_get(evt, EFL_INPUT_POINTER_CLASS);
>> > > > >     if (!ev) return;
>> > > > >
>> > > > > diff --git a/src/lib/evas/canvas/evas_vg_container.c
>> > > > > b/src/lib/evas/canvas/evas_vg_container.c
>> > > > > index b89d702369..907d4287f7 100644
>> > > > > --- a/src/lib/evas/canvas/evas_vg_container.c
>> > > > > +++ b/src/lib/evas/canvas/evas_vg_container.c
>> > > > > @@ -152,17 +152,17 @@ _efl_vg_container_efl_vg_interpolate(Eo
>> *obj,
>> > > > >  }
>> > > > >
>> > > > >  EOLIAN static Efl_VG *
>> > > > > -_efl_vg_container_efl_vg_dup(const Eo *obj, Efl_VG_Container_Data
>> > > *pd)
>> > > > > +_efl_vg_container_efl_dup_dup(const Eo *obj,
>> Efl_VG_Container_Data
>> > > *pd)
>> > > > >  {
>> > > > >     Eina_List *l;
>> > > > >     Efl_VG *child;
>> > > > >     Efl_VG *cn = NULL;
>> > > > >
>> > > > > -   cn = efl_vg_dup(efl_super(obj, MY_CLASS));
>> > > > > +   cn = efl_dup(efl_super(obj, MY_CLASS));
>> > > > >     EINA_LIST_FOREACH(pd->children, l, child)
>> > > > >       {
>> > > > >          // parent_set adds the new node to the list of children of
>> > cn
>> > > > > -        efl_parent_set(efl_vg_dup(child), cn);
>> > > > > +        efl_parent_set(efl_dup(child), cn);
>> > > > >       }
>> > > > >     return cn;
>> > > > >  }
>> > > > > diff --git a/src/lib/evas/canvas/evas_vg_gradient.c
>> > > > > b/src/lib/evas/canvas/evas_vg_gradient.c
>> > > > > index db59b1b0fc..10db4e3f06 100644
>> > > > > --- a/src/lib/evas/canvas/evas_vg_gradient.c
>> > > > > +++ b/src/lib/evas/canvas/evas_vg_gradient.c
>> > > > > @@ -97,12 +97,12 @@ _efl_vg_gradient_efl_vg_interpolate(Eo *obj,
>> > > > >  }
>> > > > >
>> > > > >  EOLIAN static Efl_VG *
>> > > > > -_efl_vg_gradient_efl_vg_dup(const Eo *obj, Efl_VG_Gradient_Data
>> *pd)
>> > > > > +_efl_vg_gradient_efl_dup_dup(const Eo *obj, Efl_VG_Gradient_Data
>> > *pd)
>> > > > >
>> > > > >  {
>> > > > >     Efl_VG *cn = NULL;
>> > > > >
>> > > > > -   cn = efl_vg_dup(efl_super(obj, MY_CLASS));
>> > > > > +   cn = efl_dup(efl_super(obj, MY_CLASS));
>> > > > >     efl_gfx_gradient_stop_set(cn, pd->colors, pd->colors_count);
>> > > > >     efl_gfx_gradient_spread_set(cn, pd->s);
>> > > > >     return cn;
>> > > > > diff --git a/src/lib/evas/canvas/evas_vg_gradient_linear.c
>> > > > > b/src/lib/evas/canvas/evas_vg_gradient_linear.c
>> > > > > index 3549faf745..c8bfcc2043 100644
>> > > > > --- a/src/lib/evas/canvas/evas_vg_gradient_linear.c
>> > > > > +++ b/src/lib/evas/canvas/evas_vg_gradient_linear.c
>> > > > > @@ -154,11 +154,11 @@ _efl_vg_gradient_linear_efl_
>> vg_interpolate(Eo
>> > > > *obj,
>> > > > >  }
>> > > > >
>> > > > >  EOLIAN static Efl_VG *
>> > > > > -_efl_vg_gradient_linear_efl_vg_dup(const Eo *obj,
>> > > > > Efl_VG_Gradient_Linear_Data *pd)
>> > > > > +_efl_vg_gradient_linear_efl_dup_dup(const Eo *obj,
>> > > > > Efl_VG_Gradient_Linear_Data *pd)
>> > > > >  {
>> > > > >     Efl_VG *cn = NULL;
>> > > > >
>> > > > > -   cn = efl_vg_dup(efl_super(obj, MY_CLASS));
>> > > > > +   cn = efl_dup(efl_super(obj, MY_CLASS));
>> > > > >     efl_gfx_gradient_linear_start_set(cn, pd->start.x,
>> pd->start.y);
>> > > > >     efl_gfx_gradient_linear_end_set(cn, pd->end.x, pd->end.y);
>> > > > >     return cn;
>> > > > > diff --git a/src/lib/evas/canvas/evas_vg_gradient_radial.c
>> > > > > b/src/lib/evas/canvas/evas_vg_gradient_radial.c
>> > > > > index 8108e8ab07..0090550ed4 100644
>> > > > > --- a/src/lib/evas/canvas/evas_vg_gradient_radial.c
>> > > > > +++ b/src/lib/evas/canvas/evas_vg_gradient_radial.c
>> > > > > @@ -174,12 +174,12 @@ _efl_vg_gradient_radial_efl_
>> vg_interpolate(Eo
>> > > > *obj,
>> > > > >
>> > > > >
>> > > > >  EOLIAN static Efl_VG *
>> > > > > -_efl_vg_gradient_radial_efl_vg_dup(const Eo *obj,
>> > > > > Efl_VG_Gradient_Radial_Data *pd)
>> > > > > +_efl_vg_gradient_radial_efl_dup_dup(const Eo *obj,
>> > > > > Efl_VG_Gradient_Radial_Data *pd)
>> > > > >
>> > > > >  {
>> > > > >     Efl_VG *cn = NULL;
>> > > > >
>> > > > > -   cn = efl_vg_dup(efl_super(obj, MY_CLASS));
>> > > > > +   cn = efl_dup(efl_super(obj, MY_CLASS));
>> > > > >     efl_gfx_gradient_radial_focal_set(cn, pd->focal.x,
>> pd->focal.y);
>> > > > >     efl_gfx_gradient_radial_center_set(cn, pd->center.x,
>> > > pd->center.y);
>> > > > >     efl_gfx_gradient_radial_radius_set(cn, pd->radius);
>> > > > > diff --git a/src/lib/evas/canvas/evas_vg_node.c
>> > > > > b/src/lib/evas/canvas/evas_vg_node.c
>> > > > > index dbe4abe7e3..6349555218 100644
>> > > > > --- a/src/lib/evas/canvas/evas_vg_node.c
>> > > > > +++ b/src/lib/evas/canvas/evas_vg_node.c
>> > > > > @@ -716,7 +716,7 @@ _efl_vg_interpolate(Eo *obj,
>> > > > >  }
>> > > > >
>> > > > >  EOLIAN static Efl_VG *
>> > > > > -_efl_vg_dup(const Eo *obj, Efl_VG_Data *pd)
>> > > > > +_efl_vg_efl_dup_dup(const Eo *obj, Efl_VG_Data *pd)
>> > > > >  {
>> > > > >     Efl_VG *cn;
>> > > > >     Efl_VG_Data *cd;
>> > > > > @@ -733,7 +733,7 @@ _efl_vg_dup(const Eo *obj, Efl_VG_Data *pd)
>> > > > >       }
>> > > > >
>> > > > >     if (pd->mask)
>> > > > > -     cd->mask = efl_vg_dup(pd->mask);
>> > > > > +     cd->mask = efl_dup(pd->mask);
>> > > > >
>> > > > >     cd->x = pd->x;
>> > > > >     cd->y = pd->y;
>> > > > > diff --git a/src/lib/evas/canvas/evas_vg_shape.c
>> > > > > b/src/lib/evas/canvas/evas_vg_shape.c
>> > > > > index f2137b0347..b15694eeb3 100644
>> > > > > --- a/src/lib/evas/canvas/evas_vg_shape.c
>> > > > > +++ b/src/lib/evas/canvas/evas_vg_shape.c
>> > > > > @@ -120,7 +120,7 @@ _efl_vg_shape_render_pre(Eo *obj EINA_UNUSED,
>> > > > >     ector_renderer_shape_fill_set(nd->renderer, fill ?
>> fill->renderer
>> > > :
>> > > > > NULL);
>> > > > >     ector_renderer_shape_stroke_fill_set(nd->renderer,
>> stroke_fill ?
>> > > > > stroke_fill->renderer : NULL);
>> > > > >     ector_renderer_shape_stroke_marker_set(nd->renderer,
>> > > stroke_marker ?
>> > > > > stroke_marker->renderer : NULL);
>> > > > > -   efl_gfx_shape_dup(nd->renderer, obj);
>> > > > > +   efl_gfx_path_copy_from(nd->renderer, obj);
>> > > > >     ector_renderer_prepare(nd->renderer);
>> > > > >  }
>> > > > >
>> > > > > @@ -183,21 +183,21 @@ _efl_vg_shape_efl_vg_interpolate(Eo *obj,
>> > > > >
>> > > > >
>> > > > >  EOLIAN static Efl_VG *
>> > > > > -_efl_vg_shape_efl_vg_dup(const Eo *obj, Efl_VG_Shape_Data *pd)
>> > > > > +_efl_vg_shape_efl_dup_dup(const Eo *obj, Efl_VG_Shape_Data *pd)
>> > > > >  {
>> > > > >     Efl_VG *cn = NULL;
>> > > > >     Efl_VG_Shape_Data *cd = NULL;
>> > > > >
>> > > > > -   cn = efl_vg_dup(efl_super(obj, MY_CLASS));
>> > > > > +   cn = efl_dup(efl_super(obj, MY_CLASS));
>> > > > >     cd = efl_data_scope_get(cn, MY_CLASS);
>> > > > >     if (pd->fill)
>> > > > > -     cd->fill = efl_vg_dup(pd->fill);
>> > > > > +     cd->fill = efl_dup(pd->fill);
>> > > > >     if (pd->stroke.fill)
>> > > > > -     cd->stroke.fill = efl_vg_dup(pd->stroke.fill);
>> > > > > +     cd->stroke.fill = efl_dup(pd->stroke.fill);
>> > > > >     if (pd->stroke.marker)
>> > > > > -     cd->stroke.marker = efl_vg_dup(pd->stroke.marker);
>> > > > > +     cd->stroke.marker = efl_dup(pd->stroke.marker);
>> > > > >
>> > > > > -   efl_gfx_shape_dup(cn, obj);
>> > > > > +   efl_gfx_path_copy_from(cn, obj);
>> > > > >     return cn;
>> > > > >  }
>> > > > >
>> > > > > @@ -318,7 +318,7 @@ evas_vg_shape_current_ctrl_get(Eo *obj, double
>> > *x,
>> > > > > double *y)
>> > > > >  EAPI void
>> > > > >  evas_vg_shape_dup(Eo *obj, Eo *dup_from)
>> > > > >  {
>> > > > > -   efl_gfx_shape_dup(obj, dup_from);
>> > > > > +   efl_gfx_path_copy_from(obj, dup_from);
>> > > > >  }
>> > > > >
>> > > > >  EAPI void
>> > > > > diff --git a/src/lib/evas/vg/evas_vg_cache.c
>> > > b/src/lib/evas/vg/evas_vg_
>> > > > > cache.c
>> > > > > index a6c3870d5a..89546e7464 100644
>> > > > > --- a/src/lib/evas/vg/evas_vg_cache.c
>> > > > > +++ b/src/lib/evas/vg/evas_vg_cache.c
>> > > > > @@ -274,7 +274,7 @@ _evas_vg_dup_vg_tree(Vg_File_Data *fd, double
>> w,
>> > > > > double h)
>> > > > >     if (!fd) return NULL;
>> > > > >     if ( !w || !h ) return NULL;
>> > > > >
>> > > > > -   root = efl_vg_dup(fd->root);
>> > > > > +   root = efl_dup(fd->root);
>> > > > >     _apply_transformation(root, w, h, fd);
>> > > > >
>> > > > >     return root;
>> > > > >
>> > > > > --
>> > > > >
>> > > > >
>> > > > >
>> > > > ------------------------------------------------------------
>> > > > ------------------
>> > > > Check out the vibrant tech community on one of the world's most
>> > > > engaging tech sites, Slashdot.org! http://sdm.link/slashdot
>> > > > _______________________________________________
>> > > > enlightenment-devel mailing list
>> > > > [email protected]
>> > > > https://lists.sourceforge.net/lists/listinfo/enlightenment-devel
>> > > >
>> > >
>> > >
>> > >
>> > > --
>> > > Jean-Philippe André
>> > > ------------------------------------------------------------
>> > > ------------------
>> > > Check out the vibrant tech community on one of the world's most
>> > > engaging tech sites, Slashdot.org! http://sdm.link/slashdot
>> > > _______________________________________________
>> > > enlightenment-devel mailing list
>> > > [email protected]
>> > > https://lists.sourceforge.net/lists/listinfo/enlightenment-devel
>> > >
>> >
>> > ------------------------------------------------------------
>> ------------------
>> > Check out the vibrant tech community on one of the world's most
>> > engaging tech sites, Slashdot.org! http://sdm.link/slashdot
>> > _______________________________________________
>> > enlightenment-devel mailing list
>> > [email protected]
>> > https://lists.sourceforge.net/lists/listinfo/enlightenment-devel
>> >
>> --
>> http://andywilliams.me
>> http://ajwillia.ms
>> ------------------------------------------------------------
>> ------------------
>> Check out the vibrant tech community on one of the world's most
>> engaging tech sites, Slashdot.org! http://sdm.link/slashdot
>> _______________________________________________
>> enlightenment-devel mailing list
>> [email protected]
>> https://lists.sourceforge.net/lists/listinfo/enlightenment-devel
>>
>
>
>
> --
> Jean-Philippe André
> ------------------------------------------------------------------------------
> Check out the vibrant tech community on one of the world's most
> engaging tech sites, Slashdot.org! http://sdm.link/slashdot
> _______________________________________________
> enlightenment-devel mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/enlightenment-devel



-- 
Gustavo Sverzut Barbieri
--------------------------------------
Mobile: +55 (16) 99354-9890

------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
enlightenment-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/enlightenment-devel

Reply via email to