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 towlr_client_buffer
wlr_buffer_{ref,unref,get_dmabuf}
andwlr_output_attach_buffer
still take
awlr_buffer
, compositors need to use&wlr_client_buffer->base
wlr_buffer_create
andwlr_buffer_apply_damage
have been renamed to
wlr_client_buffer_create
andwlr_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 callwlr_buffer_lock
andwlr_buffer_unlock
instead of
wlr_buffer_ref
andwlr_buffer_unref
. Same applies to backends.
wlr_client_buffer_create
has been renamed towlr_client_buffer_import
.
Callers need towlr_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 abool
anymore.
The checks previously performed in this function are now performed in
wlr_output_commit
and the newwlr_output_test
function.
- For backends:
wlr_output_impl.attach_buffer
is gone, buffer checks now need
to be performed incommit
. A newtest
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