emersion
4135fafecd
seat: guard against button count corruption
...
This is still a compositor bug, and bad events will be sent to clients. We'll
need to track each button separately to handle this in wlroots.
2019-02-28 23:00:57 -05:00
emersion
d425206719
data-device: check if there's a source before sending dnd_finish
...
This could cause a segfault in data_offer_destroy if the offer has version < 3.
2019-02-24 19:40:10 -05:00
emersion
d6de640440
data-device: unbreak wl_data_source.cancel during drag-and-drop
2019-02-20 18:42:34 +01:00
emersion
7d367a9e21
data-offer: send WL_DATA_OFFER_ERROR_INVALID_FINISH
2019-02-20 18:42:34 +01:00
emersion
44ec3afb27
data-device: fix drag cleanup if not started
2019-02-20 18:42:34 +01:00
emersion
6291e84532
data-device: refactor wlr_drag
2019-02-20 18:42:29 +01:00
Drew DeVault
ea28887a23
Merge pull request #1493 from emersion/primary-selection-v1
...
primary-selection-v1: copy from gtk-primary-selection
2019-02-19 08:59:20 -05:00
Markus Ongyerth
fc9838b15e
Prevent NULL dereference in tablet_tool handler
...
In case a tool was removed, but not yet destroyed by the client, the
tool_client's tool can be NULL. We have to check that as well in the
set_cursor handler to prevent using inert resources
2019-02-19 08:51:10 +01:00
Drew DeVault
b455df3b91
Merge pull request #1557 from emersion/inert-offers
...
data-device: make old offers inert before sending selection
2019-02-18 15:27:09 -05:00
emersion
07e1bedb08
data-device: make old offers inert before sending selection
...
Fixes https://github.com/swaywm/wlroots/issues/1383
2019-02-18 16:36:23 +01:00
emersion
81ed1efe4f
xwayland, data-device: fix surface state on unmap
...
This commit makes sure surface->mapped is true when the unmapped event is
emitted. This is necessary because listeners can only damage surfaces that are
mapped. This is similar to the fact that the destroy event is emitted before
any destruction is actually made.
Fixes https://github.com/swaywm/sway/issues/3568
2019-02-18 13:14:35 +01:00
emersion
943e918a96
subsurface: add map/unmap events
...
Fixes https://github.com/swaywm/wlroots/issues/1414
2019-02-17 12:01:15 +01:00
Brian Ashworth
3c9f791d0e
wlr_output: do not modeset to current mode
...
There is no point in modesetting an output to a mode that it is already
set to. Modesetting will cause the output to briefly flicker which is
undesirable for a noop. This prevents modesetting any wlr_output,
regardless of the backend, to it's currently set mode.
2019-02-17 00:12:59 +01:00
Drew DeVault
8b203c28f8
Merge pull request #1548 from emersion/error-invalid-transform
...
surface: error out on invalid transform
2019-02-15 15:28:00 +01:00
Ivan Molodetskikh
b59370088e
Update data-control
2019-02-15 11:58:33 +01:00
emersion
d238cc9f56
surface: error out on invalid transform
2019-02-15 00:50:18 +01:00
Sebastian Krzyszkowiak
69b9e2ae8f
Post protocol error on invalid wl_surface scale
...
Letting the scale be set to 0 causes division by zero errors.
2019-02-15 00:45:12 +01:00
emersion
8163f7e1e2
primary-selection-v1: copy from gtk-primary-selection
2019-02-13 19:28:25 +01:00
Geoff Greer
5c8d2da0a1
Add a wlr_output_set_subpixel()
...
drmModeConnector.subpixel doesn't seem to detect subpixel order on many displays (especially laptops). Allow subpixel order to be manually set.
The corresponding PR for sway adds a subpixel output option: https://github.com/swaywm/sway/pull/3645
Once both are merged, https://github.com/swaywm/sway/issues/3163 will be fixed.
2019-02-13 19:20:29 +01:00
Ivan Molodetskikh
9e49ceb129
data-control: add primary selection support
...
data-control: separate out a data_offer struct
This is a prerequisite to adding primary selection support.
data-control: separate out data_control_source
This is a prerequisite to adding primary selection support, since that
doesn't use wlr_data_source, but rather wlr_primary_selection_source.
Update the data-control protocol
data-control: add primary selection support
Merge create_offer and create_primary_offer
Extract code into data_control_source_destroy()
Fix pointer style
Move resource neutralization to destructor
Store wl_resource in the data_offer
Extract data_offer destruction into a function
2019-02-10 17:12:05 +01:00
Drew DeVault
20d404a091
Merge pull request #1529 from emersion/better-dnd-fix
...
data-device: destroy previous source when starting drag
2019-02-06 14:39:55 +01:00
emersion
7f5967234c
xdg-shell: destroy child popups on unmap
...
It doesn't make sense to keep popups opened when unmapped. We also need to do
so in wlr_xdg_popup_destroy so that popups are destroyed in the correct order.
2019-02-05 19:29:00 +01:00
emersion
556bf3ac31
data-device: destroy previous source when starting drag
...
This supersedes f24e17259e
and
04c9ca4198
. These commits were manually removing
wlr_data_source destroy handlers when starting a new drag. This is error-prone.
Instead, this commit destroys the previous source whenever we start a new drag.
2019-02-05 18:43:06 +01:00
Connor E
c1d0729d9a
Make popup inert when destroyed.
2019-02-04 10:43:51 +01:00
John Chen
f24e17259e
Fix swaywm/sway#3545 .
2019-02-02 14:05:31 +01:00
Drew DeVault
28f11aec31
Merge pull request #1523 from emersion/set-same-selection-crash
...
data-device: fix crash when setting the same selection twice
2019-02-01 09:41:02 +01:00
Drew DeVault
16a93eddfb
Merge pull request #1519 from emersion/dedup-source-mime-type
...
De-duplicate data source MIME types
2019-02-01 09:40:47 +01:00
emersion
f1d3aeff9a
data-device: fix crash when setting the same selection twice
2019-01-31 20:33:48 +01:00
emersion
790f0c52a1
De-duplicate data source MIME types
2019-01-30 22:10:52 +01:00
emersion
7defb30781
relative-pointer-v1: time is in usec, not msec
2019-01-30 21:25:42 +01:00
emersion
29952dee19
data-device: only allow one drag at a time
2019-01-30 15:24:18 +01:00
emersion
d6de329d98
seat: don't send motion if pointer hasn't moved
2019-01-30 15:24:17 +01:00
emersion
c505ce3019
data-device: fix use-after-free on drop
2019-01-30 15:24:14 +01:00
emersion
2624f667bf
Add missing frame events to shell pointer grabs
2019-01-30 10:31:53 +01:00
emersion
75371d2c88
Require libdrm >= 2.4.95
2019-01-29 19:33:38 +01:00
Greg V
9fe8e37961
Implement the pointer-gestures-unstable-v1 protocol
...
This protocol relays touchpad gesture events produced by libinput to
supporting clients (e.g. Evince, Eye of GNOME).
2019-01-28 22:06:36 +01:00
Drew DeVault
018727b1fc
Merge pull request #1503 from emersion/pointer-frame
...
pointer: add a frame event
2019-01-27 10:22:06 -05:00
emersion
5fdf22b5d3
data-control-v1: handle NULL sources in set_selection
2019-01-26 11:25:39 +01:00
emersion
5de26ad8ed
pointer: add a frame event
...
Frame events group logically connected pointer events. It makes sense to make
the backend responsible for sending frame events, since once the events are
split (ie. once the frame events are stripped) it's not easy to figure out
which events belongs to which frame again.
This is also how Weston handles frame events.
Fixes https://github.com/swaywm/wlroots/issues/1468
2019-01-26 11:04:05 +01:00
emersion
a1f9d7ad9e
data-device: keep track of wlr_data_offer in wlr_seat lists
2019-01-24 12:18:41 +01:00
emersion
909b3b16f3
data-device: add wlr_data_offer.type
2019-01-24 12:18:40 +01:00
emersion
3f82eb1853
data-device: make device inert when seat is destroyed
2019-01-24 12:18:39 +01:00
emersion
9d6cb85b2d
seat: simplify data source destroy
2019-01-24 12:18:00 +01:00
emersion
c20d413f8a
data-device: fix missing listener removal
2019-01-24 12:18:00 +01:00
emersion
703a160078
data-control-v1: use new wlr_data_source API
2019-01-24 12:15:18 +01:00
emersion
0040f7089f
data-device: unexport wlr_seat_client_send_selection
2019-01-24 12:15:18 +01:00
emersion
1a2727cc38
data-device: send offer on get_data_device
2019-01-24 12:12:55 +01:00
emersion
84f278eca1
data-device: remove data_source_send_offer
2019-01-24 12:12:55 +01:00
emersion
1150ff13ce
data-device: make sources inert, rename cancel to destroy
2019-01-24 12:12:55 +01:00
emersion
4cb0697e57
data-device, primary-selection: add request_set_selection
...
This makes compositors able to block and/or customize set_selection requests
coming from clients. For instance, it's possible for a compositor to disable
rich selection content (by removing all MIME types except text/plain). This
commit implements the design proposed in [1].
Two new events are added to wlr_seat: request_set_selection and
request_set_primary_selection. Compositors need to listen to these events and
either destroy the source or effectively set the selection.
Fixes https://github.com/swaywm/wlroots/issues/1138
[1]: https://github.com/swaywm/wlroots/issues/1367#issuecomment-442403454
2019-01-24 11:38:23 +01:00
Ian Fan
c41d01306d
wlr_xdg_output_v1: move where name & description are sent
2019-01-22 22:58:52 +01:00
Brian Ashworth
f3ff40a0eb
wlr_xdg_output_v1: only send name/description once
...
The xdg-output protocol states that name and description should only be
sent once per output since they do not change.
2019-01-22 21:53:33 +01:00
emersion
365a75139c
Merge pull request #1485 from emersion/data-device-serial
...
primary-selection: add a serial argument
2019-01-22 20:13:01 +01:00
Ilya Trukhanov
c4ce3d0a49
Check if client understands wl_pointer::frame
...
Fixes a crash in SDL2 applications when using locked pointer.
SDL2 expects a wl_pointer v1 interface and doesn't provide a handler for
the wl_pointer::frame event. This results in a "listener function for
opcode 5 of wl_pointer is NULL" abort in wayland-client.
Tested on Xonotic v0.8.2 with libSDL2 v2.0.9. Xonotic needs to be ran
with "SDL_VIDEODRIVER=wayland xonotic-sdl" for SDL2 to use the wayland
backend.
2019-01-22 19:50:01 +02:00
emersion
06467d2e12
primary-selection: add a serial argument
...
The serial needs to be bumped when X11 clients set the selection, otherwise
some Wayland clients (e.g. GTK) will overwrite it when they gain focus.
2019-01-21 19:23:40 +01:00
emersion
a4eb90315e
Fix indentation in various files
2019-01-21 17:56:19 +01:00
Drew DeVault
d4de2bd708
Merge pull request #1476 from emersion/fullscreen-shell
...
fullscreen-shell-v1: initial protocol implementation
2019-01-20 09:30:52 -05:00
Drew DeVault
0db2a687b7
Merge pull request #1479 from emersion/lost-crtc-state
...
backend/drm: fix state for outputs loosing their CRTC
2019-01-20 09:02:00 -05:00
emersion
d4ffa5b7a6
backend/drm: fix state for outputs loosing their CRTC
...
When there aren't enough CRTCs for all outputs, we try to move a CRTC from a
disabled output to an enabled one. When this happens, the old output's state
wasn't changed, so the compositor thought it was still enabled and rendering.
This commit marks the old output as WLR_DRM_CONN_NEEDS_MODESET and sets its
current mode to NULL.
2019-01-19 10:18:03 +01:00
Ilya Trukhanov
268cc450b6
Fix segfault in get_relative_pointer
...
Occurs on subsequent calls to
relative_pointer_manager_v1_handle_get_relative_pointer()
Steps to reproduce:
- run rootston
- run examples/relative-pointer
- switch to relative pointer more than once
Note: if done fast enough it may take more than two switches to crash.
2019-01-18 22:53:32 +02:00
Connor E
b1cdd2b4b3
Use assertions instead of guard.
2019-01-14 16:05:24 +00:00
Connor E
e7fff4f560
Remove wlr_xdg_surface_send_close.
2019-01-13 14:22:49 +00:00
emersion
0fafab87e3
Fix a few typos
2019-01-10 09:30:14 +01:00
Drew DeVault
e61ea7706b
Merge pull request #1423 from emersion/data-control
...
Implement data-control-unstable-v1
2019-01-06 22:41:35 -05:00
emersion
f71cf15aad
relative-pointer-v1: move pointer iteration in wlroots
...
This makes sure we always send events to the right client.
2019-01-06 12:17:31 +01:00
emersion
86f263a0b8
fullscreen-shell-v1: initial protocol implementation
2019-01-06 12:12:06 +01:00
emersion
610f5bfc77
Merge pull request #1432 from ForTheReallys/relative-pointers
...
Relative pointers
2019-01-04 13:42:53 +01:00
emersion
69e7fd61b7
data-control-v1: update to latest protocol proposal
2018-12-30 02:52:03 +01:00
emersion
340281b48a
data-control-v1: fix data source not properly destroyed
2018-12-30 02:48:04 +01:00
emersion
a28167c255
data-control-v1: allow clearing selection
2018-12-30 02:48:03 +01:00
emersion
ae1dd635b1
data-device: fix dangling listener in seat_client_selection_source_destroy
2018-12-30 02:48:03 +01:00
emersion
aa2dafb7c8
data-control-v1: fix crash in manager_handle_get_data_control
2018-12-30 02:48:03 +01:00
emersion
1e581ad95c
data-control-v1: fix crash after wlr_data_control_v1_destroy
2018-12-30 02:48:03 +01:00
emersion
99d879c887
data-control-v1: initial protocol implementation
2018-12-30 02:48:03 +01:00
Alex Maese
b8460f448c
Rename some variables for clarity
2018-12-23 06:50:39 -06:00
Timidger
9af0c5338f
Standardize the wlr_box input paramaters
...
Fixes #1094
2018-12-21 13:56:10 -05:00
Alex Maese
5999d0322b
Add a listener for when the pointer gets destroyed
2018-12-21 12:20:48 -06:00
Alex Maese
12d9edc0c9
Address more of @emersion's comments
2018-12-21 12:20:48 -06:00
Alex Maese
a803a007fb
Address @emersion's comments
2018-12-21 12:20:48 -06:00
Alex Maese
f5ea393bca
Remove pointer resource from relative pointer
2018-12-21 12:20:48 -06:00
Alex Maese
09bdbf24f4
Removed relative pointers from wlr_seat
2018-12-21 12:20:48 -06:00
Alex Maese
f4cf3c0886
Remove wl_client from wlr_relative_pointer_v1
2018-12-21 12:20:48 -06:00
random human
68137dca3f
relative_pointer: implementation and code fixes
...
In particular, modified public creator and destructor function names,
added a display destroy listener, safely extract user data from
resources, send correct time (in usecs) in rootston, etc.
2018-12-21 12:20:48 -06:00
random human
fb44ce9fa8
relative_pointer: send frame event to pointer for Xwayland
2018-12-21 12:20:48 -06:00
random human
6fa1777f94
relative_pointer: code formatting fixes
2018-12-21 12:20:48 -06:00
random human
d020344675
relative_pointer: implement protocol events
...
Implement zwp_relative_pointer_v1.relative_motion event, along with some
glue code in wlr_seat_pointer and rootston.
2018-12-21 12:20:48 -06:00
random human
ba5b1676df
relative_pointer: implement protocol requests
...
Flesh out the details of the structs, signals, callback functions, and
so on. weston-resizer silently works at this point (no events sent).
2018-12-21 12:20:48 -06:00
random human
3a3d1b6617
relative_pointer: create skeleton and build
...
Add protocol, header and type files to build. Create skeleton structs,
creator and destroyer, and define implementations.
2018-12-21 12:20:47 -06:00
Ryan Walklin
2a3c62b4d2
[WIP][DONTMERGE]Add support for libinput_switch input devices
...
These are used primarily by laptops to signal
the state of the lid (open/closed) and tablet
mode if supported, based on ACPI events.
2018-12-15 14:42:35 +11:00
Drew DeVault
ef9506b0bc
Merge pull request #1433 from ammen99/fix-layer-shell-unconstrain
...
xdg-popup: fix wlr_xdg_popup_get_toplevel_coords()
2018-12-12 07:48:21 -05:00
Ilia Bozhinov
07865104e1
xdg-popup: fix wlr_xdg_popup_get_toplevel_coords()
...
The previous code resulted in a crash when we try to unconstrain a popup
which is part of a layer-shell surface popup tree.
Fixes #1425
2018-12-12 08:51:13 +01:00
emersion
c2113decb3
gtk-primary-selection: warn when offering MIME type after set_selection
2018-12-09 12:42:27 +01:00
emersion
8c573bc7c6
gtk-primary-selection: basic serial validation
2018-12-09 12:38:35 +01:00
Ilia Bozhinov
5b1b9657bf
types: implement wlr_foreign_toplevel_management_v1
2018-12-08 14:09:30 +01:00
emersion
1256314afe
export-dmabuf-v1: add missing destroy request handler
...
Also document lists in the header file.
2018-12-06 19:08:28 +01:00
Drew DeVault
fdb67ff63b
Merge pull request #1415 from emersion/tablet-seat-leak
...
tablet-v2: fix wlr_tablet_seat_v2 leak
2018-12-04 18:20:46 -05:00
emersion
3ca7ca5306
tablet-v2: fix wlr_tablet_seat_v2 leak
2018-12-04 20:06:38 +01:00
emersion
5515faa197
xdg-shell: emit xdg_surface destroy when role object is destroyed
...
Fixes https://github.com/swaywm/wlroots/issues/1407
2018-12-04 13:42:29 +01:00
Drew DeVault
273e110b74
Merge pull request #1403 from emersion/swap-buffers-damage-coords
...
output: switch swap_buffers damage to output-buffer-local coords
2018-12-02 13:17:24 -05:00
emersion
6aaefad40d
output: switch swap_buffers damage to output-buffer-local coords
...
This is one more step towards [1]. This gives more freedom to the compositor
wrt. how it handles damage.
[1]: https://github.com/swaywm/wlroots/issues/1363
2018-12-01 10:56:35 +01:00