wlroots/types
Ronan Pigott 7375fbda16 scene: only send leave events to outputs with matching scene root
In handling scene buffer output updates, wlroots would send a leave event to
all entered outputs, even those that the scene root for the scene output update
event did not own. Leaving the output list inaccurate.

Sending leave events only for the given scene introduces a problem, though:
existing logic to de-duplicate leave events stops us from sending a leave event
when we leave all the outputs in a scene, and when the surface then becomes
visible in another scene, the frame pacing output cannot be selected
accurately. This breaks screen capture for off-screen windows in sway.

So, let us also mark outputs that would have been left but were spared by the
deduplication logic as "suspended" indicating they are ineligible as frame
pacing outputs.

Fixes: https://github.com/swaywm/sway/issues/9094
2026-03-28 10:39:22 -07: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 image_capture_source/output: Update constraints on enable 2026-03-05 21:28:55 +00:00
output output: Add color-representation to output state 2026-03-17 16:32:30 +00:00
scene scene: only send leave events to outputs with matching scene root 2026-03-28 10:39:22 -07: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-workspace-v1: add implementation 2026-01-31 01:44:23 +09: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 compositor: use wl_resource_post_error_vargs() 2025-08-13 20:59:13 +00: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_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 Fix/cleanup includes a bit 2025-04-15 20:13:29 +03: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 ext-workspace-v1: add implementation 2026-01-31 01:44:23 +09:00
wlr_fixes.c fixes: add implementation 2025-08-13 20:41:21 +00:00
wlr_foreign_toplevel_management_v1.c wlr-foreign-toplevel: avoid wl_resource_find_for_client() 2025-11-25 18:54:20 +00: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 Add support for XKB_LED_NAME_COMPOSE and XKB_LED_NAME_KANA USB HID LEDs 2025-05-15 09:14:48 +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 virtual-keyboard: handle seat destroy 2026-03-17 09:53:32 +01: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