This is very much incomplete, but it implements the import and export of surfaces. However functions related to setting and imported surface the parent of another surface is not done.
importer destructor destroys all imports made from the same client
Implement SetParentOf, no undoing yet
Add inner import type
Destroy child surface relationships when importing
A note
move init function upwards
use 0.29.0 crate
Move role string constants into the public
Use toplevel_like for surface checks in foreign
add methods to get the parent surface
Make sure ZXDG roles are public api
Consistent ordering of parameters on xdg_foreign impl methods
Let's update the changelog
Document how to use xdg_foreign
wl_shell_surface is likely invalid, so it cannot be imported or exported
Changelog suggestions
remove redundant inner ref cell
Remove all uses of the refcell like behavior
Allow compositor to export surfaces on server
Appease new clippy lints
then
Use string references and iterate in reverse to simplify removals
heed request for order
This changes the state handling logic of wl_surface to automatically
track subsurface pending in the form of transactions. The role enum
(and the associated type parameter) is no more, and replaced by a
general-purpose typemap-like container on surfaces.
The new logic is introduced in the files:
- `src/wayland/compositor/cache.rs`
- `src/wayland/compositor/transaction.rs`
The rest of the PR is the fallout of these changes, as well as a few
trivial clippy fixes.
Xwayland gives us a mapping between X11 window and WlSurface IDs via
special WL_SURFACE_ID messages. This commit uses these messages to find
the corresponding WlSurface. For this, the new client.get_resource API
from wayland-server is needed.
Signed-off-by: Uli Schlachter <psychon@znc.in>
slog-stdlog has a significant dependency tree and is basically unsued if
the downstream crate of Smithay always provides a logger (like anvil),
so it is not really needed.
Introduce the `backend_session_elogind` cargo feature which pulls
`backend_session_logind` and makes the logind session backend seek
`libelogind.so` instead of `libsystemd.so`.
Fixes#127