wlroots/types
Kenny Levinsen f57e7e40d3 scene/surface: Do not use buffer dimensions for clip
The surface's buffer dimensions were used to scale the clip's x/y
offset. If a surface had a larger buffer than src_box, the calculations
to scale the x/y portion of the clip would be incorrect, yielding
graphical glitches.

This was noticed with Chromium in sway, which during resize uses a
viewport with a src_box to avoid immediate buffer reallocation. While
the viewport was in use, the surface would be shifted so that too much
content was cropped in the upper left, and damage glitching was visible
in the lower right.

Use the buffer source box dimensions instead.

(cherry picked from commit dc7dba8b1f)
2025-10-21 22:25:46 +00:00
..
buffer Avoid using wayland-{client,server}.h 2024-04-17 13:37:12 +00:00
data_device data-device: reset focused surface when destroyed 2024-12-11 09:29:35 -05:00
output backend/drm: add support for SIZE_HINTS property 2024-07-10 22:42:44 +00:00
scene scene/surface: Do not use buffer dimensions for clip 2025-10-21 22:25:46 +00:00
seat seat: Don't forget to destroy touch points on touch up 2025-02-13 17:47:25 +01:00
tablet_v2 Switch to stable tablet-v2 protocol 2024-06-27 18:04:00 +00:00
xdg_shell xdg-popup: don't set a role resource destroy handler 2024-08-15 11:05:32 -04:00
meson.build linux-drm-syncobj-v1: new protocol implementation 2024-06-12 18:40:25 +02: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_compositor.c compositor: add wlr_compositor_set_renderer() 2024-03-14 14:34:44 +01:00
wlr_content_type_v1.c content-type-v1: use wlr_surface_synced 2023-12-25 11:47:15 +01:00
wlr_cursor.c input-device: unconfuse tablet naming 2024-02-29 16:09:07 +01:00
wlr_cursor_shape_v1.c cursor-shape-v1: expose tablet tool in event 2024-03-05 11:20:05 +01:00
wlr_damage_ring.c wlr_damage_ring: Replace wlr_damage_ring_rotate_buffer with original list impl 2024-01-29 19:17:39 +00:00
wlr_data_control_v1.c Define _POSIX_C_SOURCE globally 2024-02-15 15:41:12 +01:00
wlr_drm.c render: drop wlr_renderer_get_dmabuf_texture_formats() 2024-04-21 11:27:29 +00:00
wlr_drm_lease_v1.c drm-lease-v1: Free the wlr_drm_lease_v1 on error 2024-02-22 00:41:06 +01:00
wlr_export_dmabuf_v1.c Define _POSIX_C_SOURCE globally 2024-02-15 15:41:12 +01:00
wlr_ext_foreign_toplevel_list_v1.c ext-foreign-toplevel-list: use correct interface and add missing handler 2024-08-15 11:05:20 -04:00
wlr_foreign_toplevel_management_v1.c Define _POSIX_C_SOURCE globally 2024-02-15 15:41:12 +01:00
wlr_fractional_scale_v1.c Define _POSIX_C_SOURCE globally 2024-02-15 15:41:12 +01:00
wlr_fullscreen_shell_v1.c treewide: Migrate from sizeof(struct) to sizeof(*pointer) where practical 2023-10-03 01:51:07 -04:00
wlr_gamma_control_v1.c wlr_gamma_control: Store gamma size when creating control 2024-04-01 23:00:48 +02:00
wlr_idle_inhibit_v1.c treewide: Migrate from sizeof(struct) to sizeof(*pointer) where practical 2023-10-03 01:51:07 -04:00
wlr_idle_notify_v1.c idle-notify: make wl_global public 2024-03-18 08:12:53 +00:00
wlr_input_device.c Define _POSIX_C_SOURCE globally 2024-02-15 15:41:12 +01:00
wlr_input_method_v2.c input-method: unmap popup surfaces on deactivate 2024-06-11 13:13:00 +00:00
wlr_keyboard.c Revert "wlr_keyboard: don't emit key event for duplicated keycodes" 2025-02-15 23:55:41 +09:00
wlr_keyboard_group.c wlr_keyboard_group: fix leak of wlr_keyboard_group->keys 2025-04-04 08:14:41 +03:00
wlr_keyboard_shortcuts_inhibit_v1.c Define _POSIX_C_SOURCE globally 2024-02-15 15:41:12 +01:00
wlr_layer_shell_v1.c Define _POSIX_C_SOURCE globally 2024-02-15 15:41:12 +01:00
wlr_linux_dmabuf_v1.c render: drop wlr_renderer_get_dmabuf_texture_formats() 2024-04-21 11:27:29 +00:00
wlr_linux_drm_syncobj_v1.c linux-drm-syncobj-v1: actually use the requested version 2024-08-23 09:29:27 -04:00
wlr_matrix.c matrix: remove wlr_matrix_projection() 2022-06-08 19:27:36 +00:00
wlr_output_layer.c output-layer: add feedback event 2023-02-20 18:38:57 +01:00
wlr_output_layout.c output-layout: fix missing global for outputs with a custom mode 2023-12-21 11:28:58 +01:00
wlr_output_management_v1.c output-management-v1: only create custom mode object for enabled heads 2024-11-11 14:21:21 -05:00
wlr_output_power_management_v1.c output-power-management: send zwlr_output_power_v1.failed on output destroy 2024-08-06 08:09:28 -04:00
wlr_output_swapchain_manager.c output-swapchain-manager: new helper 2024-03-14 22:08:01 +00:00
wlr_pointer.c Use struct initializers instead of memset() 2023-07-07 17:31:11 +02:00
wlr_pointer_constraints_v1.c pointer-constraints: don't init/finish current/pending states 2024-08-15 11:05:44 -04:00
wlr_pointer_gestures_v1.c wlr_pointer_gestures_v1: emit destroy signal in destroy function 2024-05-06 10:47:33 +03:00
wlr_presentation_time.c Define _POSIX_C_SOURCE globally 2024-02-15 15:41:12 +01:00
wlr_primary_selection.c Define _POSIX_C_SOURCE globally 2024-02-15 15:41:12 +01:00
wlr_primary_selection_v1.c Define _POSIX_C_SOURCE globally 2024-02-15 15:41:12 +01:00
wlr_region.c compositor: deprecate wlr/types/wlr_region.h 2023-11-24 15:09:31 +03:00
wlr_relative_pointer_v1.c Define _POSIX_C_SOURCE globally 2024-02-15 15:41:12 +01:00
wlr_screencopy_v1.c screencopy: Add some logging 2024-03-22 11:36:12 -04:00
wlr_security_context_v1.c security-context: constify lookup_client() 2024-03-18 08:18:51 +00:00
wlr_server_decoration.c Drop wl_client and user data assertions in bind handlers 2023-10-10 20:10:00 +03:00
wlr_session_lock_v1.c Define _POSIX_C_SOURCE globally 2024-02-15 15:41:12 +01:00
wlr_shm.c shm: add support for wl_shm version 2 2024-07-07 18:16:45 +02:00
wlr_single_pixel_buffer_v1.c single-pixel-buffer: make wl_global public 2024-03-18 08:12:53 +00:00
wlr_subcompositor.c compositor: drop wlr_surface.external_damage 2024-02-01 14:51:43 +00:00
wlr_switch.c Use struct initializers instead of memset() 2023-07-07 17:31:11 +02:00
wlr_tablet_pad.c Use struct initializers instead of memset() 2023-07-07 17:31:11 +02:00
wlr_tablet_tool.c input-device: unconfuse tablet naming 2024-02-29 16:09:07 +01:00
wlr_tearing_control_v1.c Define _POSIX_C_SOURCE globally 2024-02-15 15:41:12 +01:00
wlr_text_input_v3.c types/text-input-v3: assert on invalid _leave() and _enter() calls 2024-03-22 21:34:48 +00:00
wlr_touch.c Use struct initializers instead of memset() 2023-07-07 17:31:11 +02:00
wlr_transient_seat_v1.c Define _POSIX_C_SOURCE globally 2024-02-15 15:41:12 +01:00
wlr_viewporter.c viewporter: fix "has buffer" check 2024-03-24 02:20:18 +00:00
wlr_virtual_keyboard_v1.c Define _POSIX_C_SOURCE globally 2024-02-15 15:41:12 +01:00
wlr_virtual_pointer_v1.c pointer: use enum wl_pointer_button_state 2024-02-28 16:39:18 +00:00
wlr_xcursor_manager.c Define _POSIX_C_SOURCE globally 2024-02-15 15:41:12 +01:00
wlr_xdg_activation_v1.c Define _POSIX_C_SOURCE globally 2024-02-15 15:41:12 +01:00
wlr_xdg_decoration_v1.c Define _POSIX_C_SOURCE globally 2024-02-15 15:41:12 +01:00
wlr_xdg_foreign_registry.c Use wl_signal_emit_mutable 2022-08-18 07:16:16 -04:00
wlr_xdg_foreign_v1.c Define _POSIX_C_SOURCE globally 2024-02-15 15:41:12 +01:00
wlr_xdg_foreign_v2.c Define _POSIX_C_SOURCE globally 2024-02-15 15:41:12 +01:00
wlr_xdg_output_v1.c treewide: Migrate from sizeof(struct) to sizeof(*pointer) where practical 2023-10-03 01:51:07 -04:00