freedesktop-gitlab wlroots/wlroots 0.11.0

latest releases: 0.17.3, 0.17.2, 0.17.1...
3 years ago

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
      backend/x11: add support for adaptive_sync_enabled
      backend/drm: add support for adaptive_sync_enabled
      xwayland: use explicit indexes when initializing atom_map
      xwayland: remove duplicate _NET_WM_NAME entry
      xwayland: remove underscore prefix from atom names
      output: make wlr_output_schedule_frame set output->needs_frame
      output: don't send a needs_frame event if already sent
      util/log: improve time prefix
      render/gles2: remove duplicated format list
      buffer: remove unused wlr_client_buffer fields
      output: add comment about needs_frame in wlr_output_schedule_frame
      output: replace wlr_output.damage with a damage event
      backend/wayland: close keymap FD
      Gracefully handle inert wl_output resources
      buffer: add destroy event
      buffer: add a release event
      buffer: add width and height
      output: introduce wlr_output_test
      output: check buffer in wlr_output_test
      backend: reset EGL surface after buffer swap
      Add wlr_output_impl.rollback
      render/egl: make config attribs const
      backend: set EGL_RENDERABLE_TYPE and EGL_SURFACE_TYPE
      render/gles2: only call wlr_egl_bind_display if supported
      render: only expose linux-dmabuf if EGL extension is supported
      output: fix blurred hw cursors with fractional scaling
      output: check for buffer size compatibility in common code
      backend/wayland: check scan-out buffer is compatible in output_test
      output: fix maybe-uninitialized warning
      backend/multi: add backends at end of list
      build: use meson.override_dependency
      build: use dicts instead of get_variable
      build: use summary instead of message
      output_layout: improve docs
      render/drm_format_set: disallow DRM_FORMAT_INVALID
      render/gles2: add wlr_gles2_renderer_check_ext
      backend/headless: use FBOs instead of pbuffers
      backend/headless: add wlr_headless_backend_create_with_renderer
      render/texture: add width and height fields
      render/texture: make write_pixels optional
      backend/drm: strip alpha channel if necessary
      Remove .swp file added by mistake
      util/log: write log importance
      backend/drm: make page-flip error scarier
      examples/dmabuf-capture: use getopt
      backend/multi: handle backends depending on each other properly
      backend/headless: handle renderer destroy
      backend/drm: remove wlr_drm_interface.crtc_move_cursor
      backend/drm: remove unused fields
      backend/drm: remove mode argument to crtc_pageflip
      backend/drm: apply gamma LUT on page-flip
      backend/drm: rename crtc_pageflip to crtc_commit
      backend/drm: remove conn_enable from interface
      backend/drm: remove crtc_set_cursor from interface
      backend/drm: GAMMA_LUT_SIZE isn't atomic
      backend/drm: simplify atomic commit logic
      backend/drm: fix crash in session_signal
      backend/drm: remove missing cursor plane workaround
      backend/drm: fix combined modeset+enable commits
      backend/drm: disable cursor in dealloc_crtc
      backend/drm: print error in set_plane_props
      backend/drm: fix segfault in drm_crtc_page_flip
      output: make wlr_output_set_gamma atomic
      backend/drm: fix atomic commits when the GAMMA_LUT prop is missing
      Fix -Wreturn-type warnings
      render/egl: introduce wlr_egl_unset_current
      backend/drm: fix current EGL context on multi-GPU
      backend/drm: add missing wlr_egl_unset_current
      xwayland: split server
      xwayland: add option to disable WM
      render/egl: unset current context after swapping buffers
      backend/drm: rollback atomic blobs
      backend/drm: refuse to enable an output without a mode
      backend/drm: remove drm_connector_set_custom_mode
      backend/drm: remove enable_drm_connector
      backend/drm: make drm_connector_set_mode take a wlr_drm_connector
      backend/drm: nuke retry_pageflip
      backend/drm: introduce pending and current CRTC state
      backend/drm: don't set cursor if off-screen
      backend/drm: fix missing crtc->cursor NULL check
      Add comments for missing tablet tool entries
      backend/drm: rollback pending CRTC state on test commit
      backend/drm: make adaptive_sync atomic
      backend/drm: commit/rollback FBs in drm_crtc_commit
      backend/drm: drop extra wlr_output_update_enabled call
      backend/drm: always perform a CRTC commit in drm_connector_commit
      backend/wayland: fix spurious eglSwapBuffers failures
      render: stop making EGL context current in wlr_egl_init
      backend/drm: fix black screens when enabling output
      render: choose DMA-BUF texture target via eglQueryDmaBufModifiersEXT
      contributing: resource destroy handlers need to cleanup pointers
      contributing: add note about events that destroy objects
      backend/drm: fix stack overflow in dealloc_crtc
      buffer: document wlr_buffer_get_dmabuf DMA-BUF lifetime
      output: document wlr_output_export_dmabuf
      render/egl: explicit client extension handling
      examples/screencopy-dmabuf: call strncpy with maxlen - 1
      examples/fullscreen-shell: stop advertising linux-dmabuf unconditonally
      render/gles2: use .x/.y instead of .s/.t
      box: add wlr_fbox
      util/region: add wlr_region_scale_xy
      render: add wlr_render_subtexture_with_matrix
      surface: add wlr_surface_state.viewport
      surface: introduce wlr_surface_get_buffer_source_box
      viewporter: new protocol implementation
      surface: ignore viewport src rect on NULL buffer
      render/egl: print error name
      output: rename impl->rollback to rollback_render
      output: make rollback_render mandatory
      output: fix dangling renderer context after wlr_output_preferred_read_format
      backend/noop: add missing rollback_render output impl
      examples/pointer: fix wlr_renderer_end call order
      output: add backend docs
      backend/drm: fix DPMS on legacy interface
      backend/drm: fix typo in drm_surface_make_current arg
      backend/drm: check drm_surface_make_current return value
      Update version to 0.11.0

Simon Zeni (1):
      render/gles2: use glGetAttribLocation instead of hardcoded indices

Thomas Hebb (3):
      wlr_seat: Declare functions in the same order for pointer, keyboard, and touch
      wlr_seat: Clarify wording of non-grab-respecting function comments
      Allow keyboard and pointer grabs to hook clear_focus()

Tudor Brindus (19):
      backend/libinput: correctly populate x/y fields on tablet proximity in
      input/tablet: populate tool tip event position
      input/tablet: fix up updated axes after rotation
      input/tablet: clear focused surface on surface destroy
      wlr/types: use bitshifts for tablet axes enum
      backend/wayland: emit tablet tool axis events to the axis handler
      input/keyboard: expose keymap matching helper
      input/pointer: notify compositor when constraint region changes
      tablet: pass motion events to implicitly grabbed surface
      tablet: expose wlr_tablet_tool_v2_has_implicit_grab function
      util/log: use bright black rather than black for WLR_DEBUG
      xwayland: send focus change event unconditionally
      xwayland: add error-checking to `server_start_lazy`
      backend/wayland: scale tablet tool position into [0, 1] range
      util: fix and move `get_current_time_msec` into a util file
      util/time: de-duplicate `timespec_to_msec`
      util/time: move `timespec_sub` to time utilities
      input/keyboard: send modifiers on first keyboard enter
      input/pointer: add wlr_seat_pointer_wrap

Tudor Roman (1):
      seat: add selection event docs

Will Daly (1):
      Fix error when reconnecting external display

j-n-f (1):
      examples: fix improper use of `free`

r-c-f (1):
      seat: add check for NULL keyboard

xdavidwu (3):
      virtual-keyboard: add wlr_input_device_get_virtual_keyboard
      input-method: implement keyboard grabs
      examples/input-method-keyboard-grab: new example

Don't miss a new wlroots release

NewReleases is sending notifications on new releases.