Age | Commit message (Collapse) | Author |
|
RMFB implicitly performs a modeset to turn off any CRTC which is
using the FB. This prevents seamless transitions between two DRM
masters from working.
Use the new CLOSEFB IOCTL which doesn't turn off anything and leave
it up to the compositor to turn off outputs on shutdown if it wants
to.
|
|
It's possible that we don't have an EGLDevice if we created the
EGL context from a GBM device. Let's ensure all GPU-accelerated
renderers always have a DRM FD to return by falling back to GBM's
FD.
|
|
This was used by the legacy rendering API. Since begin()/end()
only need to set current_render_buffer and nothing else, we can
drop all of these bits.
|
|
Instead, move the wlr_xwayland_surface_set_withdrawn() and
wlr_xwayland_surface_restack() calls to the MapNotify handler with an
override_redirect check, as they are done too early. This mirrors the logic in
the UnmapNotify handler and fixes a bug where wlr_xwayland_surface_restack()
would be called on an o-r window after the following sequence of requests:
- CreateWindow with override_redirect=True
- ChangeWindowAttributes with override_redirect=False
- MapWindow
Fixes: https://gitlab.freedesktop.org/wlroots/wlroots/-/issues/3770
|
|
Under X11, ConfigureNotify means that the window has already been resized.
Sending ConfigureRequest with the received size is not only useless, but also
can confuse the window manager, which will probably reply with the current
(i.e. *old*) size causing a configure loop.
Fixes: https://gitlab.freedesktop.org/wlroots/wlroots/-/issues/3769
|
|
|
|
The surface scale and transform are applied before the viewport.
Closes: https://gitlab.freedesktop.org/wlroots/wlroots/-/issues/3766
|
|
The commit event fires too late: we're interested in checking the
values at wl_surface.commit time, not after.
|
|
"current" is misleading, since we are using the pending state here.
|
|
new_subsurface emitted immediately isn't actually that useful. Revert the change
and document that this event is special.
This reverts commit 504b9491f05d3227d45ea6bcc9c347e1a6bf9586.
|
|
Compositors should no longer need matrix operations to render:
the old rendering API has been removed, and the new API doesn't
take matrices as input.
|
|
Many files used to require wlr_matrix but no longer do.
|
|
The only function in that header is now also declared in
wlr/types/wlr_compositor.h.
|
|
|
|
Fixes: https://gitlab.freedesktop.org/wlroots/wlroots/-/issues/3762
|
|
See https://gitlab.freedesktop.org/wlroots/wlroots/-/issues/3608.
|
|
|
|
|
|
This commit changes the behavior of `new_*` signals to better match
their names (see https://gitlab.freedesktop.org/wlroots/wlroots/-/issues/3608).
wlr_xdg_shell.events.new_surface is now emitted when an xdg_surface is
created, and wlr_xdg_shell.events.new_{toplevel,popup} events are
introduced to get notified when an xdg_{toplevel,popup} is created.
Same applies to
`wlr_xdg_decoration_manager_v1.events.new_toplevel_decoration`. As a
result, wlr_xdg_surface.added and wlr_xdg_toplevel_decoration_v1.added
are removed, as we no longer need to track whether the corresponding
event was emitted.
Additionally, this commit changes the behavior of
wlr_xdg_surface.events.destroy: it is now emitted when the xdg_surface
is destroyed, as the name suggests.
wlr_xdg_{toplevel,popup}.events.destroy events are added to get
notified when an xdg_{toplevel,popup} is destroyed.
|
|
We don't need the whole wl_display here anymore. The wl_event_loop
is enough.
|
|
The wl_display destroy listener cleans up the global (if any).
wlr_output.display will go away, so setup the listener in
wlr_output_create_global() instead of wlr_output_init().
|
|
Currently wlr_output holds a wl_display, but it will go away soon.
Instead of relying on that field in wlr_output_create_global(),
make the dependency explicit by taking a wl_display as argument.
|
|
The output layout creates and destroys wl_output globals. We will
soon need the wl_display to do so.
|
|
wl_display holds a lot more than wlr_session needs: wlr_session
only needs to wait for a FD to become readable, but wl_display
provides full access to the Wayland client and protocol objects.
Switch to wl_event_loop to better reflect the above.
|
|
|
|
This is consistent with other X11 window managers (checked against i3
and mutter).
|
|
We hand-roll this in multiple places.
|
|
These aren't really tied to wlr_output.
|
|
While the xdg-shell protocol requires this, it does not yet have
a dedicated error code for invalid titles; this commit makes
wlroots send a generic error instead.
|
|
|
|
|
|
|
|
|
|
|
|
All built-in renderers now implement the new API.
|
|
wlr_input_inhibitor.h has been marked as deprecated in 0.17.0.
|
|
|
|
|
|
|
|
When a texel from the Vulkan format VK_FORMAT_B8G8R8A8_SRGB is read,
the sRGB to linear conversion is applied independently to the R, G,
and B channels; the A channel has no influence on this. However,
DRM_FORMAT_ARGB8888 buffers are, per Wayland protocol, not encoded
in this fashion; one must first unpremultiply the color channels
before doing sRGB to linear conversion. This commit switches to
handling ARGB8888 and ABGR8888 formats using the general fragment
shader conversion from electrical to optical values.
|
|
Unfortunately we have no way to get back the proper render node in
that case. This will be fixed with [1]: with that Mesa patch, the
wlr_renderer will return the proper render node and the existing
logic will work fine.
[1]: https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24825
Closes: https://gitlab.freedesktop.org/wlroots/wlroots/-/issues/3757
|
|
This doesn't change functionality, both the values are the same. Less
confusing to use the box size.
|
|
|
|
Leaving this empty would have it filled in with the size of the source
texture, but we want the destination size.
Fixes: #3758
|
|
drm_crtc_commit() already ensures that atomic-only flags are
disallowed.
|
|
Instead of having this condition checked in multiple places,
centralize it so that they don't go out-of-sync.
|
|
This chunk of code was moved by mistake.
Fixes: 3b53d1cbf199 ("backend/drm: introduce page-flip tracking struct")
|
|
|
|
|
|
When we destroy the backend, page flips will no longer be invoked meaning
those won't clean up the page flips for us.
|