Patch from a series of patches to rename EAPI symbols to specific
library DSOs.
EAPI was designed to be able to pass
```__attribute__ ((visibility ("default")))``` for symbols with
GCC, which would mean that even if -fvisibility=hidden was used
when compiling the library, the needed symbols would get exported.
MSVC __almost__ works like GCC (or mingw) in which you can
declare everything as export and it will just work (slower, but
it will work). But there's a caveat: global variables will not
work the same way for MSVC, but works for mingw and GCC.
For global variables (as opposed to functions), MSVC requires
correct DSO visibility for MSVC: instead of declaring a symbol as
export for everything, you need to declare it as import when
importing from another DSO and export when defining it locally.
With current EAPI definitions, we get the following example
working in mingw and MSVC (observe it doesn't define any global
variables as exported symbols).
Example 1:
dll1:
```
EAPI void foo(void);
EAPI void bar()
{
foo();
}
```
dll2:
```
EAPI void foo()
{
printf ("foo\n");
}
```
This works fine with API defined as __declspec(dllexport) in both
cases and for gcc defining as
```__atttribute__((visibility("default")))```.
However, the following:
Example 2:
dll1:
```
EAPI extern int foo;
EAPI void foobar(void);
EAPI void bar()
{
foo = 5;
foobar();
}
```
dll2:
```
EAPI int foo = 0;
EAPI void foobar()
{
printf ("foo %d\n", foo);
}
```
This will work on mingw but will not work for MSVC. And that's why
EAPI is the only solution that worked for MSVC.
Co-authored-by: João Paulo Taylor Ienczak Zanette <jpaulotiz@gmail.com>
Co-authored-by: Ricardo Campos <ricardo.campos@expertise.dev>
Co-authored-by: Lucas Cavalcante de Sousa <lucks.sousa@gmail.com>
Wheels are discrete and scroll in clicks, fingers are continuous and scroll
in fractional pixels.
This change causes wheel based scrolling to be returned in "clicks"
instead of "degrees" - allowing us to roll a single menu item with a click.
It also will allow us to reduce the speed of two finger scrolling without
messing up the speed of wheel scrolling.
As ecore_drm_private.h already includes config.h header, we don't need
to include it here in these files also
@fix
Signed-off-by: Chris Michael <cpmichael@osg.samsung.com>
As portions of this code have been derived from existing code in
Weston, we should also be including their copyright/licence text to
give credit.
NB: Fixes T3286
@fix
Signed-off-by: Chris Michael <cpmichael@osg.samsung.com>
When we are sending an event for touch motion, we should be specifing
the modifers in the event structure (not setting them to zero).
@fix
Signed-off-by: Chris Michael <cpmichael@osg.samsung.com>
Summary:
printf %m stringifies and prints errno. I've tried to remove its use
anywhere that the immediately preceding function might not set errno
or is a complicated function for which knowing errno doesn't really
give any useful information.
I've left a few of the drmMode calls because they're just wrappers
around ioctl, which legitimately sets errno.
@fix
Reviewers: zmike, devilhorns
Reviewed By: zmike, devilhorns
Subscribers: cedric, jpeg
Differential Revision: https://phab.enlightenment.org/D3572
When we introduced the usage of floor() in ecore_drm_evdev.c we forgot to
include math.h for it as well as linking against libm. This caused linking
failures on some systems while it still worked on others. Better fix it for
good.
Original patch by aerodynamik.
ref T2953
Summary:
Originally, each keyboard devices could have their own keymap.
The one keyboard's keymap could different with others.
But for this, Ecore_Drm compile a new keymap when a keyboard is connected.
But this is a burden for some people who doesn't manage keymap for each keyboard.
They want to maintain only one keymap for system.
So, I added cached context/keymap and just ref/unref for each keyboard device.
People who want to different keymap for each keyboard just do not set cached
context/keymap. Then Ecore_Drm maintain keymaps about each keyboard devices.
Test Plan:
Connect a keyboard device and watch flow of ioctl.
Originally Ecore_Drm opened xkb data and compile keymap,
but after patch, that ioctl is disppeared.
@feature
Reviewers: raster, devilhorns, ManMower
Reviewed By: devilhorns, ManMower
Subscribers: cedric, input.hacker, ohduna, jpeg
Differential Revision: https://phab.enlightenment.org/D3503
Summary:
Add a new Ecore_Drm API named ecore_drm_device_left_handed_set().
Libinput support various input options. Left handed mode is one of options.
Right-handed people and left-handed people use a mouse
using different button mapping.
So if a left handed option is enabled, libinput change right mouse button and
left mouse button.
So support this option, I added this api using libinput's left handed option.
@feature
Test Plan:
After set left handed mode, left mouse button generate button numbered 3,
and right mouse button generate button numbered 1.
Reviewers: raster, ManMower, devilhorns
Subscribers: ohduna, cedric, jpeg, input.hacker
Differential Revision: https://phab.enlightenment.org/D3431
Summary:
This adds two new APIs to enable/set key remap functionality and
a number of keys to be remapped to the other keys. As of now there is no
api to do this therefore we need to remap using linux utility such as
'setkeycodes'. By adding/calling these apis, each Ecore_Drm_Evdev device
will have its specific key remap hash and we can apply each remapping keys
for each key/keyboard device.
Test Plan:
(1) Enable key remap and set remapping of a key on a specific keyboard device
(2) Plug in the keyboard device and check the key is being remapped or not
(3) Check the other keys are coming normally
(4) Check the the remapping key on a specific keyboard doesn't affect to any other devices
Signed-off-by: Sung-Jin Park <input.hacker@gmail.com>
Reviewers: raster, zmike, gwanglim, ManMower, devilhorns
Subscribers: JHyun, ohduna, cedric, jpeg
Differential Revision: https://phab.enlightenment.org/D3463
Summary: When one pointer moves, we should update the position of other devices.
Test Plan:
(1) Two pointer devices are connected.
(2) Move the cursor to (x, y) position using "device 1".
(3) When you move the cursor using "device 2", the cursor doesn't start from (x, y) position. This causes discontinuous mouse motion.
Reviewers: raster, zmike, gwanglim, stefan_schmidt, devilhorns, ManMower
Reviewed By: devilhorns, ManMower
Subscribers: cedric, Jeon, input.hacker, jpeg
Differential Revision: https://phab.enlightenment.org/D3384
We cannot be sending an ecore_event for mouse move here as it is too
early in the startup process for that too happen. Raising the event
here never gets caught because the ecore_evas has not yet registered
for ecore_input listening.
@fix
Signed-off-by: Chris Michael <cp.michael@samsung.com>
Summary: This patch adds some checks to make sure that we can ignore
key events which are not seat wide state changes.
@fix
Signed-off-by: Chris Michael <cp.michael@samsung.com>
Summary:
ecore-drm touch down handler does not produce ECORE_EVENT_MOUSE_MOVE event.
so, when user touches screen, application can't handle mouse down event correctly.
this fix adds touch_motion event on touch_down event handler.
Reviewers: zmike, cedric, raster, gwanglim, devilhorns
Subscribers: cedric
Differential Revision: https://phab.enlightenment.org/D2427
Summary:
At the first time after finishing booting, the position of mouse cursor is in the
center of screen. But e doesn't know it. ecore_drm should let e know the initial
position of cursor by sending a fake motino event.
Reviewers: devilhorns, ManMower, zmike, raster, gwanglim
Subscribers: cedric
Differential Revision: https://phab.enlightenment.org/D2410
Summary:
This revision fixed using of uninitialized value 'output'.
The usage can cause segmentation fault when it try to refer current_mode
@fix
Reviewers: devilhorns
Subscribers: cedric
Differential Revision: https://phab.enlightenment.org/D2448
Summary:
If an input device is assigned via udev to an output that we can't find
we just assign it to the first output instead.
Reviewers: zmike, devilhorns
Subscribers: cedric
Differential Revision: https://phab.enlightenment.org/D2408
Summary: This is a better way to allow mouse movement across multiple
outputs as this does not require us to fetch output geometry on Every
mouse movement (as before).
@fix
Signed-off-by: Chris Michael <cp.michael@samsung.com>
Summary: When running E-Wl with multiple outputs, we could not
previously move the mouse pointer across to the second output. This
commit fixes that issue.
@fix
Signed-off-by: Chris Michael <cp.michael@samsung.com>
Some fields (eg. data) may not be properly initialized.
Use calloc() instead of malloc() will ensure proper initialization
even if we add more fields.
These fields (data) would even be passed down to Evas as
Evas_Event_Key_Down for instance.
Summary:
Using can result in motion being completely discarded. Since we
only need integer data, we also only actually forward on an event
when the mouse moves more than a full unit.
Reviewers: zmike, devilhorns
Subscribers: cedric
Differential Revision: https://phab.enlightenment.org/D2062
when dealing with non-kbd devices, the seat can be iterated to locate a keyboard
this may or may not accurately set depressed, latched, locked, group values
Summary: When we try to ReleaseDevice of our evdev structure, the
'path' which was getting passed to our logind code was incorrect. This
was due to libinput not providing a function to get the full device
path. We fix this by making some eeze udev calls to find this device
and get the full device path.
@fix
Signed-off-by: Chris Michael <cp.michael@samsung.com>
We check for libinput 06 or higher. In version 0.8 they got an API break
(hopefully the last one before 1.0) which we did not support so far. I have
seen libinput 0.9 used on gentoo and newer ubuntu systems so we should
definitely support them.
Adding a LIBINPUT_HIGHER_08 define to check for this. So far we have only one
location where we need it. Once there is a libinput 1.0 we should remove the
support for older versions.
http://lists.freedesktop.org/archives/wayland-devel/2015-January/019383.html
Summary: This patch adds support to limit the mouse from moving
outside the output dimensions, and fixes coordinate transformation
calls to use the Output from the Input device
@fix
Signed-off-by: Chris Michael <cp.michael@samsung.com>
Summary: This fixes the touch events to actually send button down/up
when the proper touch event occurs
@fix
Signed-off-by: Chris Michael <cp.michael@samsung.com>
Summary: This adds code to handle various touch events (up, down,
motion) so that touchscreen devices can work with ecore_drm.
@feature
Signed-off-by: Chris Michael <cp.michael@samsung.com>
Summary: This ports the input code of ecore_drm to make use of
libinput for handling of devices, events, etc
@feature
Signed-off-by: Chris Michael <cp.michael@samsung.com>