wlroots 0.16.0
Planning for the next release.
Milestone: %0.16.0
Changes for packagers
- backend/drm: use pnp.ids to fetch EDID data (!3638 (merged)): hwdata is a new build-time dependency required for the DRM backend.
Breaking changes for compositors
These changes can affect most compositors.
-
layer-shell: fix type of margins (!3404 (merged))
-
wlr_layer_surface_v1_state.margin.{top,bottom,left,right}
type has been changed fromuint32_t
toint32_t
as specified by the protocol.
-
-
remove wlr_box.h redirection (!3405 (merged))
-
wlr/types/wlr_box.h
has been removed; usewlr/util/box.h
instead.
-
-
Split wl_compositor and wl_subcompositor implementation (!3412 (merged))
-
wlr_subcompositor
is not created automatically anymore on callingwlr_compositor_create()
; usewlr_subcompositor_create()
. -
wlr/types/wlr_surface.h
has been deprecated; usewlr/types/compositor.h
andwlr/types/wlr_subcompositor.h
. -
wlr_compositor.events.destroy
signal is now fired with NULL argument.
-
-
surface: improve role precommit hook (!3191 (merged))
-
wlr_surface_role.precommit
now also takesconst wlr_surface_state *
state which is to be applied, and the signal is emitted right before the actual commit, not whenwl_surface.commit
request is received.
-
-
output-layout: make wlr_output_layout_get_box() take a box as parameter (!3439 (merged))
-
wlr_output_layout_get_box()
now returns nothing and takesstruct wlr_box *
as a parameter. If the function fails, the box is emptied.
-
-
xdg-shell refactor (!3326 (merged))
- All
wlr_xdg_toplevel_*()
functions now takewlr_xdg_toplevel
as the main parameter. - All
wlr_xdg_popup_*()
functions now takewlr_xdg_popup
as the main parameter. -
wlr_xdg_toplevel_*_event
structs now have awlr_xdg_toplevel
field instead ofwlr_xdg_surface
. -
wlr_xdg_toplevel::parent
is nowwlr_xdg_toplevel
instead ofwlr_xdg_surface
. -
wlr_xdg_toplevel_set_fullscreen_event
is removed. - All
wlr_xdg_surface
signals now have NULL as their argument. - All
wlr_xdg_toplevel
signals which don't have an associated event struct now have NULL as their argument.
- All
-
xdg-positioner: update + rewrite unconstraining logic (!3446 (merged))
- The previous
wlr_xdg_positioner
has been renamed towlr_xdg_positioner_rules
.- The new
wlr_xdg_positioner
represents an actual Wayland object.
- The new
- The following functions have been removed:
wlr_positioner_invert_x()
wlr_positioner_invert_y()
wlr_xdg_popup_get_anchor_point()
-
wlr_xdg_positioner_get_geometry()
has been renamed towlr_xdg_positioner_rules_get_geometry()
and now takeswlr_box *
as a parameter.
- The previous
-
Input device refactor (!3434 (merged), !3452 (merged), !3469 (merged), !3481 (merged), !3482 (merged), !3484 (merged), !3626 (merged))
-
wlr_headless_input_device
has been removed, compositors can define their own devices for headless backend. -
vendor_id
andproduct_id
are defaulted to 0 and set when needed by the libinput backend. - Specialized input devices (keyboard, pointers, etc) have
struct wlr_input_device *base
field. -
wlr_input_device_impl
has been removed. -
wlr_input_device_destroy
has been removed. - The
wlr_input_device
interface has been made private. - Specialized input device
destroy
function and implementation has been removed.- Use
finish
functions to clean input devices up before destruction.
- Use
-
wlr_keyboard
,wlr_virtual_keyboard_v1
andwlr_virtual_pointer_v1
destroy events are removed in favor of the basewlr_input_device
destroy event. (!3481 (merged)) -
output_name
,width_mm
andheight_mm
have been moved fromwlr_input_device
to related specialized input devices. - Specialized input devices' events have been renamed and now follow
wlr_{input type}_{event type}_event
format. - The union field in
wlr_input_device
has been removed, the newwlr_*_from_input_device
functions can be used instead.
-
- wlr_switch: remove WLR_SWITCH_STATE_TOGGLE (!3462 (merged))
-
types/wlr_tablet_tool: remove name ambiguity (!3485 (merged))
-
wlr_tablet.name
has been removed,wlr_input_device.name
must be used instead. (!3485 (merged))
-
-
wlr_output: Handle subpixel hints through output commits (!3420 (merged)):
-
wlr_output_set_subpixel
calls must now be followed by awlr_output_commit
call to be applied.
-
-
seat: take wlr_keyboard in wlr_seat_set_keyboard() (!3498 (merged))
-
wlr_seat_set_keyboard()
now takes awlr_keyboard *
instead ofwlr_input_device
.
-
-
xdg-toplevel: don't schedule configures on state requests (!3512 (merged))
- compositors must now manually call
wlr_xdg_surface_schedule_configure
onrequest_maximize
/request_fullscreen
if they weren't handling the request.
- compositors must now manually call
-
xwayland: Fix order of wlr_xwayland_surface_size_hints fields (!3495 (merged))
-
wlr_xwayland_surface_hints
andwlr_xwayland_surface_size_hints
have been replaced byxcb_icccm_wm_hints_t
andxcb_size_hints_t
respectively.wlr_xwayland_surface.hints_urgency
has been removed, usexcb_icccm_wm_hints_get_urgency
instead.
-
-
xdg-shell: specify version in wlr_xdg_shell_create (!3547 (merged))
- Compositors must now pass their maximum supported xdg-shell version to
wlr_xdg_shell_create()
. This allows for wlroots to implement newer versions without a breaking change requiring compositors to implement the newer version as well.
- Compositors must now pass their maximum supported xdg-shell version to
-
wlr_scene: Refactor wlr_scene_surface to be a helper on top of wlr_scene_buffer (!3497 (merged))
-
wlr_scene_surface_create()
,wlr_scene_xdg_surface_create()
, etc. now createwlr_scene_buffer
nodes with associated helpers. - Use
wlr_scene_surface_from_buffer()
to get a scene surface from awlr_scene_buffer
.
-
-
xdg-shell: add v3 support (!3514 (merged))
-
wlr_xdg_popup.geometry
has been moved towlr_xdg_popup_state
and is now double-buffered. -
wlr_xdg_popup_unconstrain()
now schedules a configure. -
wlr_xdg_popup.positioner_rules
is removed.
-
-
wlr_scene: Only allow parenting on a wlr_scene_tree (!3509 (merged))
- The
WLR_SCENE_NODE_ROOT
node type is removed, the root node is now a glorifiedwlr_scene_tree
. -
wlr_scene_node_state
has been inlined intowlr_scene_node
. -
wlr_scene_tree
now has the children linked list, not thewlr_scene_node
- Reparenting and scene node creation functions now only accept a
wlr_scene_tree
. - Helpers such as
wlr_scene_subsurface_tree_create()
now return awlr_scene_tree
.
- The
-
output: drop wlr_output_cursor.events.destroy (!3578 (merged))
- Listen to wlr_output.events.destroy instead.
-
matrix: remove wlr_matrix_projection() (!3613 (merged))
- This was deprecated 1 year ago and has now been removed.
-
Set mapped before firing map/unmap events (!3660 (merged))
-
mapped
flag is now consistently set before emittingmap
/unmap
signals. - This affects compositors which rely on a specific state of the flag on those events.
-
-
surface: implement wl_surface.offset (!2992 (merged))
- To check whether the surface offset has changed,
WLR_SURFACE_STATE_OFFSET
must be used instead ofWLR_SURFACE_STATE_BUFFER
.
- To check whether the surface offset has changed,
-
output: fail commits if adaptive sync cannot be enabled (!3637 (merged))
- Compositors now need to use
wlr_output_test()
to check if an output supports adaptive sync.
- Compositors now need to use
-
xdg-shell: fix geometry types (!3818 (merged))
- The types of
wlr_xdg_toplevel_state.{,min_,max_}{width,height}
,wlr_xdg_toplevel_configure.{,bounds.}{width,height}
, andwlr_xdg_toplevel_show_window_menu_event.{x,y}
have been changed fromuint32_t
toint32_t
.
- The types of
-
output-damage: deprecate (!3837 (merged))
-
wlr_output_damage
API has been deprecated. Usewlr_damage_ring
(wlr/types/wlr_damage_ring.h
) instead.
-
Breaking changes for custom backends and renderers
These changes are unlikely to affect compositors that don't have a custom backend or renderer.
-
render: allow texture creation while rendering (!3464 (merged)): renderers must now correctly handle texture creation between
wlr_renderer_begin
andwlr_renderer_end
. -
buffer: extract interface to separate header (!3472 (merged)):
wlr_buffer
implementations now need to includewlr/interfaces/wlr_buffer.h
. - render: replace wlr_texture_write_pixels with update_from_buffer (!3585 (merged))
- render: drop wlr_renderer_read_pixels() flags (!3749 (merged))