weston/libweston
Michael Olbrich a7e8bd4bea subsurface: don't forget to repaint after the first sub-surface commit
For the following sequence, weston will not trigger a repaint:

1. create the main surface
2. create another surface and attach it as a sub-surface to the main surface
3. set the sub-surface to desync
4. attach a buffer to the main surface and commit it
5. attach a buffer to the sub-surface and commit it

Step 5 should cause the sub-surface to become mapped. However, Weston fails to
schedule a repaint in that case, so the sub-surface will not appear until
something else causes a repaint on that output, e.g. the main window.

And sub-surfaces are special when it comes to mapping because
weston_surface_is_mapped() will not return true until the parent surface is
mapped as well. So right now, weston_surface_map() may be called multiple times
and it will send the map_signal each time.

So to fix all this and make it clearer:

1. define a separate weston_surface_start_mapping() function to make it clearer
   that the (sub-)surface may not be fully mapped at the end
2. check surface->is_mapped explicitly to ensure that the sub-surface is only
   mapped once.
3. call weston_view_update_transform() for all views of the sub-surface when the
   parent surface is already mapped to ensure that a repaint for all relevant
   outputs is triggered.

The new test checks this by waiting for a frame event for the first subsurface
commit. Without these changes, the test will block until it is killed by the
timeout.

Signed-off-by: Michael Olbrich <m.olbrich@pengutronix.de>
2024-08-07 15:10:49 +00:00
..
backend-drm backend-drm: get colorimetry mask from EDID 2024-07-25 13:20:52 +00:00
backend-headless libweston: Remove output->scale 2024-07-15 11:50:49 +00:00
backend-pipewire backend-pipewire: add fence to synchronize on finish of render 2024-08-05 09:09:51 +00:00
backend-rdp rdp: Fix invalid free and memory leak on error 2024-07-24 08:54:45 +00:00
backend-vnc backend-vnc: Remove the display when output is disabled 2024-07-04 14:07:41 +03:00
backend-wayland libweston: Remove output->scale 2024-07-15 11:50:49 +00:00
backend-x11 libweston: Remove output->scale 2024-07-15 11:50:49 +00:00
color-lcms color-lcms: print ICC profile class on error 2024-06-19 07:40:08 +00:00
desktop libweston/desktop: Use the weston_view_move_to_layer helper 2024-06-07 11:59:25 +00:00
renderer-gl gl-renderer: Add pixel storage modes section to best practices 2024-07-29 14:20:43 +00:00
shell-utils shell-utils: Use weston_coord in curtain params 2023-09-18 20:35:37 +00:00
animation.c libweston: Defer animation destruction to idle loop 2024-07-08 11:17:10 +00:00
auth.c libweston: Add user authentication support via PAM 2022-11-23 16:58:48 +01:00
backend.h backend-drm: handle commit failures correctly 2024-06-21 15:35:30 +02:00
bindings.c input: Fix uint/enum declaration mismatch 2023-04-11 11:44:34 +00:00
clipboard.c libweston: correct argument name in the handler of wl_data_source.accept 2022-04-14 12:05:57 +00:00
color-management.c color: update color-management protocol to xx-v4 2024-08-07 13:36:49 +00:00
color-management.h color: declare cm_image_desc_info 2024-02-23 16:46:39 +02:00
color-noop.c color: add get_color_profile_from_params() to color managers 2024-06-17 11:50:40 -03:00
color-profile-param-builder.c color: introduce API to create color profile from parameters 2024-06-17 11:50:41 -03:00
color-properties.c color: update color-management protocol to xx-v4 2024-08-07 13:36:49 +00:00
color-properties.h color: add WESTON_TF_POWER 2024-06-17 11:49:09 -03:00
color.c backend-drm: get KMS colorimetry modes 2024-05-06 10:39:42 +00:00
color.h color: add get_color_profile_from_params() to color managers 2024-06-17 11:50:40 -03:00
compositor.c subsurface: don't forget to repaint after the first sub-surface commit 2024-08-07 15:10:49 +00:00
content-protection.c content-protection: Don't leak update timer on shutdown 2021-12-08 13:38:18 +00:00
data-device.c build: Add generic compiler builtins support 2024-06-27 20:40:37 +00:00
drm-formats.c drm-formats: add weston_drm_format_array_count_pairs() 2021-11-25 10:47:45 -03:00
git-version.h.meson
gl-borders.c libweston, backends: move GL renderer interface into weston_renderer 2023-01-16 20:40:34 +01:00
gl-borders.h libweston, backends: move GL renderer interface into weston_renderer 2023-01-16 20:40:34 +01:00
id-number-allocator.c libweston: fix indentation of a few files 2024-06-04 17:32:39 -03:00
id-number-allocator.h libweston: add unique id generator 2024-02-13 14:08:38 -03:00
input.c input: Fix release/debugoptimized build warning with gcc 2024-07-03 10:54:34 +00:00
launcher-impl.h launcher: Remove launcher-logind 2023-09-29 09:55:32 -05:00
launcher-libseat.c launcher-libseat: Don't depend on dbus 2023-09-29 09:47:43 -05:00
launcher-util.c launcher: Remove launcher-logind 2023-09-29 09:55:32 -05:00
launcher-util.h launchers: Remove --tty option 2022-03-03 17:00:15 -06:00
libinput-device.c libinput: hook up tablet events 2023-03-31 12:10:26 +00:00
libinput-device.h libinput: hook up tablet events 2023-03-31 12:10:26 +00:00
libinput-seat.c libweston: Use weston_coord in struct weston_pointer 2023-02-17 13:51:23 +00:00
libinput-seat.h
libweston-internal.h gl-renderer: add DMABUF allocator 2024-07-19 11:43:42 +02:00
linux-dmabuf.c linux-dmabuf: Add support for protocol version 5 2024-01-19 18:59:22 +01:00
linux-dmabuf.h linux-dmabuf: Add support for protocol version 5 2024-01-19 18:59:22 +01:00
linux-explicit-synchronization.c
linux-explicit-synchronization.h
linux-sync-file-uapi.h
linux-sync-file.c
linux-sync-file.h
log.c libweston: Add weston_log_paced() 2022-11-08 08:32:26 -06:00
meson.build libweston: extract dep_gbm from backend-drm 2024-07-19 11:43:42 +02:00
noop-renderer.c libweston: Store shm buffer stride in weston_buffer 2024-07-04 13:07:54 +03:00
output-capture.c drm: allow to skip composition if pending capture is writeback 2023-03-31 10:36:31 +00:00
output-capture.h drm: allow to skip composition if pending capture is writeback 2023-03-31 10:36:31 +00:00
pixel-formats.c renderer-gl: Support more shm RGB formats 2024-06-19 15:42:59 +08:00
pixel-formats.h renderer-gl: Support more shm RGB formats 2024-06-19 15:42:59 +08:00
pixman-renderer.c renderers: Remove internal flush and attach 2024-07-19 16:41:05 +00:00
pixman-renderer.h pixman-renderer: use pixel_format_info instead of pixman_format_code_t 2023-01-28 12:59:16 +00:00
plugin-registry.c
screenshooter.c libweston: Store shm buffer stride in weston_buffer 2024-07-04 13:07:54 +03:00
spring-tool.c
timeline.c timeline: Fix order with sub-surface clients 2024-06-14 11:41:13 +00:00
timeline.h
touch-calibration.c touch-calibrator: Regularise surface/view mapping 2023-12-06 12:16:27 +00:00
vertex-clipping.c gl-renderer: Do not expose clipper_clip() in header 2024-05-30 09:09:45 +00:00
vertex-clipping.h gl-renderer: Do not expose clipper_clip() in header 2024-05-30 09:09:45 +00:00
weston-direct-display.c
weston-log-file.c
weston-log-flight-rec.c weston-log-flight-rec: Map ring buffer using memset() 2023-03-10 11:35:04 +01:00
weston-log-internal.h
weston-log-wayland.c Fix indentation all through the project 2021-07-31 15:28:20 +00:00
weston-log.c libweston/weston-log: Add a iterator helper for debug scope 2023-05-30 11:05:14 +00:00