Wlroots Versions Save

A modular Wayland compositor library

0.8.0

4 years ago

wlroots 0.8.0 includes the following breaking changes:

presentation_feedback: add the sampled state

The wlr_presentation_time structures have been rewritten. To correctly support presentation-time, use wlr_presentation_surface_sampled after you sample (read from) each surface.

Changelog:

Drew DeVault (4):
      wlr_idle_inhibit_v1: style fixes
      drm backend: detect non-desktop outputs
      drm backend: implement DRM lease issuance
      Introduce wlr_drm_lease_v1

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 (1):
      presentation_feedback: add the sampled state

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

0.7.0

4 years ago

wlroots 0.7.0 includes the following breaking changes:

wlr_output_mode: drop wlr_outupt_mode.flags

This field was never used and has now been removed.

wlr_output: drop wlr_output.transform

This field was not meaningful.

Orbital screenshooter and gamma-control have been removed

These protocols are obsolete and have been replaced with more mature wlr protocols.

Andri Yngvason (2):
      backend: touch: Assign good ids to single touch devices
      backend: touch: Fixup incomplete patch for single touch devices.

Antonin Décimo (12):
      render/drm: keep old drm_format if realloc fails
      xcursor: avoid leak and loss of all cursors if cursors realloc fails
      Fix memory leak
      Simplify check
      wlr_surface: condition is always false
      xdg_shell: remove variable self-assignment
      backend/session: non-void function should return a value
      backend/drm: use UINT64_C for uint64_t literals
      Avoid loss of a fractional part
      backend/wayland: check if zxdg_toplevel_decoration_v1 is not NULL
      xwayland: prevent possible array overrun
      examples: remove duplicated condition

Ashkan Kiani (1):
      Use a set to track pointer button state.

Brian Ashworth (4):
      session/logind: keep active for pause_device gone
      zwp_virtual-keyboard: fix mmap error handling
      wlr_xdg_toplevel: reparent on parent unmap
      wlr-layer-shell-v1: destroy xdg popups on unmap

Dorota Czaplejewicz (2):
      x11: Send a frame event on the pointer after button events
      virtual_keyboard: Require keymap before accepting keycodes

Drew DeVault (4):
      Remove rootston
      Add libinput-1.14 support
      Revert "render/drm: keep old drm_format if realloc fails"
      Add _incr_version to contrib/

Greg V (1):
      Support pointer-gestures on Wayland backend

Guido Günther (4):
      wlr_seat_touch: Don't destroy touch point with surface
      layer-shell: Remove unused event source
      layer-shell: Reject requests on gone surfaces
      text_input: Don't forget to send enter events

Ilia Bozhinov (2):
      output: clear output->damage on successful commit
      output-damage: set needs swap only when we have new damage

Jan Beich (1):
      Test RDP backend on FreeBSD as well

Jan Chren (2):
      session/logind: specify seat exactly
      session/logind: check for XDG_SESSION_ID first

Jason Francis (3):
      screencopy: fix segfault on disabled output
      screencopy: send failed after output disconnect
      export-dmabuf-v1: fix segfault on output disable

Manuel Stoeckl (6):
      Implement serial validation for selection requests
      wlr_seat: Fix edge cases with serial validation
      wlr_pointer_gestures: Register event serials
      wlr_tablet_v2: Register event serials
      wlr_seat: special-case first serial set use
      Use -fmacro-prefix-map to strip build path

Michiel (1):
      Fixes #1689 RDP RemoteFX crash

Rouven Czerwinski (5):
      wlr_output: remove idle_done on output destroy
      drm: legacy: issue a NULL modeset on disable
      backend: drm: switch to pageflip_handler_2
      backend/drm: destroy output immediately
      Revert "output: atomic mode"

Scott Anderson (3):
      Remove WLR_DRM_NO_ATOMIC_GAMMA workaround
      backend/drm: Simplify object matching code
      backend/drm: Exit-early if 0 crtcs

Sebastian Krzyszkowiak (9):
      seat: Move focus back to first shell surface when unfocusing layer surface
      xdg_shell(_v6): Take maximize/fullscreen state into account on view init
      wlr_touch: Declare wlr_touch_impl usage as const
      backends/x11: Touch support
      wlr_input_method_v2: Remove input method's resource from the list on destroy
      wlr_seat_touch: add a way for a grab to ignore a touch point
      wlr_xdg_popup: grab touch events alongside pointer and keyboard
      wlr_xdg_popup: don't treat all surfaces of grabbing client as grabbing surfaces
      Revert "wlr_xdg_popup: don't treat all surfaces of grabbing client as grabbing surfaces"

Silvan Jegen (1):
      rootston: remove duplicated include

Simon Ser (26):
      backend/wayland: use xdg-decoration-unstable-v1
      backend/wayland: remove wl_shm
      render/gles2: print GL_RENDERER
      Remove orbital screenshooter and gamma-control
      backend/drm: check format when scanning out DMA-BUF
      backend/drm: strip alpha channel on scan-out
      render/dmabuf: add wlr_dmabuf_attributes_copy
      buffer: add wlr_buffer_get_dmabuf
      output: change set_dmabuf to attach_buffer
      output: fix attach_buffer semantics
      output: save buffer in pending state
      backend/drm: hold buffers while scanning out
      backend/drm: reject DMA-BUFs with flags
      rootston: add support for direct scan-out
      output: refuse to scan-out if software cursors are used
      output: introduce wlr_output_lock_attach_render
      output-damage: support direct scan-out
      backend/drm: fallback to drmModeAddFB2
      backend/drm: add support for multiplanar BOs
      output: reset the pending state on failed commit
      output: remove wlr_output_impl.transform
      output: drop wlr_output_mode.flags
      Remove all wayland-server.h includes
      output: atomic mode, enabled, scale and transform
      xdg-output: add support for xdg-output-unstable-v1 version 3
      backend/drm: fix missing plane formats

emersion (1):
      backend/drm: add basic support for direct scan-out

0.6.0

5 years ago

wlroots 0.6.0 includes the following breaking changes:

Remove wlr_wl_shell

We have removed the long-deprecated wl_shell implementation from wlroots.

output: refactor frame submission API

To migrate from the old API to the new one:

  1. Replace wlr_output_make_current calls with wlr_output_attach_render
  2. Replace wlr_output_swap_buffers calls with wlr_output_set_damage and wlr_output_commit
  3. Replace wlr_output_damage_make_current calls with wlr_output_damage_attach_render
  4. Replace wlr_output_damage_swap_buffers with wlr_output_set_damage and wlr_output_commit
  5. Replace wlr_output.needs_swap with wlr_output.needs_frame
  6. Replace wlr_output.events.swap_buffers with wlr_output.events.precommit

output: remove lx, ly

The layout coordinates have been removed from wlr_output. Wayland clients now receive a non-meaningful value from this interface, and should switch to using xdg-output for this purpose.

Rename lid_switch to switch_device to disambiguate lid and tablet mode switches

To update your compositors, run s/lid_switch/switch_device/g.

Changelog

Alyssa Ross (1):
      Fix missing headers when building without X11

Brian Ashworth (6):
      backend/wayland: improve output number handling
      backend/x11: improve output number handling
      backend/headless: improve output number handling
      backend/noop: improve output number handling
      wlr_xdg_toplevel: store pending fullscreen output
      wlr_xdg_toplevel_v6: store pending fullscreen output

Drew DeVault (2):
      Add FreeRDP backend for remote desktop support
      Remove wlr_wl_shell

Guido Günther (3):
      wlr_output: Add preferred property (#1625)
      rootston: Also iterate layer shell popups
      Emit preferred mode

Ilia Bozhinov (8):
      meson.build: require libinput >= 1.9.0
      noop: implement setting a custom mode
      rootston: remove disabled outputs from the output layout
      output: do nothing in output_set_image if backend has no renderer
      idle: enable the compositors to add custom idle timeouts (#1655)
      foreign-toplevel: support fullscreen state and request
      rootston: add support for foreign-toplevel fullscreening
      examples: add fullscreening to foreign-toplevel.c

Jan Beich (2):
      backend: unbreak on 32-bit architectures
      Switch to system epoll-shim.pc in FreeBSD build

Markus Ongyerth (1):
      send proximity_out in proximity in for tablet_v2

Ryan Walklin (1):
      s/lid_switch/switch_device

Scott Anderson (2):
      render: introduce wlr_drm_format_set
      Advertise wl_seat version 7

Simon Ser (20):
      data-device: ignore accept for selection offers
      output: introduce wlr_output_preferred_mode
      rootston: use wlr_output_preferred_mode
      output: refactor frame submission API
      output: refactor backend API
      output: rename swap_buffers event to precommit
      output-damage: refactor API
      output: rename needs_commit to needs_frame
      render/egl: fix zero-length VLA
      backend/wayland: fix wlr_wl_pointer use-after-free
      output-damage: fix segfault after destroy
      render/egl: fix swapping with no damage
      rootston: don't submit too much damage
      output: disambiguate the two types of damage
      rootston: fix damage tracking debug mode
      output: introduce wlr_output_schedule_done
      xdg-output: schedule a wl_output.done event on update
      seat: fallback to v6 if libwayland 1.17 isn't available
      backend/noop: disallow rendering
      ci: enable Meson auto features

Stuart Dilts (1):
      types/meson.build: Add compile args for libinput to lib_wlr_types (#1636)

emersion (18):
      meson: remove -Wredundant-decls
      render: switch wlr_renderer to wlr_drm_format_set
      util/log: setup wayland log handler
      Add support for wlr-output-management-unstable-v1
      Split wlr_output_configuration_head_v1
      Add apply and test events to manager
      output-management-v1: various fixes
      rootston: add output-management-v1 support
      output-management-v1: add support for modes
      rootston: update output-management-v1 state when output is modeset
      output-management-v1: add support for position, transform and scale
      output-management-v1: support applying configuration
      output-management-v1: fix wl_fixed_t conversion
      output-management-v1: support outputs without modes
      output-management-v1: update protocol, add set_custom_mode
      rootston: disable then enable outputs when applying output-management state
      output-management-v1: add more docs
      output: remove lx, ly

0.5.0

5 years ago

Breaking changes

DISPLAY is no longer set automatically for Xwayland (#1596)

The DISPLAY is now written to wlr_xwayland.display_name and it is the compositor's responsibility to export it to the environment of its X11 clients.

Changelog

Brian Ashworth (1):
      wlr_output_layout_get_box: handle empty layout

Guido Günther (4):
      Unbreak build with '-Wstrict-prototypes'
      rootston/view: Remove redundant declaration in the same file
      wlr_xdg_shell: Remove redundant declaration in the same file
      Remove glEGLImageTargetTexture2DOES

Ian Fan (1):
      seat: fix remaining wlr_button_state enum rename

Ilia Bozhinov (2):
      xwm: use min size as base size hint if it is missing and vice versa
      xwm: fix typos in WM_NORMAL_HINTS handling

Niklas Schulze (1):
      backend/session: Allow setting a custom tty via WLR_DIRECT_TTY

Scott Anderson (1):
      backend/drm: Don't fail on failing to find overlay format

emersion (15):
      seat: guard against button count corruption
      meson: enable more compiler warnings
      seat: use wlr_button_state enum instead of uint32_t
      seat: only store serial if pressing a button
      tinywl: send pointer frame events
      backend/session: add noop session
      rootston: refactor rendering
      rootston: fix rotated views rendering
      rootston: fix Xwayland children rendering when fullscreen
      rootston: split rendering code into render.c
      rootston: fix input events for rotated views
      xwayland: don't set DISPLAY
      seat: add debug logs when validating grab serials
      backend/session: open TTY with O_CLOEXEC for direct session
      xwayland: set CLOEXEC on /dev/null FD

0.4.1

5 years ago

0.4

5 years ago

Breaking Changes

Drag-and-drop has been refactored (https://github.com/swaywm/wlroots/pull/1517)

Compositors need to listen to the wlr_seat.request_start_drag event (just like selection). They need to accept the drag with wlr_seat_start_{pointer,touch}_drag or to reject it. See the related rootston changes.

Additionally, the new_drag_icon event has been removed, use start_drag instead to collect the drag icon.

Changelog

Brian Ashworth (4):
      xwm: stack below on map
      drm: do not modeset to current mode
      wlr_output: do not modeset to current mode
      backend/drm: fix modeset on drm fd resume

Connor E (2):
      Make popup inert when destroyed.
      Add build-*/ to gitignore.

Drew DeVault (2):
      Use freebsd/latest for FreeBSD sr.ht builds
      Revert "drm: do not modeset to current mode"

Geoff Greer (1):
      Add a wlr_output_set_subpixel()

Ivan Molodetskikh (2):
      data-control: add primary selection support
      Update data-control

Jan Beich (1):
      Add xcb-errors to FreeBSD build

Markus Ongyerth (1):
      Prevent NULL dereference in tablet_tool handler

Rouven Czerwinski (1):
      backend/drm: fix memory leak in realloc crtcs

Scott Anderson (1):
      backend/drm: Unset cursor on cleanup

Sebastian Krzyszkowiak (3):
      Post protocol error on invalid wl_surface scale
      rootston: don't try to maximize fullscreen surfaces
      rootston: surface_at: check for fullscreen surfaces in between TOP and OVERLAY layers

Uli Schlachter (1):
      xwm: Add _NET_CLIENT_LIST support

Vincent Vanlaer (3):
      Allow cursor render surface to be used as fb
      Copy cursor surface to secondary gpu if necessary
      Add workaround for hardware cursors on nouveau

emersion (21):
      Bump project version to 0.3
      data-device: destroy previous source when starting drag
      xdg-shell: destroy child popups on unmap
      Deprecate old protocols
      primary-selection-v1: copy from gtk-primary-selection
      surface: error out on invalid transform
      subsurface: add map/unmap events
      xwayland, data-device: fix surface state on unmap
      data-device: make old offers inert before sending selection
      backend/drm: fix NULL dereference when unsetting cursor
      xwayland: don't use SOCK_CLOEXEC
      xwayland: remove remaining SOCK_CLOEXEC
      data-device: refactor wlr_drag
      data-device: fix drag cleanup if not started
      rootston: cancel drag on invalid serial
      data-offer: send WL_DATA_OFFER_ERROR_INVALID_FINISH
      data-device: unbreak wl_data_source.cancel during drag-and-drop
      rootston: move part of desktop.c to view.c, use an interface for views
      rootston: add a view child interface
      rootston: make roots_view embedded and remove unions
      data-device: check if there's a source before sending dnd_finish

mnussbaum (1):
      Allow compositors to run as systemd user units

0.3

5 years ago

wlroots 0.3 contains the following breaking changes:

  • gtk-primary-selection: refactor everything, untie from seat (#1397). Various properties related to this unstable protocol have been removed from wlr_seat and wlr_seat_client. Use wlr_gtk_primary_selection_* instead.
  • output: switch wlr_output_swap_buffers damage to output-buffer-local coords (#1403)
  • Standardize the wlr_box input paramaters (#1441). The destination parameter is now always the first one.
  • Remove wlr_xdg_surface_send_close (#1461). Use wlr_xdg_toplevel_send_close and wlr_xdg_popup_destroy instead.
  • data-device, primary-selection: add request_set_selection (#1402). Compositors now need to listen on wlr_seat.events.request_set_selection and wlr_seat.events.request_set_primary_selection, then decide whether or not to accept the request with wlr_seat_set_selection and wlr_seat_set_primary_selection.
  • wlr_seat_client_send_selection has been removed, this is an internal function (#1427)
  • wlr_data_source_finish has been removed, this is now handled by wlr_data_source_destroy (#1427)
  • wlr_data_source_cancel has been renamed to wlr_data_source_destroy (#1427)
  • Compositors now need to listen on the wlr_pointer.frame or wlr_cursor.frame events, and call wlr_seat_notify_frame (#1503). If you're simulating pointer events, you'll need to call wlr_seat_notify_frame manually.