wlroots/types
Gabriel Ford 06d3d48aa2 wlr_scene: fix fullscreen app stuttering when screensharing
Problem: The wlroots implementation of wlr_screencopy applys a lock for
a brief duration every time a frame is captured. If an output is
eligible for direct scanout then this will result in direct scanout
being rapidly toggled on and off since the lock count constantly flips
between 0 and 1. On some hardware this causes stuttering every time
direct scanout is enabled then disabled.

Solution: To mitigate this we wait for there to be 0 locks for 120
frames so that we can be relatively confident that screen recording has
stopped before we re-enable direct scanout.
2025-10-16 18:47:11 -04:00
..
buffer wlr_client_buffer: add get_shm implementation 2025-04-13 20:48:59 +00:00
data_device wlr_drag: drag motion signal also needs to be sent 2025-09-22 10:04:30 -04:00
ext_image_capture_source_v1 ext_image_capture_source_v1: advertise fallback {A,X}RGB8888 formats 2025-07-31 14:13:24 +00:00
output wlr_scene: fix fullscreen app stuttering when screensharing 2025-10-16 18:47:11 -04:00
scene wlr_scene: fix fullscreen app stuttering when screensharing 2025-10-16 18:47:11 -04:00
seat seat/keyboard: optimize wlr_seat_set_keyboard to send the keymap only if it has changed 2025-04-11 16:56:36 +02:00
tablet_v2 tablet-v2: cleanup focused surface on tool destroy 2025-04-27 16:57:50 +00:00
xdg_shell xdg-shell: add support for v7 2025-06-05 16:25:25 +00:00
meson.build fixes: add implementation 2025-08-13 20:41:21 +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 render: introduce bt.1886 transfer function 2025-10-04 18:13:37 +05:30
wlr_color_representation_v1.c color-representation-v1: Actually set supported_*_len 2025-09-09 15:19:30 +01: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 cursor: use source buffer to signal release timeline point 2025-09-11 12:33:04 +00: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 Avoid including generated headers publicly where possible 2025-08-13 22:46:37 +02: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-v1: Simply leave and destroy code 2025-05-06 00:45:09 +02:00
wlr_fractional_scale_v1.c Define _POSIX_C_SOURCE globally 2024-02-15 15:41:12 +01:00
wlr_gamma_control_v1.c wlr_gamma_control_v1: use color transforms 2025-06-16 09:06:10 +00: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 Assert (almost all) signals have no attached listeners on destroy 2025-01-15 19:53:11 +03: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 wlr_keyboard_group: fix leak of wlr_keyboard_group->keys 2025-04-25 03:23:26 +09: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 Fix includes of wlr_output.h 2025-02-21 13:44:42 +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 Assert (almost all) signals have no attached listeners on destroy 2025-01-15 19:53:11 +03: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 swapchain, damage_ring: Drop buffer age 2024-08-21 09:45:54 -04: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 Change all timespec pointers in events to owned 2025-05-15 08:59:56 +00: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 Assert (almost all) signals have no attached listeners on destroy 2025-01-15 19:53:11 +03:00
wlr_virtual_pointer_v1.c Assert (almost all) signals have no attached listeners on destroy 2025-01-15 19:53:11 +03: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