Age | Commit message (Collapse) | Author |
|
This commits completely refactors wlr_gtk_primary_selection. The goal is to
remove gtk-primary-selection state from the seat and better handle inert
resources where it makes sense.
wlr_seat_client.primary_selection_devices has been removed and replaced by
wlr_gtk_primary_selection_device. This allows us to make offers inert when the
current selection is replaced.
wlr_seat_set_primary_selection has been removed because it relied on wlr_seat
instead of wlr_gtk_primary_selection_device_manager. A new function,
wlr_gtk_primary_selection_device_manager_set_selection (candidate for the
longest function name in wlroots) has been added. It doesn't take a serial
anymore as serial checking only makes sense for set_selection requests coming
from Wayland clients (serial checking is now done in the Wayland interface
implementation).
Since wlr_gtk_primary_selection_device_manager is now required to set the
selection, a new function wlr_xwayland_set_gtk_primary_selection_device_manager
(candidate number two for longest function name) has been added.
Devices are now made inert when the seat goes away.
Future work includes removing the last primary selection bits from the seat,
mainly wlr_seat.primary_selection_source and wlr_seat.events.primary_selection,
replacing those with new fields in wlr_gtk_primary_selection_device. Or maybe
we could keep those in the seat and replace them with a re-usable interface
(for future zwp_primary_selection_v1 support). We need to think how we'll sync
these three protocols (GTK, X11 and wayland-protocols).
See https://github.com/swaywm/wlroots/issues/1388
|
|
Rename wlr_primary_selection to wlr_gtk_primary_selection
|
|
data-device: allow multiple devices for the same seat
|
|
surface: fix destroyed subsurfaces handling
|
|
wlr_subsurface_from_wlr_surface can return NULL if the wl_surface is still
alive and if the wl_subsurface has been destroyed. Make sure we check for NULL.
Fixes https://github.com/swaywm/sway/issues/3195
|
|
The source could be used in another offer.
|
|
This commit makes it possible for a single client to have multiple data devices
for the same seat. This fixes issues with Firefox.
This mainly removes wlr_data_source.offer. We make sure we create one data
offer per device. We now make the offer inert when the source is destroyed.
Fixes the second half of https://github.com/swaywm/wlroots/issues/1041
|
|
text-input-v3: remove newline in log message
|
|
|
|
Disable Clang static analysis
|
|
tablet-v2: fix segfault on display destroy
|
|
|
|
Fixed loc count in readme
|
|
|
|
output: add wlr_output_preferred_read_format()
|
|
The read format is dependent on the output, so we first need to make it
current. This fixes a race condition in wlr-screencopy-v1 where a dmabuf
client would cause EGL_NO_SURFACE to be bound at the time when
screencopy needs to query for the preferred format, causing GL errors.
|
|
|
|
Fix interlaced mode rejection
|
|
|
|
gtk-primary-selection: support multiple devices
|
|
Skip interlaced modes during drm mode detection
|
|
Fixes #3167
A better solution could be made if there's a need to.
|
|
|
|
When a client was creating multiple data devices for the same seat, we were
only creating one resource. This is a protocol error.
Instead, create one offer per data device.
This commit also makes offers inert when their source is destroyed.
Fixes part of https://github.com/swaywm/wlroots/issues/1041
Supersedes https://github.com/swaywm/wlroots/pull/1113
|
|
Render software cursors in compositor
|
|
|
|
Rendering in wlr_output_swap_buffers has unfortunate side-effects.
|
|
This wasn't using direct scan-out. Direct scan-out will probably
work differently with @ascent12's work anyway.
|
|
X11 backend improvements
|
|
|
|
This also allows us to remove xcb-xkb, since Xinput will now give us the
appropriate XKB modifiers with each event.
|
|
|
|
|
|
There isn't any real reason to delay this until the backend is started.
|
|
|
|
When the Xlib connection is removed, this _conn suffix is going to be
pointless. I'm removing this preemtively for that.
|
|
xdg-shell: don't destroy xdg role state on role destroy
|
|
Use #if instead of #ifdef for wlroots config data
|
|
Wayland backend improvements
|
|
|
|
ie. don't destroy surface->toplevel on xdg_toplevel destroy. Instead do this on
xdg_surface destroy.
This allows compositors to add toplevel listeners when the surface appears and
remove them when the surface is destroyed.
|
|
This prevents some annoying issues when e.g. not including wlr/config.h or
making a typo in the guard name.
|
|
We need to flush when the connection is writable again. This is important in
case the write buffer becomes full. This is also what Weston does [1].
[1]: https://gitlab.freedesktop.org/wayland/weston/blob/master/libweston/compositor-wayland.c#L2593
|
|
|
|
The renderer redesign is going to need the render fd before the backend
is fully started, so we have to move the wl registry code to when the
backend is created instead of when it is started.
We also need to stash the wl_keyboard and emit it to library users
later, once they've added their listeners and started the backend.
|
|
Explicitly use the version we support instead of accepting the
compositor's version.
|
|
Registry was a very small file, and is heavily related to the backend,
so there is not point in keeping them separate.
|
|
render: correctly set EGL_RENDERABLE_TYPE
|
|
This should be set to EGL_OPENGL_ES2_BIT.
Also fixes EGL config attributes in the headless and X11 backends.
|
|
Tell Mesa not to attempt X11 headers
|