weston/libweston
Daniel Stone 17af1c4d20 surface: Unmap subsurface views, not surface, on parent destroy
Per the wl_subsurface spec:
      A sub-surface becomes mapped, when a non-NULL wl_buffer is applied
      and the parent surface is mapped. The order of which one happens
      first is irrelevant. A sub-surface is hidden if the parent becomes
      hidden, or if a NULL wl_buffer is applied. These rules apply
      recursively through the tree of surfaces.
      [...]
      If the parent wl_surface object is destroyed, the sub-surface is
      unmapped.

The terminology is kind of loose. My reading of this is that we should
'unmap' (hide from display, remove from input/focus consideration, etc)
a subsurface immediately when a parent is destroyed.

However, if the child surface is then paired with another parent which
is itself mapped, then the child surface should immediately be mapped,
because it has a non-NULL buffer already applied, and the parent surface
is mapped.

By marking the surface as 'unmapped' on parent destroy, we were removing
it from the scene graph, but also I think breaking the rules on mapping
by requiring another commit when it was reassociated with another,
already mapped, surface.

Removing the explicit surface unmap leaves the surface in the 'mapped'
state, but without any views, which I believe has the intended effect.

Signed-off-by: Daniel Stone <daniels@collabora.com>
2023-07-04 15:52:21 +01:00
..
backend-drm backend-drm: Use resize_output to allow changing the fb 2023-07-04 11:41:29 +00:00
backend-headless libweston: move weston_compositor_shutdown call out of backends 2023-06-27 12:09:47 +01:00
backend-pipewire libweston: move weston_compositor_shutdown call out of backends 2023-06-27 12:09:47 +01:00
backend-rdp libweston: move weston_compositor_shutdown call out of backends 2023-06-27 12:09:47 +01:00
backend-vnc libweston: move weston_compositor_shutdown call out of backends 2023-06-27 12:09:47 +01:00
backend-wayland backend-wayland: Prepare for more renderers, reject no-op 2023-06-30 16:36:52 +00:00
backend-x11 backend-x11: Prepare for more renderers, reject no-op 2023-06-30 11:02:28 +00:00
color-lcms color-lcms: increase float precision to print segment breaks 2023-06-29 17:05:06 -03:00
desktop weston-desktop: Match desktop-shell view mapping semantics 2023-06-26 15:49:50 +00:00
renderer-gl initialize fourcc with DRM_FORMAT_INVALID 2023-06-29 12:36:56 +02:00
shell-utils libweston: Use weston_coord in struct weston_output 2023-06-12 16:55:22 -05:00
animation.c Fix indentation all through the project 2021-07-31 15:28:20 +00:00
auth.c libweston: Add user authentication support via PAM 2022-11-23 16:58:48 +01:00
backend.h libweston: add weston_backend::shutdown callback 2023-06-27 12:09:45 +01: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-noop.c libweston: add HDR metadata to weston_output 2022-05-27 10:30:35 +00:00
color.c color-lcms: add debug scope for color tranformations 2023-04-12 10:03:32 +00:00
color.h color-lcms: add debug scope for color tranformations 2023-04-12 10:03:32 +00:00
compositor.c surface: Unmap subsurface views, not surface, on parent destroy 2023-07-04 15:52:21 +01:00
content-protection.c content-protection: Don't leak update timer on shutdown 2021-12-08 13:38:18 +00:00
data-device.c data-device: Don't make a weston_coord with no valid space 2023-06-28 14:37:34 -05:00
dbus.c dbus: Don't return value from void function 2019-06-11 11:31:04 +01:00
dbus.h Rename compositor.h to libweston/libweston.h 2019-04-18 12:31:46 +03: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 Add Meson build system 2018-12-09 14:50:54 +02:00
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
input.c libweston: Use weston_coord in struct weston_touch 2023-06-12 16:58:17 -05:00
launcher-impl.h launchers: Remove --tty option 2022-03-03 17:00:15 -06:00
launcher-libseat.c libweston: Enable logging for libseat launcher 2022-03-10 17:13:16 +02:00
launcher-logind.c libweston, backends: pass backend parameter to weston_backend functions 2023-01-13 18:55:59 +01:00
launcher-util.c launchers: Remove --tty option 2022-03-03 17:00:15 -06: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 Rename compositor.h to libweston/libweston.h 2019-04-18 12:31:46 +03:00
libweston-internal.h libweston: move weston_compositor_shutdown call out of backends 2023-06-27 12:09:47 +01:00
linux-dmabuf.c helpers: Add a u64 from 2 u32 helper 2022-10-27 08:13:30 +00:00
linux-dmabuf.h linux-dmabuf: add missing includes and declarations 2022-12-16 15:05:10 +02:00
linux-explicit-synchronization.c libweston: Advertise minor version 2 of zwp_linux_explicit_synchronization_v1 2019-08-02 15:00:08 +00:00
linux-explicit-synchronization.h libweston: Support zwp_surface_synchronization_v1.set_acquire_fence 2019-02-06 12:21:56 +00:00
linux-sync-file-uapi.h libweston: Introduce an internal linux sync file API 2019-02-06 12:21:56 +00:00
linux-sync-file.c libweston: export weston_linux_sync_file_read_timestamp() 2019-04-18 12:50:55 +03:00
linux-sync-file.h libweston: export weston_linux_sync_file_read_timestamp() 2019-04-18 12:50:55 +03:00
log.c libweston: Add weston_log_paced() 2022-11-08 08:32:26 -06:00
meson.build build: Switch join_paths(foo, bar) to foo / bar 2023-06-22 14:31:57 +01:00
noop-renderer.c pixman-renderer: set renderbuffer via new repaint_output parameter 2023-01-23 20:05:21 +00: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 pixel-formats: Add gl_internalformat 2023-06-09 09:21:31 +00:00
pixel-formats.h pixel-formats: Add gl_internalformat 2023-06-09 09:21:31 +00:00
pixman-renderer.c pixman-renderer: Add to_pixman_renderbuffer helper 2023-06-09 09:14:47 +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 Rename plugin-registry.h to libweston/plugin-registry.h 2019-04-18 12:31:46 +03:00
screenshooter.c screenshooter: Add SHM buffer destroy listener to avoid invalid memcpy 2022-10-03 16:52:16 +02:00
spring-tool.c Rename compositor.h to libweston/libweston.h 2019-04-18 12:31:46 +03:00
timeline.c libweston: fix typos 2021-02-24 10:01:17 -05:00
timeline.h libweston: move TYPEVERIFY macro into shared 2021-02-17 12:52:33 +00:00
touch-calibration.c libweston: Use weston_coord in struct weston_output 2023-06-12 16:55:22 -05:00
vertex-clipping.c gl-renderer: Make clip_transformed() surf parameter constant 2023-06-26 12:15:43 +00:00
vertex-clipping.h gl-renderer: Make clip_transformed() surf parameter constant 2023-06-26 12:15:43 +00:00
weston-direct-display.c libweston: Add weston-direct-display server side implementation 2019-11-18 19:33:09 +02:00
weston-log-file.c weston-log: destroy subscriptions with destruction of subscribers 2020-02-10 10:53:50 +00:00
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: make stream_destroy() use weston_log_subscriber_release() 2020-02-10 10:53:50 +00:00
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