platform/upstream/libinput.git
10 years agoevdev: reuse code for device removal
Tiago Vignatti [Tue, 27 Mar 2012 18:26:01 +0000 (21:26 +0300)]
evdev: reuse code for device removal

Just like device_added, now the routines to close the compositor and vt switch
leave are using the same code to remove a device.

This patch also closes properly a mtdev device, bug spotted by Christopher
Michael.

Signed-off-by: Tiago Vignatti <tiago.vignatti@intel.com>
10 years agoHook up axis events.
Scott Moreau [Thu, 22 Mar 2012 16:47:01 +0000 (10:47 -0600)]
Hook up axis events.

10 years agoevdev: fix input lag when processing input from output repaint
Ander Conselvan de Oliveira [Tue, 20 Mar 2012 23:52:57 +0000 (19:52 -0400)]
evdev: fix input lag when processing input from output repaint

When the compositor is in a repaint cycle, input is processed only once
per frame. However, a call to evdev_input_device_data() would handle at
most 8 events at time. When there was more than 8 events pending for a
given frame, input lag would occur. This was most visible with multi
touch input.

This patch changes the evdev_input_device_data() so that it will handle
all the events available in the fd. In order to do that, the fd is put
in non-blocking mode, so that it is possible to loop on read and stop
on EAGAIN instead of blocking.

10 years agoevdev: use mtdev for multitouch devices
Tiago Vignatti [Fri, 16 Mar 2012 20:33:03 +0000 (17:33 -0300)]
evdev: use mtdev for multitouch devices

mtdev library translates all multitouch based devices to the slotted evdev
protocol. It provides an uniform interface for Weston, which eases mt
implementation when dealing with a big variety of devices.

Weston on drm now directly depends on such library.

Signed-off-by: Tiago Vignatti <tiago.vignatti@intel.com>
Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>
10 years agocompositor: Move input devices to their own event loop
Kristian Høgsberg [Mon, 5 Mar 2012 22:49:30 +0000 (17:49 -0500)]
compositor: Move input devices to their own event loop

First step towards only handling input at repaint time.

10 years agoRevert "weston: Drop priviledges early, and seteuid when needed"
Kristian Høgsberg [Tue, 24 Jan 2012 17:37:17 +0000 (12:37 -0500)]
Revert "weston: Drop priviledges early, and seteuid when needed"

This reverts commit fc6ccb868fa735ee9c6592806f381aa1262bf0b2.

We still need root permissions for drmDrop/SetMaster.  Without
integration with ConsoleKit or systemd we also don't have access
to /dev/dri/cardX in the case where we open a new VT.

10 years agoweston: Drop priviledges early, and seteuid when needed
Benjamin Franzke [Tue, 24 Jan 2012 15:37:15 +0000 (16:37 +0100)]
weston: Drop priviledges early, and seteuid when needed

10 years agoevdev: fix uninitialised pointer value
Tiago Vignatti [Fri, 20 Jan 2012 16:47:46 +0000 (18:47 +0200)]
evdev: fix uninitialised pointer value

==30224== Conditional jump or move depends on uninitialised value(s)
==30224==    at 0x40EE3A0: evdev_flush_motion (evdev.c:284)
==30224==    by 0x40EE6DC: evdev_input_device_data (evdev.c:352)
==30224==    by 0x4034710: wl_event_source_fd_dispatch (event-loop.c:76)
==30224==    by 0x4035171: wl_event_loop_dispatch (event-loop.c:462)
==30224==    by 0x4032F76: wl_display_run (wayland-server.c:785)
==30224==    by 0x8050972: main (compositor.c:2183)

Signed-off-by: Tiago Vignatti <tiago.vignatti@intel.com>
10 years agoevdev: Drop noisy debug messages on vt swtich
Kristian Høgsberg [Mon, 16 Jan 2012 15:54:07 +0000 (10:54 -0500)]
evdev: Drop noisy debug messages on vt swtich

10 years agoevdev: Correct warning on missing input device
Olivier Le Thanh Duong [Sat, 14 Jan 2012 14:57:34 +0000 (15:57 +0100)]
evdev: Correct warning on missing input device

10 years agoevdev: warn about missing input devices
Pekka Paalanen [Thu, 5 Jan 2012 14:41:21 +0000 (16:41 +0200)]
evdev: warn about missing input devices

Usually there should be at least one input device, when Weston starts
up, or is reactivated by a VT switch. Add a nice warning, in case there
are no input devices.

This is to give a clue to users who happen to try Weston on DRM, and
do not get any response.

Add also a message to another failure case, that may lead to missing
input devices.

Signed-off-by: Pekka Paalanen <ppaalanen@gmail.com>
10 years agoRename wayland-compositor to weston
Kristian Høgsberg [Tue, 3 Jan 2012 15:29:47 +0000 (10:29 -0500)]
Rename wayland-compositor to weston

This rename addresses a few problems around the split between core
Wayland and the wayland-demos repository.

1) Initially, we had one big repository with protocol code, sample
compositor and sample clients.  We split that repository to make it
possible to implement the protocol without pulling in the sample/demo
code.  At this point, the compositor is more than just a "demo" and
wayland-demos doesn't send the right message.  The sample compositor
is a useful, self-contained project in it's own right, and we want to
move away from the "demos" label.

2) Another problem is that the wayland-demos compositor is often
called "the wayland compsitor", but it's really just one possible
compositor.  Existing X11 compositors are expected to add Wayland
support and then gradually phase out/modularize the X11 support, for
example.  Conversely, it's hard to talk about the wayland-demos
compositor specifically as opposed to, eg, the wayland protocol or a
wayland compositor in general.

We are also renaming the repo to weston, and the compositor
subdirectory to src/, to emphasize that the main "output" is the
compositor.

10 years agoclients: Add simple-touch client for testing touch events.
Kristian Høgsberg [Thu, 22 Dec 2011 03:54:49 +0000 (22:54 -0500)]
clients: Add simple-touch client for testing touch events.

10 years agoevdev: Store positions for all touch points in the evdev device
Kristian Høgsberg [Thu, 22 Dec 2011 03:18:36 +0000 (22:18 -0500)]
evdev: Store positions for all touch points in the evdev device

We need to store all touchpoint positions so that if we just get an
ABS_MT_POSITION_X or Y event, we can pull the other coordinate from the
cache.  And we need this across invocations of evdev_input_device_data(),
so the accumulator approach doesn't work.

Instead, we go back to the approach of storing all this state in the
evdev device struct and we might as well just move the rel and abs state
there too.

10 years agoevdev: Add ABS_MT_* support for direct touch devices
Tiago Vignatti [Wed, 21 Dec 2011 17:34:09 +0000 (19:34 +0200)]
evdev: Add ABS_MT_* support for direct touch devices

This adds ABS_MT_* support for direct touch devices and notifies
the compositor.  The compositor has a stub for now.

Signed-off-by: Tiago Vignatti <tiago.vignatti@intel.com>
10 years agoevdev: new header file for the driver
Tiago Vignatti [Sun, 18 Dec 2011 23:14:03 +0000 (01:14 +0200)]
evdev: new header file for the driver

Besides the new header file, there's also a change in the main evdev creation
procedure for a more suggestive name (evdev_input_add_devices ->
evdev_input_create). There's no real functional changes in this commit.

Signed-off-by: Tiago Vignatti <tiago.vignatti@intel.com>
10 years agocompositor-drm: remove/add evdev devices when vt switches
Tiago Vignatti [Sun, 18 Dec 2011 22:32:48 +0000 (00:32 +0200)]
compositor-drm: remove/add evdev devices when vt switches

Reported-by: Ran Benite <ran234@gmail.com>
Signed-off-by: Tiago Vignatti <tiago.vignatti@intel.com>
10 years agocompositor-drm: destroy evdev driver properly when finishing compositor
Tiago Vignatti [Sun, 18 Dec 2011 21:52:18 +0000 (23:52 +0200)]
compositor-drm: destroy evdev driver properly when finishing compositor

Signed-off-by: Tiago Vignatti <tiago.vignatti@intel.com>
10 years agoevdev: use a separate function for adding devices
Tiago Vignatti [Sun, 18 Dec 2011 14:47:15 +0000 (16:47 +0200)]
evdev: use a separate function for adding devices

Adds new function evdev_add_devices for adding udev devices. No
functional changes.

Signed-off-by: Tiago Vignatti <tiago.vignatti@intel.com>
10 years agoevdev: run flush_motion only when needed
Tiago Vignatti [Thu, 8 Dec 2011 11:20:46 +0000 (13:20 +0200)]
evdev: run flush_motion only when needed

Signed-off-by: Tiago Vignatti <tiago.vignatti@intel.com>
10 years agoevdev: send old valuator inside event frame when the other is missing
Tiago Vignatti [Thu, 8 Dec 2011 10:18:16 +0000 (12:18 +0200)]
evdev: send old valuator inside event frame when the other is missing

when a motion is being performed on ts device, only one axis can be sent
through the evdev bytestream whereas the other could be omitted. For instance:

   -------------- SYN_REPORT ------------
   type 3 (EV_ABS), code 53 (ABS_MT_POSITION_X), value 22208
   type 3 (EV_ABS), code 58 (ABS_MT_PRESSURE), value 631
   type 3 (EV_ABS), code 0 (ABS_X), value 22208
   -------------- SYN_REPORT ------------

on such case we'd have to send the compositor the old value of Y. Commit
f547bd36 introduced this bug cause it was sending zeroed coordinate and not
the old one.

Signed-off-by: Tiago Vignatti <tiago.vignatti@intel.com>
10 years agoevdev: Silence warning
Kristian Høgsberg [Fri, 2 Dec 2011 11:39:02 +0000 (06:39 -0500)]
evdev: Silence warning

10 years agocompositor: The compositor is now jiust a regular global object
Kristian Høgsberg [Wed, 23 Nov 2011 15:39:34 +0000 (10:39 -0500)]
compositor: The compositor is now jiust a regular global object

We have to provide our own bind callback and add a wlsc_compositor pointer
to wlsc_input_device, but on the whole it's nice cleanup.

10 years agoSimplify evdev_flush_motion() a tiny bit
Kristian Høgsberg [Wed, 23 Nov 2011 00:24:25 +0000 (19:24 -0500)]
Simplify evdev_flush_motion() a tiny bit

10 years agoevdev: fetch absolute coordinates inside flush_motion only
Tiago Vignatti [Tue, 22 Nov 2011 10:05:22 +0000 (12:05 +0200)]
evdev: fetch absolute coordinates inside flush_motion only

Signed-off-by: Tiago Vignatti <tiago.vignatti@intel.com>
10 years agoevdev: remove useless field from device structure
Tiago Vignatti [Mon, 21 Nov 2011 16:29:40 +0000 (18:29 +0200)]
evdev: remove useless field from device structure

We'll want to enhance later the driver regarding the tool being used, but for
now just remove unused bits.

Signed-off-by: Tiago Vignatti <tiago.vignatti@intel.com>
10 years agoevdev: reset accumulator inside evdev_flush_motion
Tiago Vignatti [Mon, 21 Nov 2011 15:59:31 +0000 (17:59 +0200)]
evdev: reset accumulator inside evdev_flush_motion

Signed-off-by: Tiago Vignatti <tiago.vignatti@intel.com>
10 years agoevdev: use a separate structure to denote accumulated motion events
Tiago Vignatti [Mon, 21 Nov 2011 15:40:30 +0000 (17:40 +0200)]
evdev: use a separate structure to denote accumulated motion events

Signed-off-by: Tiago Vignatti <tiago.vignatti@intel.com>
10 years agoevdev: use a separate struct for abs information
Tiago Vignatti [Mon, 21 Nov 2011 14:39:55 +0000 (16:39 +0200)]
evdev: use a separate struct for abs information

Signed-off-by: Tiago Vignatti <tiago.vignatti@intel.com>
10 years agoevdev: Reset accumulate values when we flush motion events
Kristian Høgsberg [Fri, 18 Nov 2011 15:42:34 +0000 (10:42 -0500)]
evdev: Reset accumulate values when we flush motion events

Otherwise we end up reporting all motion events twice.

10 years agoevdev: fix order of events being sent to the compositor
Tiago Vignatti [Fri, 18 Nov 2011 12:56:58 +0000 (14:56 +0200)]
evdev: fix order of events being sent to the compositor

Signed-off-by: Tiago Vignatti <tiago.vignatti@intel.com>
10 years agoevdev: remove signed value checks
Tiago Vignatti [Thu, 10 Nov 2011 12:47:30 +0000 (14:47 +0200)]
evdev: remove signed value checks

Very likely that 2.4 kernels won't be used with Wayland compositor so the
check for signal value is pretty much useless.

It's okay to change e->value inside evdev_process_absolute_motion_touchpad
given it's not used later on, and I also rather not touch this snip because it
will be changed when multi-touch support arrives.

Signed-off-by: Tiago Vignatti <tiago.vignatti@intel.com>
10 years agoevdev: Simplify error path for device creation
Tiago Vignatti [Fri, 28 Oct 2011 17:15:25 +0000 (13:15 -0400)]
evdev: Simplify error path for device creation

Signed-off-by: Tiago Vignatti <tiago.vignatti@intel.com>
10 years agoevdev: Delete unused fields from evdev_input_device
Tiago Vignatti [Fri, 28 Oct 2011 17:09:42 +0000 (13:09 -0400)]
evdev: Delete unused fields from evdev_input_device

Signed-off-by: Tiago Vignatti <tiago.vignatti@intel.com>
10 years agoevdev: Add hotplug support
Tiago Vignatti [Fri, 28 Oct 2011 17:05:06 +0000 (13:05 -0400)]
evdev: Add hotplug support

Signed-off-by: Tiago Vignatti <tiago.vignatti@intel.com>
10 years agoevdev: Associate touchscreen devices with output up front
Kristian Høgsberg [Thu, 1 Sep 2011 17:25:50 +0000 (13:25 -0400)]
evdev: Associate touchscreen devices with output up front

This isn't going to change over time, so just tracking it in the
evdev device is a little easier.  Also, we need to adjust for the
output position when transforming the device events to screen space.

10 years agoevdev: treat BTN_TOUCH as BTN_LEFT
Tiago Vignatti [Thu, 1 Sep 2011 16:00:05 +0000 (19:00 +0300)]
evdev: treat BTN_TOUCH as BTN_LEFT

idea stolen from xorg evdev.

Signed-off-by: Tiago Vignatti <tiago.vignatti@intel.com>
10 years agoevdev: use last output from compositor to get the screen geometries
Tiago Vignatti [Thu, 1 Sep 2011 16:00:04 +0000 (19:00 +0300)]
evdev: use last output from compositor to get the screen geometries

Signed-off-by: Tiago Vignatti <tiago.vignatti@intel.com>
10 years agoevdev: organize the code for processing events
Tiago Vignatti [Thu, 1 Sep 2011 16:00:03 +0000 (19:00 +0300)]
evdev: organize the code for processing events

Nothing was touched, just code moved around.

Signed-off-by: Tiago Vignatti <tiago.vignatti@intel.com>
10 years agoevdev: opt out accelerometer type of devices
Tiago Vignatti [Fri, 19 Aug 2011 14:07:40 +0000 (17:07 +0300)]
evdev: opt out accelerometer type of devices

We may want to adjust the protocol later for clients that care for
these devices only, generating a special event.

Signed-off-by: Tiago Vignatti <tiago.vignatti@intel.com>
10 years agoevdev: use a separate function for configuring devices
Tiago Vignatti [Fri, 19 Aug 2011 12:06:20 +0000 (15:06 +0300)]
evdev: use a separate function for configuring devices

No semantical changes.

Signed-off-by: Tiago Vignatti <tiago.vignatti@intel.com>
10 years agoRelative movement with a touchpad and other misc fixes for events
Matt Peterson [Mon, 1 Aug 2011 19:46:29 +0000 (13:46 -0600)]
Relative movement with a touchpad and other misc fixes for events

10 years agoevdev: Only add event devices
Kristian Høgsberg [Thu, 21 Jul 2011 13:46:26 +0000 (06:46 -0700)]
evdev: Only add event devices

10 years agocompositor: Use systemd seats for input devices as well
Kristian Høgsberg [Tue, 19 Jul 2011 23:10:11 +0000 (16:10 -0700)]
compositor: Use systemd seats for input devices as well

10 years agoUpdate return types of event handler functions
Kristian Høgsberg [Fri, 22 Apr 2011 16:27:57 +0000 (12:27 -0400)]
Update return types of event handler functions

Missed this in previous commit.

10 years agoSome kind of support for touchscreen
Kristian Høgsberg [Fri, 14 Jan 2011 19:49:46 +0000 (14:49 -0500)]
Some kind of support for touchscreen

10 years agoSplit out evdev handling to its own file
Kristian Høgsberg [Fri, 14 Jan 2011 19:45:42 +0000 (14:45 -0500)]
Split out evdev handling to its own file

14 years agoSplit native drm part of compositor out
Kristian Høgsberg [Fri, 11 Jun 2010 16:56:24 +0000 (12:56 -0400)]
Split native drm part of compositor out

14 years agoRename wayland-system-compositor back to just compositor
Kristian Høgsberg [Sat, 5 Jun 2010 01:52:02 +0000 (21:52 -0400)]
Rename wayland-system-compositor back to just compositor

15 years agoRename egl-compositor to wayland-system-compositor.
Kristian Høgsberg [Fri, 19 Dec 2008 18:47:53 +0000 (13:47 -0500)]
Rename egl-compositor to wayland-system-compositor.

The wayland-system-compositor is the top-level compositor.  X sessions
or nested Wayland sessions will run as clients of the system compositor.
The system compositor is licensed under the GPL.

15 years agoRewrite input event delivery path.
Kristian Høgsberg [Fri, 12 Dec 2008 04:18:45 +0000 (23:18 -0500)]
Rewrite input event delivery path.

Instead of having the input driver push the events into the core server,
only to have the server call back out to the compositor hooks, the driver now
just calls the compositor directly.  The input drivers are always dependent on
the type of compositor anyway so there was no point in passing the events
through the server.  Now the server is only involved when it's time to actually
send the events to the clients.

15 years agoFix signature for pointer motion event.
Kristian Høgsberg [Wed, 10 Dec 2008 22:31:44 +0000 (17:31 -0500)]
Fix signature for pointer motion event.

15 years agoFeed button events through compositor.
Kristian Høgsberg [Wed, 10 Dec 2008 18:16:50 +0000 (13:16 -0500)]
Feed button events through compositor.

This also generalizes the code to send events to a surface a bit.

15 years agoPut Wayland under the MIT license.
Kristian Høgsberg [Tue, 2 Dec 2008 20:15:01 +0000 (15:15 -0500)]
Put Wayland under the MIT license.

15 years agoConvert touchpad absolute events to relative.
Kristian Høgsberg [Wed, 26 Nov 2008 04:16:31 +0000 (23:16 -0500)]
Convert touchpad absolute events to relative.

15 years agoAdd keyboard input, move input device creation to compositor.
Kristian Høgsberg [Mon, 24 Nov 2008 05:31:49 +0000 (00:31 -0500)]
Add keyboard input, move input device creation to compositor.

15 years agoAdd missing breaks in evdev switch.
Kristian Høgsberg [Mon, 24 Nov 2008 05:13:13 +0000 (00:13 -0500)]
Add missing breaks in evdev switch.

15 years agoRename input.c to evdev.c.
Kristian Høgsberg [Mon, 24 Nov 2008 05:12:20 +0000 (00:12 -0500)]
Rename input.c to evdev.c.

15 years agoInitial commit.
Kristian Høgsberg [Tue, 30 Sep 2008 13:46:10 +0000 (09:46 -0400)]
Initial commit.

This has the basic event loop, and a first cut of the libffi dispatcher.