Releases: swaywm/wlroots
wlroots 0.14.1
This is bugfix release for wlroots 0.14.0. Simon Ser (10): surface: accept commits with buffer size not divisible by scale buffer: make enum wlr_buffer_cap public surface: allow locking pending state in commit handler Revert "backend/drm: populate cursor plane's current_fb" backend/drm: don't clear pending cursor FB on failed commit output: detach buffer from renderer before commit output-damage: fix output swapchain handling tablet-v2: fix pad and tool object versions backend/drm: force linear layout for multi-GPU buffers build: bump version to 0.14.1
wlroots 0.14.0
Release highlights:
- Renderer refactoring work is well underway: everything now uses the new infrastructure under-the-hood except the DRM backend's primary plane.
- The Pixman renderer has been merged, alongside new allocators (shared memory for Wayland/X11 and DRM dumb buffers).
- Session management is now completely offloaded to libseat.
- Support for the xdg-activation-v1 protocol has been merged.
Full changelog
Aleksei Bavshin (2):
xwayland: query window PIDs via XResQueryClientIds
xwayland: remove _NET_WM_PID handler
Benoit Gschwind (1):
Document the wlr_output_layout_get function
Brian McKenna (1):
Flush events in virtual pointer example
Isaac Freund (1):
gtk-primary-selection: drop support
Kenny Levinsen (12):
backend/session: Remove logind backend
ci: Add libseat-dev to alpine
backend/session: Make libseat mandatory
backend/session: Remove direct backend
backend/session: Remove noop backend
backend/session: Remove session_impl
backend/session: Close fd in wlr_session_close_file
backend/session: Close remaining devices on destroy
backend/drm: Do not require mode commit on enable
meson: Make private static library symbols local
ci: Build both static and shared
Revert "meson: Make private static library symbols local"
Roman Gilg (1):
backend: move get_drm_fd to public interface
Ryan Farley (2):
util/uuid: replace with util/token, remove libuuid
xwayland/sockets: ensure proper permissions
Simon Ser (135):
build: bump version to 0.14.0
render: drop wlr_renderer_blit_dmabuf
render: remove wlr_texture_to_dmabuf
render: drop support for ellipses
Remove WLR_HAS_XCB_ERRORS
build: disable libseat subproject server and man pages
build: remove wayland-scanner fallback
backend/libinput: terminate display on error
backend/drm: terminate display on drmHandleEvent failure
backend/x11: check for connection errors
render/gles2: prevent imported DMA-BUF textures from being mutated
examples/rotation: error out on invalid option
readme: mark libseat as mandatory dep
buffer: introduce wlr_buffer_get_shm
render: introduce shared memory allocator
backend/wayland: add support for wl_shm buffers
backend/wayland: fallback to wl_shm on missing render node
examples: use wlr_output_preferred_mode
examples: remove dependency on GLES2 for compositor examples
Stop specifying xkb_rule_names
linux-dmabuf-v1: drop some from_resource helpers
linux-dmabuf-v1: split params and buffer
render/gles2: log when creating renderer
output: correctly handle outputs without a test() impl
render/pixman: cleanup when renderer is destroyed
render/gles2: destroy textures on renderer teardown
render/pixman: destroy textures on renderer teardown
render: remove NULL checks in wlr_texture_impl.destroy
readme: update and cleanup xcb deps
readme: mention IRC channel
readme: use webchat link for IRC channel
render: unconditionally read WLR_RENDERER
Log drmGetDevices2 error code
xcursor: quiet debug log
backend/drm: fail instead of stripping a modifier
backend/drm: clarify error message on drmModeAddFB fallback
backend/drm: destroy when parent is destroyed
backend/session: add wlr_device.events.remove
backend/drm: destroy backend on udev remove event
backend/drm: carry on when disabling a CRTC fails
Revert "backend/drm: fail instead of stripping a modifier"
buffer: add format param to get_data_ptr
render/pixman: check format is supported in create_buffer
Log when WLR_BACKENDS/WLR_RENDERER is set
backend/drm: reword wlr_renderer failure message
render: remove wlr_ prefix from wlr_renderer_autocreate_with_drm_fd
render/allocator: add allocator_autocreate_with_drm_fd
backend/drm: fix allocator DRM FD on multi-GPU setups
render/gles2: assert texture comes from the same renderer
backend/drm: take wlr_output_state as arg in crtc_commit
backend/drm: take wlr_output_state as arg in commit callers
backend/drm: fill scratch wlr_output_state for set_mode
backend/drm: remove wlr_drm_crtc.pending_modeset
backend/drm: remove wlr_drm_crtc_state.active
backend/drm: remove wlr_drm_crtc_state.mode
backend/drm: remove mode arg from drm_connector_init_renderer
backend/drm: remove mode arg from drm_connector_set_mode
backend/drm: take output state arg in drm_connector_commit_buffer
backend/drm: take a wlr_drm_connector instead of a wlr_output
backend/drm: introduce drm_connector_commit_state
backend/headless: dup DRM FD in wlr_headless_backend_create_with_renderer
build: move wayland-protocols dep to protocol/
render/egl: query and display EGL driver name
render: remove wlr_texture_get_size
render/gles2: remove unnecessary EGL import ext checks
linux-dmabuf-v1: implement wlr_buffer
render/gles2: add gles2_texture_create
render: introduce wlr_texture_from_buffer
render/gles2: implement texture_from_buffer
buffer: use wlr_texture_from_buffer for DMA-BUFs
screencopy-v1: stop using wlr_client_buffer
backend/drm: use wlr_texture_from_buffer
render/gbm_allocator: add support for gbm_bo_get_fd_for_plane
render/pixman: avoid sqrt() in render_quad without rotation
render: relax stride check in wlr_texture_from_pixels
backend: introduce wlr_backend_finish
backend: automatically create renderer
backend: automatically create allocator
backend/wayland: use common renderer and allocator
backend/headless: use common renderer and allocator
backend/x11: use common renderer and allocator
readme: add link to IRC web client
readme: fix broken IRC web client link
contributing: add link to IRC web chat
render/gles2: fix texture cleanup on destroy
render/drm_dumb_allocator: check for DRM master
render/allocator: add wlr_allocator.buffer_caps
backend: stop using renderer to get the buffer type
render: disallow wlr_renderer_destroy while rendering
render: add wlr_renderer_begin_with_buffer
output: add get_cursor_formats and get_cursor_size to interface
backend/wayland: implement get_cursor_formats
backend/drm: implement get_cursor_formats and get_cursor_size
backend/drm: remove format arg from drm_plane_init_surface
backend/drm: introduce drm_plane_pick_render_format
output: take a wlr_buffer in set_cursor
backend/drm: move cursor fields to wlr_drm_connector
xdg-activation-v1: new protocol implementation
xdg-activation-v1: add token timeout
surface: allow placing subsurfaces below parent
buffer: replace get_data_ptr with {begin,end}_data_ptr_access
render/gles2: add support for DATA_PTR buffers in texture_from_buffer
render/pixman: implement texture_from_buffer
buffer: introduce wlr_shm_client_buffer
buffer: use wlr_texture_from_buffer for wl_shm_buffer
output: add get_primary_formats to interface
output: split output_pick_cursor_format
output: make attach_render and rollback_render optional
backend/headless: remove swapchain
backend/x11: implement get_dmabuf_primary_formats
backend/x11: remove swapchain
backend/wayland: implement get_dmabuf_primary_formats
backend/wayland: remove swapchain
matrix: deprecate wlr_matrix_projection
screencopy-v1: use wlr_renderer_begin_with_buffer
output: use wlr_renderer_begin_with_buffer for cursor
backend/x11: use wlr_renderer_begin_with_buffer for cursor
render: drop wlr_ prefix from wlr_renderer_bind_buffer
render: add missing arg to wlr_renderer_impl.get_buffer_caps
backend/drm: use atomic test-only commits for modifier fallback
backend/drm: allow committing a buffer and a mode together
backend/drm: introduce drm_connector_alloc_crtc
backend/drm: allocate a CRTC in drm_connector_commit_state
backend/drm: allocate a CRTC in drm_connector_test
backend/drm: move drm_connector_set_pending_fb up
backend/drm: move session check from test_buffer to drm_connector_test
backend/drm: remove test_buffer
output: reset back buffer on failed commit
backend/drm: populate cursor plane's current_fb
backend/session: use drmIsKMS
backend/session: use DRM_PRIMARY_MINOR_NAME
build: simplify version script
xdg-activation-v1: fix wlr_xdg_activation_v1_create error path
backend: add output state allow-lists
Revert "build: workaround for meson disabler object not working with if not"
Simon Zeni (22):
render: rename get_dmabuf_render_formats into get_render_formats
buffer: introduce wlr_buffer_get_data_ptr
render: introduce pixman renderer
renderer: create pixman renderer if getting drm fd failed
examples: introduce quads example
examples/rotation: remove unused includes
render/gles2: introduce wlr_gles2_renderer_create_with_drm_fd
render: introduce WLR_RENDERER in wlr_renderer_autocreate_with_drm_fd
render/egl: fail on EGL_MESA_device_software
render/pixman: implement preferred_read_format
pixman: implement read pixels
types/wlr_screencopy_v1: log error on read pixels failure
render/gbm_allocator: make wlr_gbm_allocator_create return a wlr_allocator
render/shm_allocator: make wlr_shm_allocator_create return a wlr_allocator
types/wlr_buffer: introduce wl...
wlroots 0.13.0
wlroots 0.13.0 includes the following breaking changes.
Breaking changes for compositors
These changes can affect most compositors.
- Replace wlr_key_state with wl_keyboard_key_state (#2446):
enum wlr_key_state
has been replaced withenum wl_keyboard_key_state
- Use
uint32_t
inwlr_renderer_begin
signature (#2433) - Remove unneeded includes from
wlr_input_device.h
(#2470) - Renderer v6, incremental version (#2240): some implicit assumptions about
wlr_renderer
's EGL context no longer hold true. Compositors not using EGL
directly shouldn't be affected.- wlroots' framebuffer no longer is the EGL default framebuffer
- wlroots' framebuffer no longer has a depth attachment
- Remove
wlr_create_renderer_func_t
(#2561)wlr_backend_autocreate
,wlr_drm_backend_create
,wlr_headless_backend_create
,wlr_wl_backend_create
,wlr_x11_backend_create
no longer take awlr_renderer_create_func_t
parameter- The
wlr_renderer_create_func_t
type has been removed
- backend/noop: listen to display destroy and destroy the backend (#2583):
the noop backend should no longer be manually destroyed after thewl_display
- xdg shell: remove
wlr_xdg_surface_for_each_popup
(#2610)
wlr_xdg_surface_for_each_popup
has been removed, use
wlr_xdg_surface_for_each_popup_surface
instead. - layer shell: rename popup iterator for consistency (#2617):
wlr_layer_surface_v1_for_each_popup
has been renamed to
wlr_layer_surface_v1_for_each_popup_surface
. - Keyboard interactivity options (#2555):
wlr_layer_surface_v1_state.keyboard_interactivity
has now the type
enum zwlr_layer_surface_v1_keyboard_interactivity
to reflect protocol changes. - output: remove scale/transform events (#2631): the
scale
andtransform
output events have been removed, compositors should use thecommit
event instead. - output: send commit event after pending state is cleared (#2630):
compositors can no longer read the to-be-committed state fromwlr_output.pending
in an outputcommit
event handler. Instead, use the current state andwlr_output_event_commit
. - render/wlr_texture: clamp texture coordinates to edge by default (#2476):
the GLES2 renderer no longer wraps textures withGL_REPEAT
. If you want to repeat a texture, manually change wlroots' default viaglTexParameteri
. - text_input_v3: correct typo in enum field (#2735):
WLR_TEXT_INPUT_v3_FEATURE_CONTENT_TYPE
has been renamed toWLR_TEXT_INPUT_V3_FEATURE_CONTENT_TYPE
. - Stop using
wl_shm_format
(#2744): the renderer functions takeDRM_FORMAT_*
values instead ofWL_SHM_FORMAT_*
. Make sure you don't have any remainingWL_SHM_FORMAT_*
enum values in your compositor.wlr_renderer_read_pixels
now takes a DRM format code instead of anenum wl_shm_format
wlr_renderer_get_shm_texture_formats
now returns DRM format codes instead of anenum wl_shm_format
wlr_renderer_read_pixels
now takes a DRM format code instead of anenum wl_shm_format
wlr_output_preferred_read_format
now returns a DRM format code instead of anenum wl_shm_format
Breaking changes for custom backends and renderers
These changes are unlikely to affect compositors that don't have a custom
backend or renderer.
- render: add
wlr_renderer_get_dmabuf_render_formats
(#2483)wlr_egl_get_dmabuf_formats
has been renamed towlr_egl_get_dmabuf_texture_formats
wlr_renderer_get_formats
has been renamed towlr_renderer_get_shm_texture_formats
wlr_renderer_get_dmabuf_formats
has been renamed towlr_renderer_get_dmabuf_texture_formats
wlr_renderer_format_supported
has been removed (instead, usewlr_renderer_get_shm_texture_formats
)
- backend/session: misc. refactoring, replace CanGraphical with udev (#2465)
wlr_drm_backend_create
takes awlr_device
instead of a DRM FDwlr_device.signal
has been replaced bywlr_device.events.change
wlr_session.session_signal
has been replaced bywlr_session.events.active
wlr_session_open_file
andwlr_session_close_file
now take awlr_device
instead of a FDwlr_session_find_gpus
now fills an array ofwlr_device
pointers instead of an array of FDs
- backend/session: allow wlr_session_find_gpus to return an error (#2578):
wlr_session_find_gpus
now returns assize_t
instead of asize_t
- render/egl: remove unused features, introduce create/destroy (#2623)
- The
EGLint visual_id
parameter ofwlr_egl_init
has been removed. wlr_egl_swap_buffers
has been removed.wlr_egl_init
andwlr_egl_finish
have been replaced withwlr_egl_create
andwlr_egl_destroy
.wlr_egl_make_current
no longer takes the argumentsEGLSurface surface, int *buffer_age
.
- The
- Remove
wlr_egl
from backends (#2602):wlr_renderer_autocreate
no
longer takes astruct wlr_egl *
as parameter. - Drop EGL from wlr_renderer_autocreate (#2639):
wlr_renderer_autocreate
no longer takes the argumentsEGLenum platform, void *remote_display
.
Instead it takes astruct wlr_backend *
. - render/egl: remove
config_attribs
,wlr_egl.config
andwlr_egl_{create,destroy}_surface
(#2666) - region: make wlr_region_create private (#2662)
- surface: make wlr_surface_create private (#2814)
- Add static+const qualifiers (#2720):
wlr_tablet.impl
is nowconst
- Update output transform matrix calculation (#2770): the projection has been moved from
wlr_output.transform_matrix
to the GLES2 renderer. Compositors usingwlr_output.transform_matrix
only with the GLES2 renderer don't need an update.
Full changelog
Andri Yngvason (1):
types/seat: Clear focus in wlr_seat_destroy()
Ariadne Conill (1):
drm: add fallback drmModeAddFB for drivers which do not support drmModeAddFB2
Brandon Dowdy (7):
examples: remove dependency on wlr_egl from clients
render/egl: remove wlr_egl_{create,destroy}_surface
render/egl: remove *config_attribs and wlr_egl->config
examples: remove "major" and "minor" from egl_common.c
render/egl: add check for EGL_KHR_surfaceless_context
examples/egl_common: make attribs const
region: remove leftover description of resource_list
BrassyPanache (1):
Expose ICCCM input status
Chris Chamberlain (1):
Free xwayland cursor in wlr_xwayland_destroy
Daniel Kondor (1):
layer-shell: allow new values for keyboard-interactivity
Dominik Honnef (1):
xwayland: use pipe instead of SIGUSR1 to signal readiness
Ilia Bozhinov (10):
texture: document that functions should not be called while rendering
xwm: add wlr_xwayland_surface_restack()
drm: do not unset make/model before emitting destroy event
egl: fix memory leak
noop: listen to display destroy and destroy the backend
util: add support for generating UUIDs
xdg-shell: add wlr_xdg_toplevel_set_parent
types: add wlr_xdg_foreign_registry
types: add wlr_xdg_foreign_v1
types: add wlr_xdg_foreign_v2
Ilia Mirkin (8):
backend/x11: set a blank cursor rather than hiding globally
backend/x11: make sure output transform matrix is initialized
backend/x11: add support for scanout mode
backend/x11: skip events we don't care about
backend/x11: keep track of exposed rects, add them to damage regions
xwayland: free render picture backing cursor
backend/x11: use native cursors
backend/x11: clamp hotspot to texture bounds
Isaac Freund (28):
Replace wlr_key_state with wl_keyboard_key_state
Use uint32_t in wlr_renderer_begin signature
Remove unneeded includes from wlr_input_device.h
backend/libseat: fix change_vt return value
wlr-output-management: add missing NULL check
screencopy: handle compositor not setting damage
screencopy: use output transform for damage copy
screencopy: check if damage committed before copy
screencopy: don't use output transform for damage copy
docs: fix error in wlr_output_set_damage() comment
xwayland: avoid crash on repeated server_finish_display() call
subsurface: handle NULL parent in get_root_surface
toplevel-management: ignore inert seats
toplevel-management: handle strdup failure
toplevel-management: avoid redundant state events
docs: wlr_surface_from_resource cannot return NULL
primary selection: destroy devices before manager
gtk primary selection: destroy devices before manager
layer shell: advertise version 3
xdg shell: make unconstrain_from_box arg const
xdg shell: add wlr_xdg_surface_for_each_popup_surface()
xdg shell: add wlr_xdg_surface_popup_surface_at()
layer shell: add wlr_layer_surface_v1_popup_surface_at()
xdg/layer shell: reduce code duplication in iterators
output-management: use same types as wlr_output
xdg shell: remove wlr_xdg_surface_for_each_popup()
layer shell: rename popup iterator for consistency
xdg-output: destroy outputs before manager
Justus Rossmeier (1):
tablet_v2: Fix implicit grab end detection
Kenny Levinsen (7):
backend/drm: Use legacy gamma size for legacy backend
surface: Make send_enter store entered outputs
backend/wayland: Avoid uninitialized read
wlr_seat_pointer: Remove log on notify_button
backend/session/libseat: Set loglevel to INFO
docs: Minor libseat corrections
xdg_shell: Fix invert_y of top right anchor
Lukas Märdian (2):
Fix false positive -Wstringop-truncation
xcursor: use strncat instead of strncpy
Manuel Stoeckl (3):
xwayland/xwm: make atom_map const
xcursor: make cursor data and metadata ...
wlroots 0.12.0
Note: the PGP signing key has changed to 34FF9526CFEF0E97A340E2E40FDE7BE0E88F5E48.
wlroots 0.12.0 includes the following breaking changes:
render/gles2: remove gles2_procs global (#2351)
The wlr_gles2_texture_from_*
family of functions are no longer public API.
Remove xdg-shell-unstable-v6 support (#2391)
wlr_xdg_shell_v6
has been dropped and is superseded by wlr_xdg_shell
.
output: fix blurred hw cursors with fractional scaling (#2107)
For backends: wlr_output_impl.set_cursor
now takes a float scale
instead of an int32_t
.
Introduce wlr_output_event_commit (#2315)
The wlr_output.events.commit
event now has a data argument of type struct wlr_output_event_commit *
instead of struct wlr_output *
.
Full changelog
Antonin Décimo (3):
Fix typos
Fix incorrect format parameters
xwayland: free server in error path
Daniel De Graaf (1):
wlr_virtual_keyboard: fix fd leak
Daniel Kondor (2):
foreign-toplevel-management: report parent toplevel
foreign toplevel: send parent event only to clients that support it
Devin J. Pohly (1):
drm: fix uninitialized read
Drew DeVault (1):
Remove xdg-shell v6
Guido Cella (1):
render: Don't crash on 0 dimensions
Ilia Bozhinov (9):
xwayland: do not allow apps to change focus after wlroots request
make sure to fail setting gamma on disabled outputs
backend/wayland: destroy relative pointer when output is disconnected
wayland: emit relative pointer events only for current pointer
xwayland: disconnect display destroy listener even if xwayland didn't initialize
xwayland: add set_geometry event
backend/wayland: add touch support to the wayland backend
xdg_shell: fix a typo
xdg_shell: handle inert popups
Isaac Freund (6):
xdg-shell: split last-acked and current state
layer-shell: add for_each_popup
layer-shell: error on 0 dimension without anchors
xdg_positioner: remove unused field
wlr_drag: remove unused point_destroy field
xwayland: remove unused listener
Kenny Levinsen (2):
session: Add libseat backend
session: Add missing init to direct-freebsd
Marten Ringwelski (1):
backend/drm: Check if output is enabled before sending frame event
Mykola Orliuk (5):
backend/wayland: manage cursor for current pointer
backend/wayland: factor out wlr_wl_seat
backend/wayland: add error flow in create_wl_seat
backend/wayland: fix input creation error handling
backend/wayland: fix some keyboard/touch leaks
Patrick Steinhardt (1):
session: Don't refuse unprivileged creation of "direct" backend
Roman Gilg (3):
output-management-v1: add head identifying events
output-management-v1: send head identifying information
output-management-v1: send complete head state on enable change
Ronan Pigott (1):
virtual_pointer: remember current axis for axis events
Rouven Czerwinski (2):
examples: remove unnecessary gles2.h imports
xwm: add loop detection for read_surface_parent
Ryan Walklin (4):
Implement logind session SetType method to change session type to wayland
Also set XDG_SESSION_TYPE
Don't set XDG_SESSION_TYPE unless logind SetType succeeds
Quieten failure to set login session type
Scott Moreau (2):
xwm: Set _NET_WM_STATE_FOCUSED property for the focused surface
foreign toplevel: Fix whitespace error
Simon Ser (31):
xwayland/xwm: don't insert surface in list on error
xwayland/xwm: add prop count assert in xsurface_set_net_wm_state
xwayland/xwm: use initializer for props in xsurface_set_wm_state
render/gles2: make wlr_gles2_texture_from_* private
render/gles2: keep ref to wlr_gles2_renderer in wlr_gles2_texture
render/gles2: make push/pop debug functions take a wlr_renderer
render/gles2: remove gles2_procs
gamma-control-v1: fix use-after-free in gamma_control_handle_set_gamma
examples/simple: use wlr_output_preferred_mode
examples/simple: use wlr_renderer instead of GL
Remove unnecessary wl_display_dispatch calls
output: introduce wlr_output_event_commit
output-power-management-v1: listen to output commit
examples/dmabuf-capture: add extra roundtrip for wl_output listener
backend/session/libseat: register log handler
backend: remove check for _WAYLAND_DISPLAY
backend/libinput: improve logger callback
render: define EGL_NO_PLATFORM_SPECIFIC_TYPES (#2452)
backend/drm: fix "a page-flip is already pending" errors on modeset
xwayland: minor code style fixes
xwayland: log unhandled NET_WM_STATE property changes
gamma-control-v1: apply gamma LUT when output gets enabled
screencopy: stop setting needs_frame flag
backend/drm: export pending FB in export_dmabuf, if any
output: update docs to reflect reality
output: add when field to wlr_output_event_commit
export-dmabuf: export DMA-BUF on output commit
screencopy: perform DMA-BUF copy on output commit
screencopy: send failed when copying a DMA-BUF with a region
input-method: send modifiers in set_keyboard
Update version to 0.12.0
Tobias Langendorf (1):
xwm: add support for xwayland minimize
Tudor Brindus (11):
examples: use `perror` instead of `fprintf` GNU %m `printf` extension
xwayland: using %m in `wlr_log` is broken, use `wlr_log_errno` instead
xwayland: fix use-after-free in selection handling
xwayland: introduce WLR_XWAYLAND for specifying which Xwayland to use
xwayland: remove stale transfers from the same requestor
xwayland: notify requestor when we fail to respond to their request
xwayland: fix minor typo in debug log
types/wlr_keyboard: use bitmasks for wlr_keyboard_led and wlr_keyboard_modifier enums
types/wlr_output_layout: use bitmask for wlr_direction
util/edges: use bitmask for wlr_edges
render/dmabuf: use bitmask for wlr_dmabuf_attributes_flags
Valentin (2):
Use fixed size integer type
Fix undefined behavior
nerdopolis (1):
Accommodate for CONFIG_VT=0, all TTYs are in seat0, but not all seat0s have TTYs
wlroots 0.11.0
wlroots 0.11.0 includes the following breaking changes:
build: replace version with soversion (#2005)
WLR_VERSION_API_*
definitions are dropped.
Fix wl_output_transform rotation direction, and composition (#2023)
Output transformations have been aligned with the Wayland protocol's
definition.
backend/drm: add support for custom modes (#1881)
wlr_drm_connector_add_mode
now returns the new mode instead of a bool
.
Introduce wlr_client_buffer (#2043)
Compositors that don't directly use wlr_buffer
shouldn't need an update. For
compositors which use it directly:
wlr_buffer
has been renamed towlr_client_buffer
wlr_buffer_{ref,unref,get_dmabuf}
andwlr_output_attach_buffer
still take
awlr_buffer
, compositors need to use&wlr_client_buffer->base
wlr_buffer_create
andwlr_buffer_apply_damage
have been renamed to
wlr_client_buffer_create
andwlr_client_buffer_apply_damage
wlr_buffer_get_resource_size
has been renamed to
wlr_resource_get_buffer_size
Augment wlr_buffer to support swapchains (#2044)
- Compositors that want to keep a reference to a
wlr_buffer
to read it later
should callwlr_buffer_lock
andwlr_buffer_unlock
instead of
wlr_buffer_ref
andwlr_buffer_unref
. Same applies to backends. wlr_client_buffer_create
has been renamed towlr_client_buffer_import
.
Callers need towlr_buffer_unlock
the resulting buffer once they're done
with it.- Users who create buffers need to call
wlr_buffer_drop
instead of
wlr_buffer_unref
.
output: remove wlr_output_impl.schedule_frame (#2046)
For backends: wlr_output_impl.schedule_frame
has been removed.
output: replace wlr_output.damage with a damage event (#2065)
wlr_output.damage
is removed, listen to wlr_output.events.damage
instead.
Implement the viewporter protocol (#2092)
Renderer implementations need to be updated, render_texture_with_matrix
has
been replaced with render_subtexture_with_matrix
which allows specifying a
source rectangle.
output: introduce wlr_output_test (#2097)
- For compositors:
wlr_output_attach_buffer
doesn't return abool
anymore.
The checks previously performed in this function are now performed in
wlr_output_commit
and the newwlr_output_test
function. - For backends:
wlr_output_impl.attach_buffer
is gone, buffer checks now need
to be performed incommit
. A newtest
function has been added.
output: fix blurred hw cursors with fractional scaling (#2107)
For backends: wlr_output_impl.set_cursor
now takes a float scale
instead of
an int32_t
.
Texture improvements (#2139)
For renderers:
wlr_texture_init
now takes the size of the texturewlr_texture_impl.get_size
has been removed
xwayland: split server (#2175)
wlr_xwayland.display_name
is now a const char *
field. Most compositors
should still be able to use it like before. Server-specific fields have been
moved from wlr_xwayland
to wlr_xwayland_server
.
Make wlr_xcursor_manager_load() return a bool (#2195)
wlr_xcursor_manager_load
now returns a bool. Compositors that check the
return value need to invert their check.
output: make wlr_output_set_gamma atomic (#2196)
wlr_output_set_gamma
is now double-buffered and applied on the next output
commitwlr_output_impl.set_gamma
is gone. Backends now need to read the pending
output state on commit instead.
Allow keyboard and pointer grabs to hook clear_focus() (#2217)
The wlr_seat_*_enter
family of functions used to segfault when a NULL
surface was passed under some circumstances, they now assert that the surface
isn't NULL.
backend/drm: atomic improvements (#2238)
wlr_output_enable_adaptive_sync
must now be followed by wlr_output_commit
to apply the change.
render: choose DMA-BUF texture target via eglQueryDmaBufModifiersEXT (#2255)
wlr_egl_create_image_from_dmabuf
now takes an additional external_only
argument.
output: fix dangling renderer context after wlr_output_preferred_read_format (#2292)
For backends: wlr_output_impl.rollback
has been renamed to rollback_render
and now needs to unconditionally unset the renderer context. It'll only be
called if attach_render
has previously been called.
layer-shell: remove unused surface list (#2309)
wlr_layer_shell_v1.surfaces
has been removed.
Aleksei Bavshin (1):
xdg-shell: fix popups rendered outside of the screen
Andri Yngvason (15):
virtual-pointer: Add request for mapping to specific output
export-dmabuf: Schedule output frame on request
export-dmabuf: Keep frame->output = NULL until frame is ready
render: egl: Add utility functions for saving/restoring context
render: Add wlr_renderer_blit_dmabuf()
protocol: screencopy: Extend to report linux-dmabuf capability
screencopy: Implement copying into linux-dmabuf
examples: Add screencopy-dmabuf example
render: Fix blit_dmabuf() breakage due to API change
backend: drm: Fix dmabuf resource leak
screencopy: Use correct constant for y-inversion
render: gles2: Fix y-inversion in gles2_blit_dmabuf()
screencopy: Use correct dmabuf to get y-inversion flag
examples: screencopy-dmabuf: Fix y-inversion
render: egl: Use current display to restore NULL context
Brian Ashworth (2):
meson.build: update wayland requirement to 1.18
wlr_keyboard_group: introduce enter and leave
David96 (1):
Add wlr_surface_accepts_touch
Dorota Czaplejewicz (1):
text_input_v3: Note features supported by the text field
Filip Sandborg (1):
Fix uint32 overflow in fill_empty_gamma_table on Icelake platform
Greg Depoire--Ferrer (1):
tinywl: Fix wrong anchor point while resizing a window
Greg V (1):
xdg-shell: check for existing role before setting xdg_popup_surface_role
Guido Günther (4):
Add wlr-output-power-management
Implement wlr-output-power-management-v1
examples: add output-power-management example client
wlr_output_power_management_v1: Init output_power->link
Ilia Bozhinov (2):
output-management: add current_configuration_dirty
examples: make output-power-management oneshot by default
Isaac Freund (16):
Send keyboard enter/leave on capability change
Properly popluate keys array for enter on creation
Send pointer enter/leave on capability change
Return failure of wlr_renderer_init_wl_display()
Return false on wlr_keyboard_set_keymap() failure
tinywl: remove redundant create output global call
Document the events of wlr_layer_surface
tinywl: remove unused variables
tinywl: handle request set selection
layer shell: only send unmap on close if mapped
Make wlr_xcursor_manager_load() return a bool
layer-shell: handle serial wrapping overflow
xdg-shell: handle serial wrapping overflow
xdg-decoration: free old configure structs
layer-shell: upgrade to v3, implement destructor
layer-shell: remove unused surface list
Jan Beich (2):
backend/session: allow GPU enumeration on FreeBSD
xcursor: also look for cursor themes under ${datadir}/icons by default
Jan Staněk (1):
Declare wlr_seat globals as extern
John Chadwick (1):
xwm: end transfers when the requestor is destroyed
JonnyMako (1):
backend/drm: fix missing cursor on external monitors with multi-GPU setup and nouveau
Julien Olivain (1):
render/egl: include EGL/eglmesaext.h only if present
Kalyan Sriram (2):
tinywl: fix geo_box bug in cursor resizing
Don't send redundant capability updates
Kenny Levinsen (3):
logind: Close fd before releasing device
seat: Create inert objects for missing capabilities
wlr_drag: Destroy drag after releasing grabs
Kirill Chibisov (1):
xcursor: add xorg-x11 and cursors path to XCURSORPATH
Manuel Stoeckl (2):
Fix output rotation direction
output: fix output transform compositions
Michael Weiser (3):
keyboard-shortcuts-inhibit: Implement the protocol
keyboard-shortcuts-inhibit: Add client example
idle-inhibit: Style and naming improvements
Rabit (1):
Prevent memory leak in copypaste of the screencopy example
Rouven Czerwinski (4):
backend/drm: add env variable to disable modifiers
backend/drm: remove overzealous finish_drm_surface
render: assert sane values for box functions
surface: don't unset width and height in finalize
Scott Anderson (8):
meson: Fix protocol includes for compositor examples
examples: Fix compositor-examples
wlr_surface: Post error if multiple role objects created
backend/drm: introduce wlr_drm_fb
backend/drm: don't have fallback atomic commits
backend/drm: move atomic cursor code into pageflip code
backend/drm: don't allow legacy to use direct scanout
Remove libcap support
Scott Moreau (3):
build: Add 'auto' to logind-provider combo option
xwayland: Don't discard ready signals
xwm: Destroy xwm on hangup or error
Simon Ser (129):
build: replace version with soversion
render: unconditionally disable implicit X11 includes
meson: fix wayland-server minimum required version
util: add wlr_output_destroy_safe
output: don't destroy global immediately
seat: don't destroy global immediately
xwayland: ignore pointer focus changes
backend/wayland: rename wl_seat.c to seat.c
output: remove wlr_output_impl.schedule_frame
backend/wayland: fix seat caps handling
Introduce wlr_client_buffer
output: add adaptive_sync_enabled property
back...
wlroots 0.10.1
This is a bugfix release for wlroots 0.10.0. Aleksei Bavshin (1): xdg-shell: fix popups rendered outside of the screen Scott Anderson (2): meson: Fix protocol includes for compositor examples examples: Fix compositor-examples Simon Ser (2): xwayland: ignore pointer focus changes Update version to 0.10.1
wlroots 0.10.0
wlroots 0.10.0 includes the following breaking changes:
The RDP backend has been removed (#1988)
The RDP (remote desktop) backend has been removed entirely in favor of solutions like wayvnc.
wlroots 0.10.0
Drew DeVault (1):
Drop RDP backend
Jan Staněk (1):
Honor the `examples` meson setting
Jason (1):
Allow WLR_RDP_PORT to be any valid TCP/UDP port number
Scott Anderson (1):
Bump meson version to 0.51.2
Simon Ser (9):
backend/wayland: listen to wl_buffer.release events
backend/wayland: handle display errors more gracefully
render/egl: remove SURFACELESS_MESA special case
render/gles2: unbind textures after use
docs: remove rootston-specific env vars
docs: establish one section per backend
docs: document XDG_SESSION_ID
backend/drm: prevent outputs from being destroyed on commit
keyboard-group: two NULL keymaps are equal
xdavidwu (1):
text-input: fix missing destroy signal init
0.9.1
0.9.0
wlroots 0.9.0 includes the following breaking changes:
layer_shell: set layer of existing surface #1842
The layer of a layer surface may now be changed at runtime. The layer
field has been removed from struct wlr_layer_surface_v1
and introduced to struct wlr_layer_surface_v1_state
.
backend/drm: add support for custom modes #1881
wlr_drm_connector_add_mode
now returns the new mode instead of a bool.
Simplify globals implementation by removing destructors #1915
Destructors and resource lists for static globals have been removed.
Improve presentation-time API #1919
Instead of calling wlr_presentation_surface_sampled
at render time and wlr_presentation_send_surface_presented
at presentation time, most compositors now just need to call wlr_presentation_surface_sampled_on_output
at render time. Compositors that call wlr_buffer_ref
need to call wlr_presentation_surface_sampled
when they ref the buffer, wlr_presentation_feedback_send_presented
when this buffer has been presented for the first time and then wlr_presentation_feedback_destroy
.
output: re-introduce atomic mode, enabled, scale and transform #1797
- Compositors now need to call
wlr_output_commit
afterwlr_output_enable
,wlr_output_set_mode
,wlr_output_set_custom_mode
,wlr_output_set_transform
orwlr_output_set_scale
wlr_output_set_mode
no longer implicitly enables the output, compositors need to callwlr_output_enable
as well- Compositors now need to call
wlr_output_rollback
afterwlr_output_attach_render
if they decide not to render
Alynx Zhou (1):
Skip assign when sub_x or sub_y is NULL in wlr_surface_surface_at
Andri Yngvason (3):
output: Add commit sequence number
protocol/screencopy: Add damage reporting
screencopy: Implement damage reporting
Brian Ashworth (2):
Introduce wlr_keyboard_group
wlr_keyboard_group: fix mem leak in refresh_state
Danilo Spinella (1):
Add new define EGL_NO_X11 for newer mesa library
Dorota Czaplejewicz (1):
virtual_keyboard: Accept keycode 0
Drew DeVault (1):
Introduce wlr_renderer_get_egl
Ferdinand Bachmann (1):
Add missing include required by mesa and libglvnd change
György Kurucz (1):
Fix heap-use-after-free in wlr_send_tablet_v2_tablet_pad_leave
Ilia Bozhinov (1):
wlr_box: properly calculate closest point for non-positive area boxes
Ivan Molodetskikh (1):
output: add block_idle_frame
Jan Beich (1):
examples: set mode when creating shm object
Jason (2):
Amend typos
Amend typo
Josef Gajdusek (1):
virtual-pointer: Add support for the wlr-virtual-pointer-unstable-v1
Manuel Stoeckl (1):
output: fix cursor wl_surface.{enter,leave} tracking
Ronan Pigott (2):
session/logind: support CanGraphical property
render/gles2: do not set GL_TEXTURE_MAG_FILTER
Rouven Czerwinski (1):
backend/drm: print preferred mode
Scott Anderson (8):
backend/x11: Give X11 a real rendering loop
session/logind: Clean up add_signal_matches
render/gles: Simplify textures a bit
backend: Do not attempt DRM on X11/WL failure
backend/x11: Drop required present version
backend/x11: Revert usage of present extension
meson: Various improvements
meson: Remove tag generation
Scott Moreau (3):
xwayland: Expose configure request mask
build: Pass library as first argument to pkgconfig.generate()
xwayland: Clean up if Xwayland fails to start
Simon Ser (51):
build: workaround for meson disabler object not working with if not
render/egl: support formats with zero modifiers
backend/drm: use modifiers for our GBM buffers
build: simplify by using disabler deps
backend/wayland: add support for direct scan-out
render/gles2: don't unset the current EGL surface when destroying texture
protocol: sync layer-shell with upstream
backend/drm: track gbm_bo during direct scan-out
render/egl: prevent use-after-free when destroying current surface
backend/drm: retry without modifiers for the primary plane
backend/drm: add support for custom modes
output-management-v1: add assertion as a safety net
render: remove EGL includes from wlr_texture.h
render/gles2: provide public API to access GL texture
backend/wayland: add support for relative-pointer-unstable-v1
backend/wayland: expose remote objects
output: add wlr_output_event_present.commit_seq
Add -Wmissing-prototypes
output: set wlr_output.commit_seq before firing the commit event
output: fix off-by-one wlr_output_event_present.commit_seq
presentation-time: make API more flexible
presentation-time: add helper for common case
backend/wayland: add support for presentation-time
render: remove return in wlr_texture_get_size
Simplify globals implementation by removing destructors
Revert "output: add block_idle_frame"
keyboard: emit key events without keymap
backend/drm, backend/libinput: listen to session destroy
backend/drm: fix segfault in init_drm_surface
backend/drm: add BenQ to manufacturer list
buffer: improve error handling
surface: don't unref the current buffer on failure
output: fix wlr_output_preferred_mode fallback
Refactor EGL/GL API loading
ci: add xorgproto dep to Arch build
render: fix EGL extensions not loaded
Revert "ci: add xorgproto dep to Arch build"
ci: add a build run with all features disabled
output: add description
xdg-output-v1: use wlr_output.description
output-management-v1: use wlr_output.description
output: re-introduce atomic mode, enabled, scale and transform
backend/drm: modeset before enabling an output
output: clear pending bit if pending == current
output: refuse to commit a buffer or modeset a disabled output
tinywl: enable and commit output when modesetting
xdg-shell: fix inert xdg_surface handling
xdg-shell: make wlr_xdg_surface_from_resource reject NULL
output: only advertise current mode
backend/drm: don't modeset with a NULL mode after TTY switch
render: guard rendering operations between begin() and end()
Timidger (2):
layer_shell: set layer of existing surface
Use layer shell v2
Ting-Wei Lan (1):
backend/session/freebsd: Fix the way to get TTY path
myfreeweb (1):
Send tablet tool frame on proximity_out
n3rdopolis (2):
Update environment variable documentation to include more backends
note libinput as well
wlroots 0.8.1
This update fixes Drew's continued ability to find novel ways to mess up releases. Filip Sandborg (1): render/gles2: fix calculation for partial gles2 pixel read (#1809) Ilia Bozhinov (1): layer-shell: ignore ack_configure() on closed surfaces Ivan Molodetskikh (2): presentation_feedback: add the sampled state drm: use IMPORT_FD for INVALID modifier Markus Ongyerth (3): Move initialization of wlr_tablet_pad into types/wlr_tablet_pad Add zwp-tablet-unstable-v2 client support Clean up wayland backend tablet support Rouven Czerwinski (1): backend/drm: check for mst: in path property Scott Anderson (1): render/egl: Change KHR_debug log to include error code Sebastian Krzyszkowiak (1): wlr_seat_touch: Destroy the touchpoint on client destroy Simon Ser (1): compositor: disconnect client on OOM in create_surface Versus Void (1): xdg-output: send wl_output.done after xdg_output created amingin (1): Fixes crash of compositor when unvalidated keycode 0 is passed (#1833)