Age | Commit message (Collapse) | Author |
|
This makes sure the `wl_list_remove(&output_power->link)` in
`output_power_destroy()` does not crash even when the output_power never
got added to a list. This can e.g. happen in the `mgmt->output ==
output` error path of `output_power_manager_get_output_power`.
|
|
Leave positioner inverted on the individual axis if it's no longer
constrained. Otherwise constraint adjustment like `slide_x & flip_y`
could render popup outside of the screen when both axes are constrained.
Fixes Alexays/Waybar#532
|
|
Port back style and naming improvements suggested in
https://github.com/swaywm/wlroots/pull/2026 for
keyboard-shortcuts-inhibit. These are all internal to the implementation
and therefore unproblematic.
Also, retrieve the inhibitor resource version from the manager resource
instead of setting it statically.
Signed-off-by: Michael Weiser <michael.weiser@gmx.de>
|
|
Again, copy'n'search'n'replace the idle inhibit example to become a
simple keyboard shortcuts inhibit example, adding the active and
inactive events.
Getting the initial inhibitor needs to be done later than for idle
inhibit to avoid an error "xdg_surface has never been configured".
Signed-off-by: Michael Weiser <michael.weiser@gmx.de>
|
|
The keyboard shortcuts inhibitor protocol is useful for remote desktop
and virtualization software in order to request all keyboard events to
be passed to it and (almost) none being resonded to by the compositor.
This allows the session at the other end of the remote desktop
connection or inside the virtual machine to be interacted with as usual
(e.g. Alt+Tab to switch windows on the remote system instead of
locally).
Add the wayland protocol to the meson build files.
Copy'n'search'n'replace the very similar idle inhibit protocol
implementation. This already provides all the basic functionality:
- creating and destroying inhibitors upon request by a client,
- destruction in reaction to destruction of surfaces or displays,
- a list of inhibitors to search through for existing ones as well as
- a signal to be sent to the compositor upon registration of a new
inhibitor.
Beyond that we add the active and inactive events to be sent to the
client and wire those to activate and deactivate functions for the
compositor to call in confirmation of activation of a new inhibitor or
(un-)suspending of an existing inhibitor e.g. in response to a special
key combination entered by the user as suggested by the protocol.
As mandated by the protocol, we check the existance of an inhibitor for
a given surface and seat upon creation and return the error provided by
the protocol for that purpose.
Signed-off-by: Michael Weiser <michael.weiser@gmx.de>
Closes: https://github.com/swaywm/wlroots/issues/1817
|
|
|
|
Co-authored-by: Simon Ser <contact@emersion.fr>
|
|
|
|
With this information, consumers can realize they will never retrieve some state, and adjust their strategy.
|
|
This reflects what i3 does [1].
[1]: https://github.com/i3/i3/blob/b3faf9fca9254679a4715486a4de80ebaee70410/src/handlers.c#L1076
Fixes: c067fbc010da ("xwm: allow applications to change focus between their own surfaces")
Closes: https://github.com/swaywm/sway/issues/4926
|
|
Previously, if the current configuration contains an output X which is
destroyed, its head is automatically removed. If the compositor submits
the new configuration after X was removed, the current output
configuration is incorrectly detected to be the same as the previous
one, and no done event is sent. To prevent this, we can just keep track
of whether the current configuration is dirty, i.e whether we have sent
a done event for it.
|
|
This updates the version requirement for wayland-server to 1.18, which
is needed for wl_global_remove and wl_global_set_user_data
|
|
This change ensures that wlr_output_transform_compose correctly composes
transforms when the first transform includes a rotation and the second
transform includes a flip.
|
|
The Wayland protocol specifies output transform rotations to be
counterclockwise and applied to the surface. Previously, wlroots
copied Weston and incorrectly made rotations act clockwise on
surfaces. This commit fixes that.
This change will break compositors which expect transform rotations
to be clockwise, and the rare applications that make use of surface
transforms.
|
|
|
|
Closes: https://github.com/swaywm/sway/issues/3625
|
|
This adds a generic helper to destory transient globals.
See [1]. This patch depends on [2] and [3].
[1]: https://gitlab.freedesktop.org/wayland/wayland/issues/10
[2]: https://gitlab.freedesktop.org/wayland/wayland/merge_requests/28
[3]: https://gitlab.freedesktop.org/wayland/wayland/merge_requests/30
|
|
https://github.com/FreeBSDDesktop/libudev-devd/commit/f11ee5b418c740ba6fd4c946ab10b0d89702e4d0
|
|
|
|
Due to the way the wlr_output API was changed, these examples would
never get a frame event to start the rendering loop. We now commit the
outputs to start it.
|
|
Having 1.16 results in the following error when running the compositor:
2019-04-27 17:30:50 - [wayland] wl_global_create: implemented version for 'wl_seat' higher than interface version (7 > 6)
2019-04-27 17:30:50 - [sway/input/seat.c:428] seat_create:could not allocate seat
We require wayland-server >= 1.17 for wl_seat version 7.
Fixes: a671fc51d25c ("Advertise wl_seat version 7")
Fixes: a656e486f4a6 ("seat: fallback to v6 if libwayland 1.17 isn't available")
|
|
|
|
Even if the X11 backend or Xwayland is enabled, we don't rely on
EGL/egl.h including Xlib headers.
|
|
The previous PR was overzealous in adding a finish_drm_surface call
which was also done by the caller. Remove the call and also move the
comment to the correct code location.
|
|
In some cases modesets fail if the planes are initialized with
modifiers. Since in this case possibly all planes need to reinitialized,
which is not possible in the current wlroots design, add an environment
variable for affected users.
|
|
This allows us to have a single number to update when doing a release.
This drops WLR_VERSION_API_* definitions.
|
|
|
|
|
|
|
|
Previously, creating a keyboard group without any keymap set would
result in an error:
Device keymap does not match keyboard group's
|
|
This would happen if initializing the renderer fails. Instead, we just
mark the output as disabled.
References: https://github.com/swaywm/sway/pull/4917
|
|
|
|
|
|
rootston isn't part of wlroots anymore.
|
|
There was an issue in 0.51.1 and earlier, where lists of dependencies
and disablers weren't acting like they should. Instead of disabling a
build, it would error out instead.
Changing this logic to work around it is annoying, so just bump the
version instead.
|
|
Keeping textures bound results in hard-to-debug situations where some GL
operations incorrectly affect the texture.
|
|
Users can just pass EGL_DEFAULT_DISPLAY themselves.
|
|
|
|
Users interested in remote access to wlroots compositors should use
wayvnc:
https://github.com/any1/wayvnc
|
|
Previously, an error on the remote Wayland display would result in an
infinite loop priting:
2020-01-09 13:39:03 - [wayland] Source dispatch function returned negative value!
2020-01-09 13:39:03 - [wayland] This would previously accidentally suppress a follow-up dispatch
This happens when the remote compositor disconnects the client because
of a protocol error, for instance.
Handle wl_display_dispatch and wl_display_dispatch_pending returning -1
by terminating the local display and printing an error.
|
|
Previously, we just assumed submitting a new frame would make the
compositor release the current one. This isn't always the case, for
instance Sway retains old buffers when a transaction is pending. This
resulted in synchronization issues with clients writing in
front-buffers.
Fix this by un-referencing a wlr_buffer when the parent compositor sends
wl_buffer.release.
Tested by running a fullscreen mpv instance in Sway with the Wayland
backend.
|
|
|
|
|
|
Although currently this problem is present in only Steam, and it is
actually a client bug.
|
|
It turns out that scrolling doesn't work unless this value is set somewhere.
|
|
This got removed in [1]. I probably messed up the rebase.
[1]: https://github.com/swaywm/wlroots/pull/1797/files#diff-3065f86e6de87d143d4a7673a8ee3a2d
Fixes: 5d1ba0f44687 ("output: re-introduce atomic mode, enabled, scale and transform")
|
|
|
|
Add a wlr_renderer.rendering bool, set it to true between
wlr_renderer_begin() and wlr_renderer_end(). Assert we're rendering when
calling functions that render.
|
|
When running wlroots compositors with Xwayland executable bits
unset, if DISPLAY is set to the display number wlroots has set
up, then X and gtk clients (at least) hang when they are ran.
X clients should fail with an error and exit while gtk clients
should fall back to wayland backend and run correctly. This is
because wlroots opened sockets for Xwayland but wasn't closing
them if Xwayland failed to start.
|
|
|