Age | Commit message (Collapse) | Author |
|
When the parent surface is destroyed, also destroy the child
wl_subsurface. No need to handle the wlr_subsurface.parent == NULL
case anymore.
Closes: https://gitlab.freedesktop.org/wlroots/wlroots/-/issues/1709
|
|
|
|
See [1]. CONTRIBUTING.md says:
> Try to keep your lines under 80 columns, but you can go up to 100 if it
> improves readability.
[1]: https://github.com/editorconfig/editorconfig/wiki/EditorConfig-Properties#max_line_length
|
|
This can be useful to figure out why a required feature is missing,
e.g. as in [1].
We check VK_EXT_physical_device_drm availability after printing
the driver name.
[1]: https://gitlab.freedesktop.org/wlroots/wlroots/-/issues/3358
|
|
This became possible after the usage of wlr_surface_send_frame_done.
|
|
|
|
|
|
Currently the output enter event is never sent if the client has not
yet bound the output, which happens every time the compositor creates a
new output.
To fix this, listen for the output bind event and inform clients as
if needed.
|
|
Detect NULL commits before the surface is actually committed, allowing
the surface to be properly damaged on unmap.
|
|
Currently this check is too strict and denies the move/resize request
if a subsurface of the client has pointer focus.
|
|
Now the role precommit hook is called before the commit, not on
wl_surface.commit request, and takes a state which is to be applied.
|
|
|
|
|
|
|
|
wlr_surface.events.client_commit is fired when wl_surface.commit
request is received.
|
|
|
|
wlroots has historically been started as a Sway project, but these
days many wlroots contributors are working on other compositors.
wlroots now also has its own namespace on gitlab.freedesktop.org.
Let's remove the mention about Sway in the README, to make it clearer
that Sway isn't treated in a special manner when it comes to wlroots
development.
|
|
This commit renames map/unmap listeners to clarify that they handle
subsurface events, and ensures the node is always destroyed before
the subsurface.
Without this patch, wl_list_remove() would operate on listener links in
already freed memory. glibc is usually lenient to bugs like this, but
musl isn't.
|
|
commit 44e8451cd93e ("render/gles2: hide shm formats without GL
support") added the is_gles2_pixel_format_supported() function to
render/gles2/pixel_format.c, whose stated purpose is to "check whether
the renderer has the needed GL extensions to read a given pixel format."
It then used that function to filter the pixel formats returned by
get_gles2_shm_formats().
The result of this change is that RGB formats are no longer reported for
GL drivers that don't implement EXT_read_format_bgra, even when those
formats are supported for rendering (which they have to be for
wlr_gles2_renderer_create() to succeed). This is a pretty clear
regression, since wlr_renderer_init_wl_shm() fails when either of
WL_SHM_FORMAT_ARGB8888 or WL_SHM_FORMAT_XRGB8888 are missing.
To fix the regression, change is_gles2_pixel_format_supported() to
accept all pixel formats that support rendering, regardless of whether
we can read them or not, and move the check for EXT_read_format_bgra
back into gles2_read_pixels(). (There's already a check for this
extension in gles2_preferred_read_format(), so we're not breaking any
abstraction that wasn't already broken.)
Tested on the NVIDIA 495.46 proprietary driver, which doesn't support
EXT_read_format_bgra.
Fixes: 44e8451cd93e ("render/gles2: hide shm formats without GL support")
|
|
|
|
Some clients (e.g. mpv, Firefox) request a new wl_surface.frame
callback without damaging their surface. When this happens,
schedule a new output frame.
Closes: https://gitlab.freedesktop.org/wlroots/wlroots/-/issues/3350
|
|
This function was already removed in e5b5592a but it was forgotten to
remove it from the header.
|
|
The libinput backend is now optional. However, this means that a
user building wlroots without the correct libinput dependencies
will end up with a compositor which doesn't respond to input events.
wlr_backend_autocreate is supposed to return a sensible setup, so in
this case let's just error out and explain what happened. Users can
suppress the check by setting WLR_LIBINPUT_NO_DEVICES=1 (already used
to suppress the zero input device case inside the libinput backend).
Compositors which really want to create a bare DRM backend can easily
create it manually instead of using wlr_backend_autocreate.
|
|
All of these projects use meson.override_dependency() so we can
stop referencing their internal variable name to grab the
depndencies we need.
|
|
Compositors should've all been updated to use the new header by now.
|
|
According to [1] this should be done at each release with breaking ABI
changes.
[1]: https://gitlab.freedesktop.org/wlroots/wlroots/-/wikis/Core-contributor-guide#releasing-a-new-version
Fixes: 7360810f2e5c ("build: bump to version 0.16.0")
|
|
These currently use uint32_t while they are an int32_t in the protocol.
|
|
|
|
This patch makes it so we bind to zwp_linux_dmabuf_v1 version 4 and
we use it to grab the main device. v4 sends supported formats via a
table so we need to handle this as well.
v4 allows wlroots to remove the requirement for Mesa's internal
wl_drm interface.
|
|
This fixes configure loop in Sway when clients re-send same properties
on every configure event.
Original issue: https://todo.sr.ht/~mil/sxmo-tickets/413
|
|
This helper automates sending presentation feedback to clients based on
the primary output of scene surfaces.
|
|
|
|
This has been added in [1] and allows us to close buffer handles
without manually calling drmIoctl.
[1]: https://gitlab.freedesktop.org/mesa/drm/-/merge_requests/192
|
|
This avoids open-coding our own logic. The resulting code is more
readable.
References: https://gitlab.freedesktop.org/mesa/drm/-/merge_requests/146
|
|
Since [1], we can get the wl_display directly from the wl_global.
[1]: https://gitlab.freedesktop.org/wayland/wayland/-/commit/2b22160fb690a76247aa9bd0be3069ff43e8239f
|
|
Allows the compositor to submit tokens to the pool of
currently active tokens. This can be useful when the
launcher doesn't use or support xdg-activation-v1 by
itself - e.g. when it is X11 based or use gtk_shell1.
|
|
Otherwise it will send enter events to clients that already
have keyboard/pointer focus.
Notably Qt applications warns about this.
|
|
This doesn't work if scene outputs are not used as the primary output of
scene surfaces will always be NULL.
Therefore, take a wlr_scene_output instead of separate wlr_scene and
wlr_output arguments and rename the function to
wlr_scene_output_send_frame_done().
The actual behavior of the function is unchanged.
|
|
|
|
|
|
This allows compositors to avoid sending multiple frame done events
to a surface that is rendered on multiple outputs at once. This may
also be used in the same way for presentation feedback.
|
|
Co-authored-by: Simon Ser <contact@emersion.fr>
|
|
This helper is responsible for listening for new DRM devices and
create new child DRM backends as necessary.
|
|
The multi backend was returned instead of the primary DRM backend.
|
|
Two new events are added: name and description. The name is
immutable. The description can be updated on-the-fly.
|
|
|
|
This commit fixes the way the damage that doesn't come directly from the
client is handled.
|
|
Subsurface position is considered to be a part of the parent surface's
state, therefore it should be modified when the parent is committed.
|
|
|
|
%zd is for ssize_t. For size_t we should use %zu.
|