wlroots 0.16 tracking #2

Open
opened 2024-02-24 03:24:59 -06:00 by yosh · 2 comments
Owner

I'm planning to incrementally update to wlroots 0.16.x then to 0.17.x to have the least amount of things being a catastrophe. this issue is for tracking everything that wlroots marks as potentially breaking for 0.16.0

checklist

a check indicates that I have either checked off the thing as not an issue or addressed it

  • layer-shell: fix type of margins
    • 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
    • wlr/types/wlr_box.h has been removed; use wlr/util/box.h instead.
  • Split wl_compositor and wl_subcompositor implementation
    • 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
    • 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
    • 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
    • all addressed in this commit
    • 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
    • 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
    • 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.
    • 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
  • types/wlr_tablet_tool: remove name ambiguity
    • wlr_tablet.name has been removed, wlr_input_device.name must be used instead.
  • wlr_output: Handle subpixel hints through output commits
    • 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()
    • wlr_seat_set_keyboard() now takes a wlr_keyboard * instead of wlr_input_device.
  • xdg-toplevel: don't schedule configures on state requests
    • 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
    • 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
    • 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
    • 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
    • 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
    • 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
    • Listen to wlr_output.events.destroy instead.
  • matrix: remove wlr_matrix_projection()
    • This was deprecated 1 year ago and has now been removed.
  • Set mapped before firing map/unmap events
    • 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
    • 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
    • Compositors now need to use wlr_output_test() to check if an output supports adaptive sync.
  • xdg-shell: fix geometry types
    • 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
    • wlr_output_damage API has been deprecated. Use wlr_damage_ring (wlr/types/wlr_damage_ring.h) instead.
I'm planning to incrementally update to wlroots 0.16.x then to 0.17.x to have the least amount of things being a catastrophe. this issue is for tracking everything that [wlroots marks as potentially breaking for 0.16.0](https://gitlab.freedesktop.org/wlroots/wlroots/-/releases/0.16.0) ## checklist a check indicates that I have either checked off the thing as not an issue or addressed it - **layer-shell: fix type of margins** - [x] `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** - [x] `wlr/types/wlr_box.h` has been removed; use `wlr/util/box.h` instead. - **Split wl_compositor and wl_subcompositor implementation** - [x] `wlr_subcompositor` is not created automatically anymore on calling `wlr_compositor_create()`; use `wlr_subcompositor_create()`. - [x] `wlr/types/wlr_surface.h` has been deprecated; use `wlr/types/compositor.h` and `wlr/types/wlr_subcompositor.h`. - [addressed in this commit](https://git.unix.dog/yosh/hikari/commit/80601cd9160f256faa65a5c4bc59dc22d18a37ce) - [x] `wlr_compositor.events.destroy` signal is now fired with NULL argument. - **surface: improve role precommit hook** - [x] `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** - [x] `wlr_output_layout_get_box()` now returns nothing and takes `struct wlr_box *` as a parameter. If the function fails, the box is emptied. - [addressed in this commit](https://git.unix.dog/yosh/hikari/commit/b6345c8c15fa8e68bb4d2fc5af1414b8de03a419) - **xdg-shell refactor** - [all addressed in this commit](https://git.unix.dog/yosh/hikari/commit/0253a6aa65057cf36691a49272cb9f5a37e07ab6) - [x] All `wlr_xdg_toplevel_*()` functions now take `wlr_xdg_toplevel` as the main parameter. - [x] All `wlr_xdg_popup_*()` functions now take `wlr_xdg_popup` as the main parameter. - [x] `wlr_xdg_toplevel_*_event` structs now have a `wlr_xdg_toplevel` field instead of `wlr_xdg_surface`. - [x] `wlr_xdg_toplevel::parent` is now `wlr_xdg_toplevel` instead of `wlr_xdg_surface`. - [x] `wlr_xdg_toplevel_set_fullscreen_event` is removed. - [x] All `wlr_xdg_surface` signals now have NULL as their argument. - [x] 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** - [x] 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: - [x] `wlr_positioner_invert_x()` - [x] `wlr_positioner_invert_y()` - [x] `wlr_xdg_popup_get_anchor_point()` - [x]`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** - [x] `wlr_headless_input_device` has been removed, compositors can define their own devices for headless backend. - [x] `vendor_id` and `product_id` are defaulted to 0 and set when needed by the libinput backend. - [x] Specialized input devices (keyboard, pointers, etc) have `struct wlr_input_device *base` field. - [x] `wlr_input_device_impl` has been removed. - [x] `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. - [x] `output_name`, `width_mm` and `height_mm` have been moved from `wlr_input_device` to related specialized input devices. - [x] Specialized input devices' events have been renamed and now follow `wlr_{input type}_{event type}_event` format. - [addressed in this commit](https://git.unix.dog/yosh/hikari/commit/0e8ddb519f8ca9c155a320e05b1d6012947bbf51) - [ ] The union field in `wlr_input_device` has been removed, the new `wlr_*_from_input_device` functions can be used instead. - [x] **wlr_switch: remove WLR_SWITCH_STATE_TOGGLE** - **types/wlr_tablet_tool: remove name ambiguity** - [x] `wlr_tablet.name` has been removed, `wlr_input_device.name` must be used instead. - **wlr_output: Handle subpixel hints through output commits** - [x] `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()** - [ ] `wlr_seat_set_keyboard()` now takes a `wlr_keyboard *` instead of `wlr_input_device`. - **xdg-toplevel: don't schedule configures on state requests** - [ ] 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** - [ ] `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** - [ ] 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** - [ ] `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** - [ ] `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. - [x] `wlr_xdg_popup.positioner_rules` is removed. - **wlr_scene: Only allow parenting on a wlr_scene_tree** - [x] The `WLR_SCENE_NODE_ROOT` node type is removed, the root node is now a glorified `wlr_scene_tree`. - [x] `wlr_scene_node_state` has been inlined into `wlr_scene_node`. - [x] `wlr_scene_tree` now has the children linked list, not the `wlr_scene_node` - [x] Reparenting and scene node creation functions now only accept a `wlr_scene_tree`. - [x] Helpers such as `wlr_scene_subsurface_tree_create()` now return a `wlr_scene_tree`. - **output: drop wlr_output_cursor.events.destroy** - [ ] Listen to `wlr_output.events.destroy` instead. - **matrix: remove wlr_matrix_projection()** - [x] This was deprecated 1 year ago and has now been removed. - **Set mapped before firing map/unmap events** - [ ] `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** - [ ] 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** - [ ] Compositors now need to use `wlr_output_test()` to check if an output supports adaptive sync. - **xdg-shell: fix geometry types** - [ ] 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** - [ ] `wlr_output_damage` API has been deprecated. Use `wlr_damage_ring` (`wlr/types/wlr_damage_ring.h`) instead.
yosh pinned this 2024-02-24 03:25:07 -06:00
Author
Owner

currently having issues with lingering popups, gonna see what's up with that

currently having issues with lingering popups, gonna see what's up with that
Author
Owner

might update to 0.17.0 to see if that might do anything

might update to 0.17.0 to see if that might do anything
Sign in to join this conversation.
No Label
No Milestone
No project
No Assignees
1 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: yosh/hikari#2
No description provided.