Skip to content
This repository has been archived by the owner on Nov 1, 2021. It is now read-only.

Releases: swaywm/wlroots

wlroots 0.14.1

08 Jul 15:21
0.14.1
Compare
Choose a tag to compare
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

23 Jun 12:26
0.14.0
Compare
Choose a tag to compare

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...
Read more

wlroots 0.13.0

07 Apr 19:27
0.13.0
Compare
Choose a tag to compare

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 with enum wl_keyboard_key_state
  • Use uint32_t in wlr_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 a wlr_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 the wl_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 and transform
    output events have been removed, compositors should use the commit event instead.
  • output: send commit event after pending state is cleared (#2630):
    compositors can no longer read the to-be-committed state from wlr_output.pending in an output commit event handler. Instead, use the current state and wlr_output_event_commit.
  • render/wlr_texture: clamp texture coordinates to edge by default (#2476):
    the GLES2 renderer no longer wraps textures with GL_REPEAT. If you want to repeat a texture, manually change wlroots' default via glTexParameteri.
  • text_input_v3: correct typo in enum field (#2735): WLR_TEXT_INPUT_v3_FEATURE_CONTENT_TYPE has been renamed to WLR_TEXT_INPUT_V3_FEATURE_CONTENT_TYPE.
  • Stop using wl_shm_format (#2744): the renderer functions take DRM_FORMAT_* values instead of WL_SHM_FORMAT_*. Make sure you don't have any remaining WL_SHM_FORMAT_* enum values in your compositor.
    • wlr_renderer_read_pixels now takes a DRM format code instead of an enum wl_shm_format
    • wlr_renderer_get_shm_texture_formats now returns DRM format codes instead of an enum wl_shm_format
    • wlr_renderer_read_pixels now takes a DRM format code instead of an enum wl_shm_format
    • wlr_output_preferred_read_format now returns a DRM format code instead of an enum 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 to wlr_egl_get_dmabuf_texture_formats
    • wlr_renderer_get_formats has been renamed to wlr_renderer_get_shm_texture_formats
    • wlr_renderer_get_dmabuf_formats has been renamed to wlr_renderer_get_dmabuf_texture_formats
    • wlr_renderer_format_supported has been removed (instead, use wlr_renderer_get_shm_texture_formats)
  • backend/session: misc. refactoring, replace CanGraphical with udev (#2465)
    • wlr_drm_backend_create takes a wlr_device instead of a DRM FD
    • wlr_device.signal has been replaced by wlr_device.events.change
    • wlr_session.session_signal has been replaced by wlr_session.events.active
    • wlr_session_open_file and wlr_session_close_file now take a wlr_device instead of a FD
    • wlr_session_find_gpus now fills an array of wlr_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 a ssize_t instead of a size_t
  • render/egl: remove unused features, introduce create/destroy (#2623)
    • The EGLint visual_id parameter of wlr_egl_init has been removed.
    • wlr_egl_swap_buffers has been removed.
    • wlr_egl_init and wlr_egl_finish have been replaced with wlr_egl_create and wlr_egl_destroy.
    • wlr_egl_make_current no longer takes the arguments EGLSurface surface, int *buffer_age.
  • Remove wlr_egl from backends (#2602): wlr_renderer_autocreate no
    longer takes a struct wlr_egl * as parameter.
  • Drop EGL from wlr_renderer_autocreate (#2639): wlr_renderer_autocreate
    no longer takes the arguments EGLenum platform, void *remote_display.
    Instead it takes a struct wlr_backend *.
  • render/egl: remove config_attribs, wlr_egl.config and wlr_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 now const
  • Update output transform matrix calculation (#2770): the projection has been moved from wlr_output.transform_matrix to the GLES2 renderer. Compositors using wlr_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 ...
Read more

wlroots 0.12.0

08 Nov 14:11
0.12.0
238d1c0
Compare
Choose a tag to compare

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

15 Jul 22:51
0.11.0
751a21d
Compare
Choose a tag to compare

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 to wlr_client_buffer
  • wlr_buffer_{ref,unref,get_dmabuf} and wlr_output_attach_buffer still take
    a wlr_buffer, compositors need to use &wlr_client_buffer->base
  • wlr_buffer_create and wlr_buffer_apply_damage have been renamed to
    wlr_client_buffer_create and wlr_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 call wlr_buffer_lock and wlr_buffer_unlock instead of
    wlr_buffer_ref and wlr_buffer_unref. Same applies to backends.
  • wlr_client_buffer_create has been renamed to wlr_client_buffer_import.
    Callers need to wlr_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 a bool anymore.
    The checks previously performed in this function are now performed in
    wlr_output_commit and the new wlr_output_test function.
  • For backends: wlr_output_impl.attach_buffer is gone, buffer checks now need
    to be performed in commit. A new test 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 texture
  • wlr_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
    commit
  • wlr_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...
Read more

wlroots 0.10.1

10 Mar 14:12
0.10.1
0c7c562
Compare
Choose a tag to compare
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

22 Jan 18:25
Compare
Choose a tag to compare

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

06 Jan 14:02
Compare
Choose a tag to compare
wlroots 0.9.1
Andri Yngvason (1):
      virtual-pointer: Actually use the value passed to axis_discrete

Ilia Bozhinov (1):
      xwm: allow applications to change focus between their own surfaces

Simon Ser (1):
      backend/wayland: fix frame callback not registered

0.9.0

31 Dec 15:22
Compare
Choose a tag to compare

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 after wlr_output_enable, wlr_output_set_mode, wlr_output_set_custom_mode, wlr_output_set_transform or wlr_output_set_scale
  • wlr_output_set_mode no longer implicitly enables the output, compositors need to call wlr_output_enable as well
  • Compositors now need to call wlr_output_rollback after wlr_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

07 Oct 19:30
Compare
Choose a tag to compare
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)