wlroots/types
Kenny Levinsen 6183b374dd wlr_compositor: Kill the client if we cannot accept the buffer
When the client commits a new buffer, we may need to instantiate a new
wlr_client_buffer which may cause us to import the buffer into our
active renderer, which may fail. If the import fails, we leave the old
buffer behind but otherwise proceed as normal.

If the client is resizing its window and we fail to apply a buffer of a
new size, while the client is also applying a suitable viewport src_box
for the new buffer size, we will end up with an inconsistent surface
state that will later lead to assert.

Rather than have an inconsistent surface state that can cause the entire
display server to crash on asserts later, sacrifice the client. We might
be able to do something smarter in the future.

Fixes: https://gitlab.freedesktop.org/wlroots/wlroots/-/work_items/4079
Signed-off-by: Kenny Levinsen <kl@kl.wtf>
2026-04-20 19:15:04 +02:00
..
buffer types/wlr_buffer: add buffer_get_drm_format helper function 2026-02-06 13:53:46 +00:00
data_device seat: add wlr_seat_touch_notify_clear_focus 2025-12-11 21:10:59 +00:00
ext_image_capture_source_v1 ext_image_capture_source_v1/scene: fix extents 2026-03-30 17:23:02 +02:00
output output: Add color-representation to output state 2026-03-17 16:32:30 +00:00
scene scene: transfer sample syncobj to client timeline 2026-03-17 18:14:35 +00:00
seat seat: add wlr_seat_touch_notify_clear_focus 2025-12-11 21:10:59 +00:00
tablet_v2 tablet-v2: cleanup focused surface on tool destroy 2025-04-27 16:57:50 +00:00
xdg_shell seat: add wlr_seat_touch_notify_clear_focus 2025-12-11 21:10:59 +00:00
meson.build ext_background_effect_v1: add implementation 2026-04-09 10:43:46 +00:00
wlr_alpha_modifier_v1.c alpha-modifier-v1: add a missing NULL check in wlr_alpha_modifier_v1_get_surface_state() 2024-05-01 03:07:16 +03:00
wlr_color_management_v1.c color_management_v1: ignore surface update if no-op 2026-03-19 21:46:28 +00:00
wlr_color_representation_v1.c color-representation-v1: fix condition in surface commit 2026-02-07 08:36:29 +04:00
wlr_compositor.c wlr_compositor: Kill the client if we cannot accept the buffer 2026-04-20 19:15:04 +02:00
wlr_content_type_v1.c Avoid including generated headers publicly where possible 2025-08-13 22:46:37 +02:00
wlr_cursor.c wlr_cursor: fix event type in handle_tablet_tool_button 2026-02-03 21:25:50 +08:00
wlr_cursor_shape_v1.c Avoid including generated headers publicly where possible 2025-08-13 22:46:37 +02:00
wlr_damage_ring.c damage_ring: Remove wlr_damage_ring_set_bounds 2024-10-09 06:31:46 +00:00
wlr_data_control_v1.c Assert (almost all) signals have no attached listeners on destroy 2025-01-15 19:53:11 +03:00
wlr_drm.c Assert (almost all) signals have no attached listeners on destroy 2025-01-15 19:53:11 +03:00
wlr_drm_lease_v1.c drm_lease_v1: initialize device resource link during abnormal exit 2025-09-11 11:05:39 +08:00
wlr_export_dmabuf_v1.c Change all timespec pointers in events to owned 2025-05-15 08:59:56 +00:00
wlr_ext_background_effect_v1.c ext_background_effect_v1: add implementation 2026-04-09 10:43:46 +00:00
wlr_ext_data_control_v1.c ext-data-control: add missing listener list assertion 2025-04-06 10:13:40 +03:00
wlr_ext_foreign_toplevel_list_v1.c ext-foreign-toplevel-list: add new toplevels to end of list 2026-04-12 13:03:33 +09:00
wlr_ext_image_copy_capture_v1.c wlr_ext_image_copy_capture_v1: Fix crash when client creates a cursor session not implemented server side 2026-03-14 19:04:42 +00:00
wlr_ext_workspace_v1.c wlr_ext_workspace_v1.c: add new workspaces to end of list 2026-04-12 10:11:13 +00:00
wlr_fixes.c fixes: add implementation 2025-08-13 20:41:21 +00:00
wlr_foreign_toplevel_management_v1.c wlr-foreign-toplevel-management: add new toplevels to end of list 2026-04-12 00:25:49 +09:00
wlr_fractional_scale_v1.c Define _POSIX_C_SOURCE globally 2024-02-15 15:41:12 +01:00
wlr_gamma_control_v1.c gamma_control_v1: introduce fallback_gamma_size 2025-10-18 20:36:01 +02:00
wlr_idle_inhibit_v1.c Assert (almost all) signals have no attached listeners on destroy 2025-01-15 19:53:11 +03:00
wlr_idle_notify_v1.c idle_notify_v1: drop trailing spaces 2025-06-15 12:25:36 +00:00
wlr_input_device.c types/wlr_input_device: name maybe NULL 2025-11-04 17:29:23 +08:00
wlr_input_method_v2.c input-method-v2: Destroy keyboard grab before input method 2025-10-16 12:07:47 +00:00
wlr_keyboard.c keyboard: fix modifiers event when no keymap set 2026-04-05 10:52:25 +00:00
wlr_keyboard_group.c types: Simplify wlr_keyboard_group_destroy 2026-02-02 10:46:20 -05:00
wlr_keyboard_shortcuts_inhibit_v1.c Assert (almost all) signals have no attached listeners on destroy 2025-01-15 19:53:11 +03:00
wlr_layer_shell_v1.c xdg-shell,layer-shell: assert that configure events are only sent to initialized surfaces 2025-03-01 16:07:11 +00:00
wlr_linux_dmabuf_v1.c Assert (almost all) signals have no attached listeners on destroy 2025-01-15 19:53:11 +03:00
wlr_linux_drm_syncobj_v1.c linux_drm_syncobj_v1: fix handling of empty first commit 2026-03-20 15:36:16 +00:00
wlr_output_layer.c Assert (almost all) signals have no attached listeners on destroy 2025-01-15 19:53:11 +03:00
wlr_output_layout.c Adopt wlr_box_intersects where useful 2026-03-09 22:09:40 +00:00
wlr_output_management_v1.c Assert (almost all) signals have no attached listeners on destroy 2025-01-15 19:53:11 +03:00
wlr_output_power_management_v1.c Assert (almost all) signals have no attached listeners on destroy 2025-01-15 19:53:11 +03:00
wlr_output_swapchain_manager.c output-swapchain-manager: Reject zero resolution 2026-01-22 12:55:13 +01:00
wlr_pointer.c Assert (almost all) signals have no attached listeners on destroy 2025-01-15 19:53:11 +03:00
wlr_pointer_constraints_v1.c Avoid including generated headers publicly where possible 2025-08-13 22:46:37 +02:00
wlr_pointer_gestures_v1.c Assert (almost all) signals have no attached listeners on destroy 2025-01-15 19:53:11 +03:00
wlr_presentation_time.c presentation-time: make version a uint32_t 2025-04-27 20:42:57 +00:00
wlr_primary_selection.c Assert (almost all) signals have no attached listeners on destroy 2025-01-15 19:53:11 +03:00
wlr_primary_selection_v1.c Assert (almost all) signals have no attached listeners on destroy 2025-01-15 19:53:11 +03:00
wlr_region.c compositor: deprecate wlr/types/wlr_region.h 2023-11-24 15:09:31 +03:00
wlr_relative_pointer_v1.c Assert (almost all) signals have no attached listeners on destroy 2025-01-15 19:53:11 +03:00
wlr_screencopy_v1.c screencopy: simplify capture error handling 2026-03-04 21:09:47 +08:00
wlr_security_context_v1.c Assert (almost all) signals have no attached listeners on destroy 2025-01-15 19:53:11 +03:00
wlr_server_decoration.c Assert (almost all) signals have no attached listeners on destroy 2025-01-15 19:53:11 +03:00
wlr_session_lock_v1.c Define _POSIX_C_SOURCE globally 2024-02-15 15:41:12 +01:00
wlr_shm.c buffer: introduce wlr_buffer_finish() 2025-01-08 16:06:12 +00:00
wlr_single_pixel_buffer_v1.c single-pixel-buffer: Add try_from_buffer() function 2025-04-07 13:25:42 +01:00
wlr_subcompositor.c Assert (almost all) signals have no attached listeners on destroy 2025-01-15 19:53:11 +03:00
wlr_switch.c Assert (almost all) signals have no attached listeners on destroy 2025-01-15 19:53:11 +03:00
wlr_tablet_pad.c Assert (almost all) signals have no attached listeners on destroy 2025-01-15 19:53:11 +03:00
wlr_tablet_tool.c Assert (almost all) signals have no attached listeners on destroy 2025-01-15 19:53:11 +03:00
wlr_tearing_control_v1.c Fix/cleanup includes a bit 2025-04-15 20:13:29 +03:00
wlr_text_input_v3.c text-input-v3: Use NULL when emitting signals 2025-05-15 13:36:58 +00:00
wlr_touch.c Assert (almost all) signals have no attached listeners on destroy 2025-01-15 19:53:11 +03:00
wlr_transient_seat_v1.c transient_seat: initialize seat destroy listener 2025-07-10 19:52:45 +02:00
wlr_viewporter.c Assert (almost all) signals have no attached listeners on destroy 2025-01-15 19:53:11 +03:00
wlr_virtual_keyboard_v1.c wlr_virtual_keyboard_v1: specify size when creating keymap 2026-04-07 09:43:08 +00:00
wlr_virtual_pointer_v1.c wlr_virtual_pointer: Set axis source on all axis 2025-11-06 16:02:58 +00:00
wlr_xcursor_manager.c Define _POSIX_C_SOURCE globally 2024-02-15 15:41:12 +01:00
wlr_xdg_activation_v1.c Assert (almost all) signals have no attached listeners on destroy 2025-01-15 19:53:11 +03:00
wlr_xdg_decoration_v1.c Assert (almost all) signals have no attached listeners on destroy 2025-01-15 19:53:11 +03:00
wlr_xdg_dialog_v1.c Assert (almost all) signals have no attached listeners on destroy 2025-01-15 19:53:11 +03:00
wlr_xdg_foreign_registry.c Assert (almost all) signals have no attached listeners on destroy 2025-01-15 19:53:11 +03:00
wlr_xdg_foreign_v1.c Assert (almost all) signals have no attached listeners on destroy 2025-01-15 19:53:11 +03:00
wlr_xdg_foreign_v2.c Fix/cleanup includes a bit 2025-04-15 20:13:29 +03:00
wlr_xdg_output_v1.c Assert (almost all) signals have no attached listeners on destroy 2025-01-15 19:53:11 +03:00
wlr_xdg_system_bell_v1.c xdg-system-bell-v1: set proper global/resource user data 2025-04-11 14:04:23 +00:00
wlr_xdg_toplevel_icon_v1.c wlr_xdg_toplevel_icon_v1: check the correct resource 2025-08-27 20:01:50 +08:00
wlr_xdg_toplevel_tag_v1.c xdg-toplevel-tag-v1: new protocol 2025-07-07 09:10:37 +00:00