smithay/CHANGELOG.md

202 lines
11 KiB
Markdown
Raw Normal View History

2018-09-30 23:19:48 +02:00
# Smithay Changelog
2017-10-01 22:57:02 +02:00
2021-07-25 11:46:06 +02:00
## Unreleased
2021-08-03 19:52:43 +02:00
### Breaking Changes
2022-06-16 20:21:57 +02:00
**`wayland-server` was updated to 0.30:**
- Most of the wayland frontend API is changed to follow the new request dispatching mechanism built around the `Dispatch` trait from `wayland-server`
- Modules that provide handlers for Wayland globals now provide `DelegateDispatch` implementations, as well as macros to simplify the dispatching from your main state
2021-08-03 19:52:43 +02:00
#### Clients & Protocols
2021-10-16 18:59:42 +02:00
- Remove `xdg-shell-unstable-v6` backwards compatibility
2021-08-03 19:52:43 +02:00
- `XdgPositionerState` moved to `XdgPopupState` and added to `XdgRequest::NewPopup`
- `PopupSurface::send_configure` now checks the protocol version and returns an `Result`
- `KeyboardHandle::input` filter closure now receives a `KeysymHandle` instead of a `Keysym` and returns a `FilterResult`.
2021-10-27 19:23:00 +02:00
- `PointerButtonEvent::button` now returns an `Option<MouseButton>`.
- `MouseButton` is now non-exhaustive.
- Remove `Other` and add `Forward` and `Back` variants to `MouseButton`. Use the new `PointerButtonEvent::button_code` in place of `Other`.
- `GrabStartData` has been renamed to `PointerGrabStartData`
2022-02-28 20:47:01 +01:00
- The `slot` method on touch events no longer returns an `Option` and multi-touch capability is thus opaque to the compositor
2022-04-20 12:14:18 +02:00
- `wayland::output::Output` now is created separately from it's `Global` as reflected by [`Output::new`] and the new [`Output::create_global] method.
- `PointerHandle` no longer sends an implicit motion event when a grab is set, `time` has been replaced by an explicit `focus` parameter in [`PointerHandle::set_grab`]
- `ToplevelSurface::send_configure`/`PopupSurface::send_configure`/`LayerSurface::send_configure` now always send a configure event regardless of changes and return
the serial of the configure event. `send_pending_configure` can be used to only send a configure event on pending changes.
2021-08-03 19:52:43 +02:00
#### Backends
2021-10-13 11:28:58 +02:00
- Rename `WinitInputBacked` to `WinitEventLoop`.
- Rename `WinitInputError` to `WinitError`;
- `WinitInputBackend` no longer implements `InputBackend`. Input events are now received from the `WinitEvent::Input` variant.
- All winit backend internal event types now use `WinitInput` as the backend type.
- `WinitEventLoop::dispatch_new_events` is now used to receive some `WinitEvent`s.
2021-10-13 11:28:58 +02:00
- Added `TabletToolType::Unknown` as an option for tablet events
- `render_texture` was removed from `Frame`, use `render_texture_at` or `render_texture_from_to` instead or use `Gles2Renderer::render_texture` as a direct replacement.
- Remove `InputBackend::dispatch_new_events`, turning `InputBackend` into a definition of backend event types. Future input backends should be a `calloop::EventSource`.
- Remove `InputBackend::EventError` associated type as it is unneeded since `dispatch_new_events` was removed.
- `Swapchain` does not have a generic Userdata-parameter anymore, but utilizes `UserDataMap` instead
2021-11-23 17:28:48 +01:00
- `GbmBufferedSurface::next_buffer` now additionally returns the age of the buffer
- `Present` was merged into the `X11Surface`
- `X11Surface::buffer` now additionally returns the age of the buffer
- `X11Surface` now has an explicit `submit` function
- `X11Surface` is now multi-window capable.
- `Renderer::clear` now expects a second argument to optionally only clear parts of the buffer/surface
- `Transform::transform_size` now takes a `Size` instead of two `u32`
- `Gles2Renderer` now automatically flips the `render` result to account for OpenGLs coordinate system
2022-01-05 22:25:22 +01:00
- `Frame::clear`, `Frame::render_texture_at` and `Frame::render_texture_from_to` now have an additional damage argument
- `EGLNativeSurface` implementations overriding `swap_buffers` now receive and additional `damage` attribute to be used with `eglSwapBuffersWithDamageEXT` if desired
- `EGLSurface::swap_buffers` now accepts an optional `damage` parameter
- `WinitGraphicsBackend` does no longer provide a `render`-method and exposes its `Renderer` directly instead including new functions `bind` and `submit` to handle swapping buffers.
2022-03-03 18:41:53 +01:00
- `ImportShm` was renamed to `ImportMem`
- `ImportMem` and `ImportDma` were split and do now have accompanying traits `ImportMemWl` and `ImportDmaWl` to import wayland buffers.
- Added `EGLSurface::get_size`
- `EGLDisplay::get_extensions` was renamed to `extensions` and now returns a `&[String]`.
- Added gesture input events, which are supported with the libinput backend.
2021-10-13 11:28:58 +02:00
### Additions
#### Clients & Protocols
2021-07-31 20:23:54 +02:00
- `xdg_activation_v1` support
2021-07-31 13:45:38 +02:00
- `wlr-layer-shell-unstable-v1` support
- Added public api constants for the roles of `wl_shell_surface`, `zxdg_toplevel` and `xdg_toplevel`. See the
`shell::legacy` and `shell::xdg` modules for these constants.
2021-07-31 13:45:38 +02:00
- Whether a surface is toplevel equivalent can be determined with the new function `shell::is_toplevel_equivalent`.
- Setting the parent of a toplevel surface is now possible with the `xdg::ToplevelSurface::set_parent` function.
- Add support for the zxdg-foreign-v2 protocol.
2021-08-03 19:52:43 +02:00
- Support for `xdg_wm_base` protocol version 3
- Added the option to initialize the dmabuf global with a client filter
- `wayland::output::Output` now has user data attached to it and more functions to query its properties
- Added a `KeyboardGrab` similar to the existing `PointerGrab`
2022-01-05 22:25:22 +01:00
- `wayland::output::Output` now has a `current_scale` method to quickly retrieve its set scale.
- `wayland::shell::wlr_layer::KeyboardInteractivity` now implements `PartialEq` and `Eq`.
2022-02-28 20:47:01 +01:00
- Added `TouchHandle` for Wayland client touch support (see `Seat::get_touch`)
2022-04-20 12:46:08 +02:00
- `wayland::output::Scale` was introduced to handle fractional scale values better
2022-06-16 20:21:57 +02:00
- Support for `wl_output` global version 4
- Support for `wl_seat` global version 7
- Support for `wl_compositor` global version 5
- Support for the `wp_viewporter` protocol
2022-07-31 13:11:28 +02:00
- Support for the `zwp_input_method_v2` protocol
- Support for the `zwp_text_input_v3` protocol
2021-10-17 20:41:54 +02:00
#### Backends
2021-10-17 20:46:00 +02:00
- New `x11` backend to run the compositor as an X11 client. Enabled through the `backend_x11` feature.
2022-02-28 13:39:38 +01:00
- `x11rb` event source integration used in anvil's XWayland implementation is now part of smithay at `utils::x11rb`. Enabled through the `x11rb_event_source` feature.
- `KeyState`, `MouseButton`, `ButtonState` and `Axis` in `backend::input` now derive `Hash`.
2021-10-17 20:41:54 +02:00
- New `DrmNode` type in drm backend. This is primarily for use a backend which needs to run as client inside another session.
2022-02-28 13:39:38 +01:00
- The button code for a `PointerButtonEvent` may now be obtained using `PointerButtonEvent::button_code`.
- `Renderer` now allows texture filtering methods to be set.
2022-01-05 22:25:22 +01:00
- `backend::renderer` has a new `utils`-module that can take care of client buffer management for you.
- `EGLSurface::buffer_age` can be used to query the surface buffer age.
- `GbmBufferedSurface::reset_buffers` can now be used to reset underlying buffers.
2022-03-03 18:41:53 +01:00
- Added new `Offscreen` trait to create offscreen surfaces for `Renderer`s
- Added functions to `ImportMem` to upload bitmaps from memory
- Added `ExportDma` trait to export framebuffers and textures into dmabufs
- Added `ExportMem` trait to copy framebuffers and textures into memory
- Added `multigpu`-module to the renderer, which makes handling multi-gpu setups easier!
- Added `backend::renderer::utils::import_surface_tree` to be able to import buffers before rendering
- Added `EGLContext::display` to allow getting the underlying display of some context.
- Make `EGLContext::dmabuf_render_formats` and `EGLContext::dmabuf_texture_formats` also accessible from `EGLDisplay`.
2022-01-05 22:25:22 +01:00
#### Desktop
- New `desktop` module to handle window placement, tracks popups, layer surface and various rendering helpers including automatic damage-tracking! (+so much more)
2021-10-17 20:41:54 +02:00
#### Utils
- `Rectangle` can now also be converted from f64 to i32 variants
2021-11-27 20:53:26 +01:00
- `Rectangle::contains_rect` can be used to check if a rectangle is contained within another
2021-11-27 21:10:55 +01:00
- `Coordinate` is now part of the public api, so it can be used for coordinate agnositic functions outside of the utils module or even out-of-tree
### Bugfixes
#### Clients & Protocols
- `Multicache::has()` now correctly does what is expected of it
2021-11-13 20:57:00 +01:00
- `xdg_shell` had an issue where it was possible that configured state gets overwritten before it was acked/committed.
- `wl_keyboard` rewind the `keymap` file before passing it to the client
- `wl_shm` properly validates parameters when creating a `wl_buffer`.
- `ServerDnDGrab` and `DnDGrab` now correctly send data device `leave` event on button release
2022-06-16 20:21:57 +02:00
- Client are now allowed to reassign the same role to a surface
- `xdg_output` now applies the output transforms to the reported logical size
#### Backends
- EGLBufferReader now checks if buffers are alive before using them.
2021-08-18 05:55:38 +02:00
- LibSeat no longer panics on seat disable event.
- X11 backend will report an error when trying to present a dmabuf fails.
### Anvil
2021-10-17 20:46:00 +02:00
- Anvil now implements the x11 backend in smithay. Run by passing `--x11` into the arguments when launching.
- Passing `ANVIL_MUTEX_LOG` in environment variables now uses the slower `Mutex` logging drain.
2022-06-16 20:21:57 +02:00
- Only toplevel surfaces now get implicit keyboard focus
- Fix popup drawing for fullscreen windows
2021-07-25 11:46:06 +02:00
## version 0.3.0 (2021-07-25)
2021-07-21 18:47:44 +02:00
Large parts of Smithay were changed with numerous API changes. It is thus recommended to
approach version 0.3 as if it was a new crate altogether compared to 0.2.
The most notable changes are:
- Deep refactor of the graphics backends around a workflows centered on allocating graphics buffers,
and a Gles2-based renderer abstraction is provided.
- Support for DRM atomic modesetting as well as client-provided DMABUF
- Most backends are now `calloop` event sources generating events. The recommended organization for
your smithay-based compositor is thus to centralize most of your logic on a global state struct,
and delegate event handling to it via the shared data mechanism of `calloop`. Most of the callbacks
you provide to Smithay are given mutable access to this shared data.
- The `wayland::compositor` handling logic now automatically handles state tracking and delayed commit
for wayland surfaces.
Many thanks to the new contributors to Smithay, who contributed the following:
- Support for [`libseat`](https://sr.ht/~kennylevinsen/seatd/) as a session backend, by
@PolyMeilex
- Support for graphics tablets via the `tablet` protocol extension, by @PolyMeilex
- Support for running Smithay on `aarch64` architectures, by @cmeissl
- A rework of the `xdg-shell` handlers to better fit the protocol logic and correctly track configure
events, by @cmeissl
- Basic Xwayland support, by @psychon
2017-10-01 22:57:02 +02:00
2019-01-03 10:52:15 +01:00
## version 0.2.0 (2019-01-03)
2018-09-30 23:19:48 +02:00
### General
- **[Breaking]** Upgrade to wayland-rs 0.21
2018-12-28 17:30:11 +01:00
- **[Breaking]** Moving the public dependencies to a `reexports` module
- Migrate the codebase to Rust 2018
2018-09-30 23:19:48 +02:00
### Backends
- **[Breaking]** WinitBackend: Upgrade to winit 0.18
2018-12-28 17:30:11 +01:00
- **[Breaking]** Global refactor of the DRM & Session backends
- **[Breaking]** Restructuration of the backends around the `calloop` event-loop
2018-09-30 23:19:48 +02:00
### Clients & Protocol
- Basic XWayland support
2018-12-28 17:30:11 +01:00
- Data device & Drag'n'Drop support
- Custom client pointers support
2018-09-30 23:19:48 +02:00
2017-10-01 22:57:02 +02:00
## version 0.1.0 (2017-10-01)
### Protocol handling
- Low-level handling routines for several wayland globals:
- `wayland::shm` handles `wl_shm`
- `wayland::compositor` handles `wl_compositor` and `wl_subcompositor`
- `wayland::shell` handles `wl_shell` and `xdg_shell`
- `wayland::seat` handles `wl_seat`
- `wayland::output` handles `wl_output`
### Backend
- Winit backend (EGL context & input)
- DRM backend
- libinput backend
- glium integration