Commit Graph

2418 Commits

Author SHA1 Message Date
Oleksandr Shcherbina 7e0601c980 evas: Get pixels from rendered 3D scene
Summary:
Implemented interface Efl.Gfx.Buffer functions bufer_map/unmap for Efl.Canvas3D.Scene.
Added function e3d_drawable_texture_rendered_pixels_get to module evas_gl_3d
to getting pixels from FBO. Added wrappers for functions
e3d_drawable_texture_rendered_pixels_get and e3d_drawable_texture_id_get
to have possibility call it through engine functions.

Reviewers: cedric, Hermet, raster, jpeg

Reviewed By: jpeg

Subscribers: jpeg

Differential Revision: https://phab.enlightenment.org/D3978
2016-06-03 14:22:33 +03:00
Jean Guyomarc'h 5b0ddfec38 evas: fix huge memory leak for non-async rendering
So... I had issues with evas-fb engine which was massively leaking,
one image per frame.
After investigating a bit with @cedric on IRC, the reference count
of the cache entries was always 2 before the engine dropped.
So, for each frame with an animation, we could never drop a cache
entry, leading to a trumendous amount of memory leaking.

Now for non-async rendering, we copy the behaviour of
evas_render_pipe_wakeup() which is called in async-mode,
and actually drops a reference in the cache entry.

Fixes T3763
2016-06-03 12:17:12 +02:00
Jean-Philippe Andre b147911bad elm_win: Forward events between window and evas
This does:
1. Forward keyboard events from evas to win
2. Allow feeding external input events

Input events can be faked by apps by simply forging
eo objects of the proper type (key or pointer evt) and
calling eo_event_callback_call().

Such events will be forwarded to the internal Evas, and
some bool flags prevent infinite refeeding loops.

efl_event_dup() returns fake events for this to work.

@feature
2016-06-03 15:29:17 +09:00
Daniel Kolesa b1946ca5d6 eolian: utilize the new void_ptr builtin across eo files
This lets me narrow down the remaining cases of pointers across the EFL.
The void pointers will later need to be reevaluated on per-case basis and
replaced appropriately where possible/feasible.
2016-06-02 13:00:26 +01:00
Jean-Philippe Andre 915e09aed3 Evas: Rename Evas.Rectangle as Efl.Canvas.Rectangle 2016-06-02 18:57:30 +09:00
Jean-Philippe Andre 0505a729e2 Evas: Simplify eo event mechanism
So, I was stupid. I was relying on legacy callbacks to
trigger eo events, which means that only when a legacy
callback was registered would my new eo events be triggered.

Instead, I can pass the eo event desc & info whenever
calling evas_object_event_callback_call().
2016-06-02 14:19:18 +09:00
Jean-Philippe Andre 350b465d22 Evas: Send Efl_Event_Key data to evas objects 2016-06-02 13:31:40 +09:00
Jean-Philippe Andre 95628c1efa Evas: Add storage class for Key events
This is for key up/down events' info.
2016-06-02 13:31:40 +09:00
Tom Hacohen aa6b53a2ae Switch to eo_del() where it should be a del and not an unref
This code was written when eo_del() was removed and eo_unref() was the
recommended practice. Since we added eo_del() back we now need to adjust
this new code accordingly.
2016-06-01 19:27:40 +01:00
Tom Hacohen a6a2338962 Revert "Eo: Remove eo_del() and make eo_unref() the replacement."
This reverts commit 546ff7bbba.

It seems that eo_del() is useful and removing it was creating bugs.
The issue is that the way we defined parents in eo, both the parent and
the programmer share a reference to the object. When we eo_unref() that
reference as the programmer, eo has no way to know it's this specific
reference we are freeing, and not a general one, so in some
circumstances, for example:
eo_ref(child);
eo_unref(child); // trying to delete here
eo_unref(container); // container is deleted here
eo_unref(child); // child already has 0 refs before this point.

We would have an issue with references and objects being freed too soon
and in general, issue with the references.

Having eo_del() solves that, because this one explicitly unparents if
there is a parent, meaning the reference ownership is explicitly taken
by the programmer.

eo_del() is essentially a convenience function around "check if has
parent, and if so unparent, otherwise, unref". Which should be used when
you want to delete an object although it has a parent, and is equivalent
to eo_unref() when it doesn't have one.
2016-06-01 13:33:21 +01:00
JEONGHYUN YUN 26b2e73d56 evas : evas_object_key_grab exclusive option logic is changed.
Summary:
 - added is_active property in Evas_Key_Grab.
 - Evas key down and key up events transferred to active grabs only.
 - If evas grabs has a exclusive grab, other grabs will be deactivated.
 - If a exclusive grab is ungrabbed, remained grabs will be activated.

Reviewers: jypark

Reviewed By: jypark

Subscribers: cedric, jpeg

Differential Revision: https://phab.enlightenment.org/D3996
2016-06-01 17:14:13 +08:30
Oleksandr Shcherbina b43a7f5187 evas: fix recalculation coordinates for pick object from scene in Evas.Canvas3d
Summary:
We did the same for evas_canvas3d_scene_pick(see c850cc0d80),
but forget for evas_canvas3d_scene_exist.

Reviewers: Hermet, raster, cedric

Reviewed By: cedric

Subscribers: jpeg

Differential Revision: https://phab.enlightenment.org/D3973

Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
2016-05-31 14:59:26 -07:00
Oleksandr Shcherbina c6ce60c44e evas: avoid useless manipulation during pick object from scene in Evas.Canvas3d
Summary:
It is logically break cycle in case object is found. In case need pick all objects
that lay in screen ray, we should use evas_canvas3d_scene_pick_member_list_get
function.

Reviewers: Hermet, raster, cedric

Reviewed By: cedric

Subscribers: jpeg

Differential Revision: https://phab.enlightenment.org/D3975

Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
2016-05-31 14:59:26 -07:00
Daniel Kolesa 6fc482aa9b eolian: utilize the new builtin string type across eo files 2016-05-31 16:05:43 +01:00
Jean-Philippe Andre b0a32b0bd0 Efl: Rename Efl.Pointer.Event into Efl.Event.Pointer
Also renames two types: Efl.Pointer.Flags and Efl.Event.Flags
2016-05-31 19:03:04 +09:00
Jean-Philippe Andre 9b4a6ba639 Evas events: Fix a crash
There was an invalid reference used because we changed
legacy event type without resetting eo event info.
Scenario: scroll + click
2016-05-31 19:03:04 +09:00
Jean-Philippe Andre 632ef37226 Evas events: Propagate event flags between eo and legacy
If on_hold or on_scroll is set in an eo callback, the subsequent
calls to the legacy callbacks will also have this flag set.
Inversely the legacy callbacks should affect all subsequent eo
callbacks.

Note: those are just indicative flags.
2016-05-31 19:03:04 +09:00
Jean-Philippe Andre 6832959318 Evas events: Add helper functions to read event info
This adds simple helpers for double/triple click
and on_hold/on_scroll flags.
2016-05-31 19:03:04 +09:00
Jean-Philippe Andre 4381d3a824 Evas events: Store position as double only
This splits pixel and subpixel precision by using
different methods rather than two different storage values.
2016-05-31 19:03:04 +09:00
Jean-Philippe Andre 02716d03c8 Efl event: Remove useless method declaration 2016-05-31 19:03:04 +09:00
Jean-Philippe Andre 0a27c78a33 Evas events: Split pointer events
This is going back to the same idea as legacy. We will have
events such as:
- move
- down
- up
- in
- out
- wheel
- cancel ("new" - very rare)

Now the question is whether/how we should divide "multi" events
which start from the 2nd finger from standard mouse events. The first
multitouch finger should by default look like a mouse event.
2016-05-31 19:03:04 +09:00
Jean-Philippe Andre 1950fb6fde Elm win: Forward pointer events from evas to window
This will allow applications to listen to those events
on the whole window. Necessary since they won't have access
to Evas with EO APIs.
2016-05-31 19:03:04 +09:00
Jean-Philippe Andre c68f71239c Evas events: Add EO APIs for lock & modifiers
This moves Efl.Pointer.Event back to Evas. Originally I wanted
to share this class with Ecore but eventually I didn't need to
do so, since only ecore_evas (which depends on evas) really needs
access to these.

The internal data struct is not moved out of efl (yet?)
2016-05-31 19:03:04 +09:00
Jean-Philippe Andre 2ca159dc58 Evas events: Replace calls to event feed with internal func 2016-05-31 19:03:04 +09:00
Jean-Philippe Andre 4c7272720b Evas events: Pass Efl_Pointer_Event for proxy source events 2016-05-31 19:03:04 +09:00
Jean-Philippe Andre 7658ed7ae3 Evas events: Forward more pointer events
This continues the work started in the previous commit:
forward full event info (Efl_Pointer_Event) from evas to
the upper layers.

This also includes more support for IN and OUT.
2016-05-31 19:03:04 +09:00
Jean-Philippe Andre 37d894abb1 evas: send eo pointer events on mouse move
This is still VERY experimental and not fully done yet.
All other pointer events need to be sent as well.

The legacy event system is used as a transportation mechanism,
as it is too hard to change the logic. This only adds an extra
eo event in case of move. Obviously for performance we might
want to listen to callback_add,del but that's an optimization
for later.

The whole point of sending those pointer events is to carry more
information than can be sent over legacy evas events, and unify
the events in a common format.
2016-05-31 19:03:04 +09:00
Jean-Philippe Andre 1c739cada9 evas_events: Propagate more eo pointer events
This covers mouse in,out,cancel. Axis (joystick) is still
todo.
2016-05-31 19:03:04 +09:00
Jean-Philippe Andre ef843e8801 efl: Simplify pointer event names + add missing
No more difference between touch & mouse.
Add axis, cancel, in and out.
2016-05-31 19:03:04 +09:00
Jean-Philippe Andre f119327495 evas: Move event feed and input to legacy 2016-05-31 19:03:04 +09:00
Jean-Philippe Andre d764d8710a ecore_evas: Feed evas events with eo (down, up) 2016-05-31 19:03:04 +09:00
Jean-Philippe Andre ea8c6e5632 Evas: Extend pointer events and add legacy conversion routines
To be honest, this commit is a bit of a mess since it's a
rebased version of some temporary work patches.
2016-05-31 19:03:04 +09:00
Jean-Philippe Andre c06cdadca2 Evas: Fix compilation warnings (enum implicit cast)
Moving enums to Efl renames them but keeps the value the same.
2016-05-31 19:03:04 +09:00
Jean-Philippe Andre fb35171186 Evas.Canvas: Move some event_feed to legacy
Paving the way to Efl.Pointer.Event...
2016-05-31 19:03:04 +09:00
Jean-Philippe Andre ce5688a388 Evas: EO-ify Evas_Device and partly move to Efl
So, this is not a very clean solution, but this mostly
makes Evas_Device an Eo object of class Efl.Input.Device.
Since evas_device relies on some Evas knowledge (evas
callbacks, canvas private data), it can't be fully moved
to lib/efl/.

Making the input device an interface rather than a class
was also not a great solution, as the goal is to share
the data structure around EFL internals (Ecore and Evas).
2016-05-31 19:03:04 +09:00
Jean Guyomarc'h 5bfaef58f1 evas: fix warning: redefinition of types
Fixes warnings raised by cland such as:
warning: redefinition of typedef 'Efl_VG' is a C11 feature
[-Wtypedef-redefinition]
2016-05-28 22:17:22 +02:00
Carsten Haitzler ecc556c715 evas - use actual smart bounding box not obj geometry for render incl
render inclusion has bene used smart geom not bounding box from actual
objects for inclusion in rendering. use the bounding box to be correct.

@fix
2016-05-25 11:45:16 +09:00
Daniel Kolesa e984e5a11a eolian: remove pointers from complex and class types
Complex types (i.e. list, array, hash, accessor etc.) now do not require
pointers with them anymore (the pointer is implied) and the same goes for
class handles. Eolian now explicitly disallows creating pointers to these
as well. This is the first part of the work to remove pointers from Eolian
completely, with the goal of simplifying the DSL (higher level) and therefore
making it easier for bindings (as well as easier API usage).

@feature
2016-05-23 15:58:33 +01:00
Chris Michael 843ad74adc evas-vg: Don't fetch parent if we are not going to use it
Essentially, this removes a compiler warning wrt 'parent' being set
but not used.

@fix

Signed-off-by: Chris Michael <cpmichael@osg.samsung.com>
2016-05-19 08:43:32 -04:00
Subhransu Mohanty 655ed09ab4 evas: propagate the change to child when object is a vector graphic container
Summary: let me know whats your thought

Reviewers: Hermet, cedric

Subscribers: cedric, jpeg

Differential Revision: https://phab.enlightenment.org/D3893

Signed-off-by: Cedric Bail <cedric@osg.samsung.com>
2016-05-19 02:23:56 -07:00
Subhransu Mohanty a3cdafe9a2 evas: changed the interpolate() implementaion
Reviewers: Hermet, cedric

Reviewed By: cedric

Subscribers: cedric, jpeg

Differential Revision: https://phab.enlightenment.org/D3960

Signed-off-by: Cedric Bail <cedric@osg.samsung.com>
2016-05-19 02:23:56 -07:00
Subhransu Mohanty 74cee52900 evas: fix the ref issue of newly created object in shape_dup() function
Summary:
There are couple of issue.

    By adding the gradient to both parent container as well as to the shape. when we dupe the container it copies twice.
    Usually we create one gradient and set it to multiple shape , in that case when we call dupe() function it is going to make a separate copy for each of the shape.

The patch fixes 1st issue. for 2nd one we need to maybe change the way we implemented dupe function

Reviewers: Hermet, cedric

Reviewed By: cedric

Subscribers: cedric, jpeg

Differential Revision: https://phab.enlightenment.org/D3961

Signed-off-by: Cedric Bail <cedric@osg.samsung.com>
2016-05-19 02:23:56 -07:00
Jean Guyomarc'h 147ef32b2b efl: fix misleading indentation
GCC's -Wmisleading-indentation is complaining...
It is a warning flag introduced in GCC 6.x, and
is enabled by -Wall.
2016-05-18 21:57:02 +02:00
Derek Foreman 72b1997f06 evas: Add wayland dmabuf native surface type
Add the structures required for supporting dmabuf native surfaces
2016-05-18 11:52:24 -05:00
Cedric Bail 75a53ece10 eo: for consistency use object like all our API. 2016-05-18 08:18:04 -07:00
Cedric Bail 45bc4f30eb efl: change name of animator,tick event in C. 2016-05-18 02:20:13 -07:00
Carsten Haitzler 43661180f7 efl - key/data/value/obj attach to eo objects - make these properties
the key data now is a property so they come out in bindings really
nicely like:

  obj.key_data["blah"] = x;

  x = obj.key_data["blah"];

etc.
2016-05-18 02:02:45 +09:00
Daniel Kolesa 7782c0bcb9 eolian: add event_prefix and have classes follow that or eo_prefix by default
Previously events used to use class name as a prefix and ignored eo_prefix
when specified. This is no longer the case. Events follow eo_prefix by default
now. In order to get around this for classes where this is undesirable, a new
field event_prefix was added which takes priority over eo_prefix. If neither
is specified, class name is used like previously.

@feature
2016-05-17 17:50:43 +01:00
Tom Hacohen 546ff7bbba Eo: Remove eo_del() and make eo_unref() the replacement.
We used to have eo_del() as the mirrored action to eo_add(). No longer,
now you just always eo_unref() to delete an object. This change makes it
so the reference of the parent is shared with the reference the
programmer has. So eo_parent_set(obj, NULL) can free an object, and so
does eo_unref() (even if there is a parent).

This means Eo no longer complains if you have a parent during deletion.
2016-05-17 16:23:23 +01:00
Carsten Haitzler 50d5f50589 evas - fix warning comparing agianst wrong enum
fixed enum compare due to efl intefaces changes.
2016-05-15 23:59:14 +09:00