Commit Graph

199 Commits

Author SHA1 Message Date
Carsten Haitzler 20ddb3929c evas - handle deleted objects in pointer in list in evas 2014-12-23 14:13:42 +09:00
Jason Gerecke 26c943bac0 Expose device (e.g. pen) axis information to applications
Summary:
This patch set adds the necessary code to expose device axis state to applications. This was primarily written with graphics tablets in mind, which -- in addition to acting like a mouse -- also provide information about pen pressure, tilt, etc. Other devices could potentially benefit from this API as well: touchscreens, joysticks, knob controllers, "spaceballs", etc.

Whenever an update to the device state is recieved, an "Axis update" event is synthesized. This event contains the updated information, typically scaled and normalized to a particular logical range (e.g. zero to one for pressure, -pi to pi radians for angles, etc.). Information about the tool which generated the event is also stored so that applications can disambiguate events from multiple devices (or in the case of multitouch screens, individual fingers).

This API is only wired up for use with X11 at the moment. Support for other backends (e.g. Wayland) should be easy to add for those familiar them.

**Note**: The following is a list of changes from the "v2" patches originally sent to the mailinglist

//Define and implement new Ecore_Event_Axis_Update events//
 * Harcode axis labels instead of including xserver-properties.h
 * Use C89-style comments
 * Use doxygen comments
 * Update comment text to note axes with unbounded/undefined ranges/units
 * Create "Ecore_Axis" and "Ecore_Axis_Label" typedefs
 * Reference typedef'd instead of raw types
 * Adjust how we count through valuators to support tilt/az
 * Add support for tilt and azimuth
 * Tweak memory management in case number of valuators differ
 * Expand TWIST axis normalization to declared range
 * Only normalize TWIST axis if resolution == 1 (wacom bug)
 * Cache label atoms on first use to minimize round-trips

//Implement EVAS_CALLBACK_AXIS_UPDATE event and friends//
 * Update to doxygen comments
 * Update comment text to note axes with unbounded/undefined ranges/units
 * Typedef 'Evas_Axis_Label', 'Evas_Axis'
 * Move typedef for 'Evas_Event_Axis_Update'
 * Reference typedef'd instead of raw types

//Wire the Ecore and Evas implementations of axis update events together//
 * Expose ecore_event_evas_axis_update in Ecore_Input_Evas.h
 * Move ecore_event_evas_axis_update to more logical position

//DEBUG: Add axis update logging to evas-multi-touch.c//
 * Removed from patch set

//Make evas-multi-touch demo use new axis functionality//
 * Have pressure adjust rectangle brightness instead of size
 * Use more available axis data when rendering rectangle (azimuth, tilt, twist)

Test Plan: The evas-multi-touch demo was updated to support axis update events. A graphics tablet was then used to verify that the pressure, azimuth, tilt, and twist data was coming through correctly.

Reviewers: cedric, raster

Subscribers: cedric

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

Conflicts:
	src/lib/ecore_input/Ecore_Input.h

Carsten Haitzler -

** fixed forward enum typedefs (make things unhappy)
** fixed conflict above
** fixed wrong param type for _evas_canvas_event_feed_axis_update()
** fixed @sinces to be 1.13
** fixed formatting/indeting
** fixed order of operation reliance in if's with ()'s to be clear
** fixed functions to be static that should have been
2014-11-25 12:43:15 +09:00
Andrii Kroitor adff9e013d evas_events: fixed keyup with modifier
Summary:
removed check that disallows exact modifiers set.
I.e. if we need Ctrl+s without any other modifiers:

mask = evas_key_modifier_mask_get(obj, "Control");
evas_object_key_grab(obj, "o", mask, ~mask, false);

This works with keydown, but was broken with keyup.

Reviewers: cedric, seoz, Hermet, raster

Subscribers: cedric, reutskiy.v.v

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

Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
Signed-off-by: Carsten Haitzler (Rasterman) <raster@rasterman.com>
2014-09-24 11:43:37 +02:00
Cedric BAIL 563bf84388 evas: let's freeze the canvas, shall we ?
This is a critical performance issue that was introduced during our move
to eo2. This code was still eo1 style so I guess it was just forgotten.
The result is that canvas with large numbers of widget were slower after
the migration.

@fix
2014-09-06 15:10:36 +02:00
Carsten Haitzler 783f81a25f evas - whitespace fix 2014-08-27 12:21:23 +09:00
Tom Hacohen 7f3a44894b Evas canvas eolian: Fix namespace and class name for the evas canvas. 2014-06-30 17:47:06 +01:00
Tom Hacohen 0fc3279db9 Efl: Update code to use the new class names generated by eolian. 2014-06-03 11:28:01 +01:00
Tom Hacohen d9263e6571 Eo base: rename event_freeze_get to event_freeze_count_get.
This is needed because of a possible clash between the method event_freeze
and the property event_freeze with bindings.
2014-06-02 12:50:23 +01:00
Gwanglim Lee ca443ac152 Fixed a problem with e wl server that sent invalid key value to wl client.
Summary:
This problem occurred due to xkb_keysym_t value of libxkbcommon by e wl server.
e wl server should pass keycode from evdev input device on to wl client.
In order that e wl server receives valid keycode Ecore_Event_Key should have
an extended data member. This patch should be applied with server side patch.

@fix

Test Plan: run e wl server -> create wl client -> type keys

Reviewers: raster, devilhorns, zmike

CC: cedric

Differential Revision: https://phab.enlightenment.org/D712
2014-04-14 09:41:43 -04:00
Tom Hacohen 35525a53e0 Adjust eo_do calls to work with the eo2 api. 2014-04-10 04:20:21 +01:00
Daniel Zaoui 103e89a04a Eolian: Integration of Evas 2014-03-12 10:57:28 +02:00
Daniel Zaoui f22bd9e6ee Eolian: Integration of Evas Object.
const have been added in object parameter of two legacy APIs to fit
Eolian generated files.
Since these functions retrieve information from object, it is logic that
the object would be const.
2014-03-12 10:57:28 +02:00
Carsten Haitzler 79e6918f00 formatting - fix 2014-01-10 19:58:21 +09:00
ChunEon Park a7c51c4d39 evas/event - fix the inccorect event hit area.
cedriccccccccccccccccccccccccccc!!!!!!!!!!!!!!!!!!
2013-12-04 01:04:21 +09:00
Cedric Bail a969459b0b evas: simplify logic for better readability.
This also should solve some complain from clang static analyzer.
2013-11-28 17:03:32 +09:00
Daniel Zaoui 208c424238 Evas: Add API to access private function
We need a function in DnD for the overlapping feature to retrieve all
the objects at a specific position.
A private function exists in Evas (evas_event_objects_event_list) for
that purpose.
We need an access to this function for Elementary but we don't
want the is_frozen flag to be checked.
2013-10-21 19:03:24 +03:00
WooHyun Jung d2da97c75b evas_event: Nomally, the point's state is maintained POINT_MOVE before it is released. 2013-08-28 13:40:27 +09:00
Cedric Bail 33372313a1 evas: try to also cancel multi button to. 2013-08-27 16:52:24 +09:00
Chris Michael ff60a233d2 Fix unintended operator precedence... I do believe != 4 is what was
wanted here...Or (!(ob->map->cur.map->count == 4)) ... but not much
difference either way ;)

NB: Fixes Coverity CID1039673

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2013-07-08 08:22:23 +01:00
Sebastian Dransfeld 51023d2d4f evas: Keep sane name for public header
Evas_Common.h should be used for the public header, and rather rename
evas_common.h internal header to another name.

Sa:
Evas_Common_Header.h -> Evas_Common.h
evas_common.h -> evas_common_private.h

Shouldn't have both Evas_Common.h and evas_common.h because of case
insensitive filesystems.
2013-06-20 12:53:29 +02:00
Rafael Antognolli cf9d3c90f5 Ecore/Evas: Add evas_event_input_multi_down/up().
These events (from multi-touch) also have information about the mouse
pointer position, so they must be translated by the framespace too.
2013-05-08 16:50:15 -03:00
Rafael Antognolli f490c4e5aa evas/events: Add evas_event_input_multi_move().
Same as evas_event_input_mouse_move, but for multi_move.
2013-05-03 17:19:13 -03:00
Rafael Antognolli 4b9a80a063 ecore/evas events: Use evas_event_input_mouse_move to report events.
Ecore_Evas_Input should use this function to report mouse move events.
The previous used function should be used to refeed events, or to
artificially feed mouse move events to the canvas. Basically every other
feed_mouse_move use case that is not an event from the input system.
2013-05-03 16:45:33 -03:00
Rafael Antognolli f09e493bc2 evas/events: Add evas_event_input_mouse_move().
This function should be used internally by the input system
(Ecore_Evas_Input) to feed Evas with move events. The x,y event info is
relative to the base of the window/surface, instead of the 0,0 of the
canvas.

This case only happens for now under Wayland, where the 0,0 of the
canvas is translated due to the window decorations that are drawn by the
client.
2013-05-03 16:45:33 -03:00
Carsten Haitzler f8c9a8d167 revert the revert... damn you git!
Revert "Revert "Efl: replace eo_data_get for objects data referencing.""

This reverts commit b64a2994b3.
2013-05-02 16:47:16 +09:00
Carsten Haitzler b64a2994b3 Revert "Efl: replace eo_data_get for objects data referencing."
This reverts commit 654a3f5f94.
2013-05-02 14:17:19 +09:00
Daniel Zaoui 654a3f5f94 Efl: replace eo_data_get for objects data referencing. 2013-05-01 10:37:08 +03:00
Rafael Antognolli a1914368a7 evas/framespace: Use more framespace offset on evas events.
The framespace offset must be taken into account when searching the list
of objects which received events, since the objects now have their
original position.
2013-04-29 11:29:43 -03:00
Cedric Bail 4151f89e2d evas: correctly initialize and get the bounding box at the right time. 2013-04-07 23:45:23 +09:00
Cedric Bail 7739267d8b evas: bounding box is only relevant to smart object. 2013-04-07 15:11:56 +09:00
Cedric Bail f1dfbc4e0e evas: remove one useless pointer (-30KB). 2013-04-07 14:00:10 +09:00
Rafael Antognolli 8d88a73f68 evas/events: Fix evas_events framespace offset.
Framespace offset adjustment should be applied to every object not
marked with "is_frame".

Additionally, it should be applied only once. Since it is already being
applied on the *_feed_mouse_* functions, there's no need to apply it
again on the _evas_event_source_mouse_* functions, which are called by
the former ones.

Also add the missing adjustment to the feed_mouse_move one.
2013-04-02 14:40:00 -03:00
Tom Hacohen a170683334 Change usage of eo_do_super to the new prototype. 2013-03-18 16:14:18 +00:00
Cedric BAIL d79a2efa39 evas: use Eina_Cow a lot more and we are closer to the memory size of 1.7. 2013-03-13 14:35:25 +09:00
Jaehwan Kim 9885466787 Add missed code. This is related to r83501.
SVN revision: 83938
2013-02-15 06:48:07 +00:00
Jaehwan Kim 2c3b1b4143 Fix the EVAS_CALLBACK_MOUSE_MOVE callback is called even if the grabbed object is invisible by proxy object.
SVN revision: 83501
2013-01-31 05:52:59 +00:00
Jiyoun Park e290dfae93 add info log related with mouse down/up
SVN revision: 83351
2013-01-26 09:47:21 +00:00
Carsten Haitzler a9eeda6300 paranoia++ -> if g->object is null - dont use it. :/
SVN revision: 83337
2013-01-26 02:34:59 +00:00
Cedric BAIL 3070dfac2d efl: move Evas_Object map data to there own Eina_Cow pointer.
NOTE: Overall speedup of 7%. No benchmark on memory consumption yet
as they are still running ask me directly to get the number later
today.


SVN revision: 83052
2013-01-22 03:56:00 +00:00
Cedric BAIL 3e7e37630f efl: group more map stuff in the same sub structure.
SVN revision: 83034
2013-01-21 09:36:19 +00:00
Cedric BAIL 5ae84c97ce efl: use new eina_cow macro to clean stuff a little.
SVN revision: 83026
2013-01-21 03:12:39 +00:00
Cedric BAIL 4c828392da efl: roll in first use of Eina_Cow for Evas_Object.proxy.
Expedite biggest test memory win 100KB, average 10KB.
No slow down in proxy test (+/-3%). Speed up in most other
case (average speed up is +5%), likely due to much more
cache hit.

Elementary test show a win between 100KB to 600KB depending
on the test you are considering.

Now, you can see how I intend to use Eina_Cow and the expected
win we can have from it. I don't intend to do more for the
rest of the week so you have time to comment.


SVN revision: 82924
2013-01-17 07:21:06 +00:00
Leandro Dorileo e2ce20e9a4 evas: add event source evas object
This patch introduces fields to event Evas_Event_Mouse_* structures
to hold the event source evas object in case of evas source events
propagation.


SVN revision: 82138
2013-01-04 01:55:07 +00:00
Daniel Zaoui 25ea899dfa Some KlocWork fixes.
Signed-off-by: Daniel Zaoui <daniel.zaoui@samsung.com>

SVN revision: 80211
2012-12-05 06:25:49 +00:00
ChunEon Park b313edd3e4 evas/event - don't transform the output in the source events.
and use the Point structure for clean code.

Signed-Off-By: Leandro Dorileo<dorileo@profusion.mobi>
Signed-Off-By: ChunEon Park<hermet@hermet.pe.kr>



SVN revision: 79224
2012-11-13 10:59:38 +00:00
ChunEon Park 9cf4d766ab evas/map - Don't extrapolate outside coords unsafely from map_coords_get()
Don't know why is it actually needed.



SVN revision: 79214
2012-11-13 10:15:29 +00:00
ChunEon Park 1bd3bbfdd3 evas/event - add the xy origin to object when coords are transformed
Signed-Off-By: Leandro Dorileo<dorileo@profusioin.mobi>



SVN revision: 79098
2012-11-10 12:52:00 +00:00
Christopher Michael ae12f5efa9 Fix shadowed variable warnings.
Signed-off-by: Christopher Michael <cpmichael1@comcast.net>

SVN revision: 79032
2012-11-09 17:54:00 +00:00
Vincent Torri c15e9c6575 merge: and now Evas
I've tested make -j 3 install and it works nicely

I've tested expedite with software and opengl xlib,
and it works. Not tested other engines, so please
report any problems (engines or other) on the ML.

TODO: examples and tests, I'll add them later

ISSUE: Eina_Unicode size check. It indirectly depends on
       eina_config.h, which is created at the end of the
       configure script. So its size is always 0. I don't
       know how that size is used, so I can't do a lot,
       for now.


SVN revision: 78895
2012-11-04 11:51:42 +00:00