Skip to content
GitLab
Projects Groups Topics Snippets
  • /
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
  • Register
  • Sign in
  • wlroots wlroots
  • Project information
    • Project information
    • Activity
    • Labels
    • Members
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributor statistics
    • Graph
    • Compare revisions
  • Issues 336
    • Issues 336
    • List
    • Boards
    • Service Desk
    • Milestones
  • Merge requests 148
    • Merge requests 148
  • CI/CD
    • CI/CD
    • Pipelines
    • Jobs
    • Schedules
  • Deployments
    • Deployments
    • Releases
  • Analytics
    • Analytics
    • Value stream
    • CI/CD
    • Repository
  • Wiki
    • Wiki
  • Activity
  • Graph
  • Create a new issue
  • Jobs
  • Commits
  • Issue Boards
Collapse sidebar
  • wlrootswlroots
  • wlrootswlroots
  • Issues
  • #3347
Closed
Open
Issue created Dec 17, 2021 by Simon Ser@emersionOwner

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 from uint32_t to int32_t as specified by the protocol.
  • remove wlr_box.h redirection (!3405 (merged))
    • wlr/types/wlr_box.h has been removed; use wlr/util/box.h instead.
  • Split wl_compositor and wl_subcompositor implementation (!3412 (merged))
    • wlr_subcompositor is not created automatically anymore on calling wlr_compositor_create(); use wlr_subcompositor_create().
    • wlr/types/wlr_surface.h has been deprecated; use wlr/types/compositor.h and wlr/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 takes const wlr_surface_state * state which is to be applied, and the signal is emitted right before the actual commit, not when wl_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 takes struct wlr_box * as a parameter. If the function fails, the box is emptied.
  • xdg-shell refactor (!3326 (merged))
    • All wlr_xdg_toplevel_*() functions now take wlr_xdg_toplevel as the main parameter.
    • All wlr_xdg_popup_*() functions now take wlr_xdg_popup as the main parameter.
    • wlr_xdg_toplevel_*_event structs now have a wlr_xdg_toplevel field instead of wlr_xdg_surface.
    • wlr_xdg_toplevel::parent is now wlr_xdg_toplevel instead of wlr_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.
  • xdg-positioner: update + rewrite unconstraining logic (!3446 (merged))
    • The previous wlr_xdg_positioner has been renamed to wlr_xdg_positioner_rules.
      • The new wlr_xdg_positioner represents an actual Wayland object.
    • 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 to wlr_xdg_positioner_rules_get_geometry() and now takes wlr_box * as a parameter.
  • 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 and product_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.
    • wlr_keyboard, wlr_virtual_keyboard_v1 and wlr_virtual_pointer_v1 destroy events are removed in favor of the base wlr_input_device destroy event. (!3481 (merged))
    • output_name, width_mm and height_mm have been moved from wlr_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 new wlr_*_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 a wlr_output_commit call to be applied.
  • seat: take wlr_keyboard in wlr_seat_set_keyboard() (!3498 (merged))
    • wlr_seat_set_keyboard() now takes a wlr_keyboard * instead of wlr_input_device.
  • xdg-toplevel: don't schedule configures on state requests (!3512 (merged))
    • compositors must now manually call wlr_xdg_surface_schedule_configure on request_maximize/request_fullscreen if they weren't handling the request.
  • xwayland: Fix order of wlr_xwayland_surface_size_hints fields (!3495 (merged))
    • wlr_xwayland_surface_hints and wlr_xwayland_surface_size_hints have been replaced by xcb_icccm_wm_hints_t and xcb_size_hints_t respectively. wlr_xwayland_surface.hints_urgency has been removed, use xcb_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.
  • 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 create wlr_scene_buffer nodes with associated helpers.
    • Use wlr_scene_surface_from_buffer() to get a scene surface from a wlr_scene_buffer.
  • xdg-shell: add v3 support (!3514 (merged))
    • wlr_xdg_popup.geometry has been moved to wlr_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 glorified wlr_scene_tree.
    • wlr_scene_node_state has been inlined into wlr_scene_node.
    • wlr_scene_tree now has the children linked list, not the wlr_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 a wlr_scene_tree.
  • 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 emitting map/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 of WLR_SURFACE_STATE_BUFFER.
  • 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.
  • 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}, and wlr_xdg_toplevel_show_window_menu_event.{x,y} have been changed from uint32_t to int32_t.
  • output-damage: deprecate (!3837 (merged))
    • wlr_output_damage API has been deprecated. Use wlr_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 and wlr_renderer_end.
  • buffer: extract interface to separate header (!3472 (merged)): wlr_buffer implementations now need to include wlr/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))
Edited Nov 10, 2022 by Simon Ser
To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information
Assignee
Assign to
Time tracking