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
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
color-noop.c
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
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.h
drm-formats.c
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
input.c libweston: Use weston_coord in struct weston_touch 2023-06-12 16:58:17 -05:00
launcher-impl.h
launcher-libseat.c
launcher-logind.c libweston, backends: pass backend parameter to weston_backend functions 2023-01-13 18:55:59 +01:00
launcher-util.c
launcher-util.h
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 libweston: move weston_compositor_shutdown call out of backends 2023-06-27 12:09:47 +01:00
linux-dmabuf.c
linux-dmabuf.h linux-dmabuf: add missing includes and declarations 2022-12-16 15:05:10 +02: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 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
screenshooter.c
spring-tool.c
timeline.c
timeline.h
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
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
weston-log.c libweston/weston-log: Add a iterator helper for debug scope 2023-05-30 11:05:14 +00:00