linuxOS_AP06/buildroot/package/weston/0049-compositor-Support-placing-subsurface-above-or-below.patch
2025-06-03 12:28:32 +08:00

49 lines
1.4 KiB
Diff

From aea3411d0edb5a7293827d6f319d119e6d301898 Mon Sep 17 00:00:00 2001
From: Jeffy Chen <jeffy.chen@rock-chips.com>
Date: Wed, 3 Nov 2021 17:52:51 +0800
Subject: [PATCH 49/97] compositor: Support placing subsurface above or below
all siblings
By passing itself as sibling in ::place_above or ::place_below.
Signed-off-by: Jeffy Chen <jeffy.chen@rock-chips.com>
---
libweston/compositor.c | 14 ++++++++++++--
1 file changed, 12 insertions(+), 2 deletions(-)
diff --git a/libweston/compositor.c b/libweston/compositor.c
index 86f9a4ef9..1b22f8f85 100644
--- a/libweston/compositor.c
+++ b/libweston/compositor.c
@@ -5852,7 +5852,12 @@ subsurface_place_above(struct wl_client *client,
if (!sub)
return;
- sibling = subsurface_sibling_check(sub, surface, "place_above");
+ if (surface == sub->surface)
+ sibling = container_of(sub->parent->subsurface_list.next,
+ struct weston_subsurface, parent_link);
+ else
+ sibling = subsurface_sibling_check(sub, surface, "place_above");
+
if (!sibling)
return;
@@ -5877,7 +5882,12 @@ subsurface_place_below(struct wl_client *client,
if (!sub)
return;
- sibling = subsurface_sibling_check(sub, surface, "place_below");
+ if (surface == sub->surface)
+ sibling = container_of(sub->parent->subsurface_list.prev,
+ struct weston_subsurface, parent_link);
+ else
+ sibling = subsurface_sibling_check(sub, surface, "place_below");
+
if (!sibling)
return;
--
2.20.1