Commit graph

19 commits

Author SHA1 Message Date
Daniel Stone
aa0fb0f49c Convert wl_input_device to wl_seat (and friends)
wl_input_device has been both renamed and split.  wl_seat is now a
virtual object representing a group of logically related input devices
with related focus.

It now only generates one event: to let clients know that it has new
capabilities.  It takes requests which hand back objects for the
wl_pointer, wl_keyboard and wl_touch interfaces it exposes which all
provide the old input interface, just under different names.

Signed-off-by: Daniel Stone <daniel@fooishbar.org>
2012-05-16 14:19:22 -04:00
Daniel Stone
0c20496e1a Input: Convert pointer co-ordinates to signed_24_8
This offers more precision when using devices like tablets, and also for
transformed surfaces.

Signed-off-by: Daniel Stone <daniel@fooishbar.org>
2012-05-08 14:40:46 -04:00
Daniel Stone
3f7048e0e9 Use unsigned for key/button up/down state in grabs
Since we just use it as a simple boolean flag, might as well convert it
to unsigned.

Signed-off-by: Daniel Stone <daniel@fooishbar.org>
2012-05-07 12:15:14 -04:00
Kristian Høgsberg
677c5180e6 data-device: Take away pointer focus when we start a dnd drag 2012-04-13 12:51:40 -04:00
Kristian Høgsberg
a9f951b003 data-device: Record the serial number for the current selection
And reject setting a selection that's older than our current selection.
2012-04-13 12:48:38 -04:00
Kristian Høgsberg
74aec06625 data-device: Clear drag focus when we end the drag-and-drop
Otherwise we'll see a spurious leave event when we start the next dnd.
2012-04-13 10:39:24 -04:00
Kristian Høgsberg
6802eaa68a Introduce wl_signal
This is mostly renaming and consolidating the listener_list pattern
into something more concise and reusable.
2012-04-12 15:52:44 -04:00
Kristian Høgsberg
5535f155d8 Switch protocol to using serial numbers for ordering events and requests
The wayland protocol, as X, uses timestamps to match up certain
requests with input events.  The problem is that sometimes we need to
send out an event that doesn't have a corresponding timestamped input
event.  For example, the pointer focus surface goes away and new
surface needs to receive a pointer enter event.  These events are
normally timestamped with the evdev event timestamp, but in this case,
we don't have a evdev timestamp.  So we have to go to gettimeofday (or
clock_gettime()) and then we don't know if it's coming from the same
time source etc.

However for all these cases we don't need a real time timestamp, we
just need a serial number that encodes the order of events inside the
server.  So we introduce a serial number mechanism that we can use to
order events.  We still need real-time timestamps for actual input
device events (motion, buttons, keys, touch), to be able to reason
about double-click speed and movement speed so events that correspond to user input carry both a serial number and a timestamp.

The serial number also give us a mechanism to key together events that
are "logically the same" such as a unicode event and a keycode event,
or a motion event and a relative event from a raw device.
2012-04-11 22:27:26 -04:00
Pekka Paalanen
4560b6b6b4 server: fix button signedness in wl_grab_interface
wl_input_device::grab_button is unsigned but the button parameter to
wl_grab_interface::button is signed. This lead to a warning in
data-device.c.

The button number is unsigned in the protocol, so make it unsigned in
the wl_grab_interface API, too. Fixes the compiler warning "comparison
between signed and unsigned integer expressions".

Signed-off-by: Pekka Paalanen <ppaalanen@gmail.com>
2012-03-30 10:14:51 -04:00
Ander Conselvan de Oliveira
897a4ec62d data-device: notify the compositor about new drag icons
Let the compositor use a listener to be notified when a new drag icon
is set up.
2012-03-27 16:32:02 -04:00
Kristian Høgsberg
8e2cac7ae4 Add wl_array_for_each 2012-03-04 13:40:49 -05:00
Ander Conselvan de Oliveira
214e343311 Terminate drag if data source is destroyed 2012-03-02 11:45:11 -05:00
Pekka Paalanen
70db367ccc server: fix event sending type mismatches
These were not bugs in practice, because the first (and only) field of
struct wl_surface is struct wl_resource.

Signed-off-by: Pekka Paalanen <ppaalanen@gmail.com>
2012-03-02 18:09:27 +02:00
Pekka Paalanen
5ee70146c6 server: use the event sending wrappers
This exposes some type mismatches that are fixed in the next commit.

Signed-off-by: Pekka Paalanen <ppaalanen@gmail.com>
2012-03-02 18:06:19 +02:00
Ander Conselvan de Oliveira
e7f6c509e2 Fix server crash when a client dies during a drag with an icon
If a client dies during a drag that it started using an icon surface,
the server could crash because the icon surface is not valid anymore.

Fix this by using a destroy listener to reset device->drag_surface to
nil when the surface is destroyed.
2012-03-01 11:52:05 -05:00
Ander Conselvan de Oliveira
cb3e102620 Fix wl_data_offer source destroy listener
The listener function implementation was getting a wrong pointer to the
wl_data_offer object because the resource parameter is actually the
data source and not the data offer.
2012-03-01 11:50:53 -05:00
Scott Moreau
8134e06742 server: Rename wl_grab_interface.
In order to separate pointer and keyboard grabs, we need to
introduce a keyboard grab interface but first we must rename
some generic types to denote which device is holding the grab.

Type renames:

wl_grab_interface -> wl_pointer_grab_interface
wl_grab -> wl_pointer_grab
wl_input_device_start_grab -> wl_input_device_start_pointer_grab
wl_input_device_end_grab -> wl_input_device_end_pointer_grab
2012-02-18 11:51:38 -05:00
Ander Conselvan de Oliveira
7243062f93 data_device: get rid of attach request
In the effort to make everything a regular surface, remove
data_device.attach request. To maintan the functionality, add
an icon surface parameter to data_device.start_drag.

Signed-off-by: Kristian Høgsberg <krh@bitplanet.net>
Signed-off-by: Ander Conselvan de Oliveira <ander.conselvan.de.oliveira@intel.com>
2012-02-16 16:11:44 -05:00
Kristian Høgsberg
b6b3d07c83 Move data device implementation into wayland-server 2012-01-06 11:40:02 -05:00