sway: update to 1.6.

Use configure args recommended by upstream:
- new warnings shouldn't break building the package
- assertions are used only for supposedly unreachable code
and should be kept (our build style sets b_ndebug=true)
This commit is contained in:
Isaac Freund 2021-04-07 22:42:06 +02:00 committed by Érico Nogueira Rolim
parent f223cb8977
commit 386eb342cf
3 changed files with 4 additions and 147 deletions

View File

@ -1,6 +0,0 @@
Setting the SUID bit after install has been retired for all Wayland
compositors. It is recommended that users use a session management daemon
such as elogind or seatd and do not rely on compositors dropping privileges.
All users who require this functionality will need to set the SUID bit manually
after each update going forward.

View File

@ -1,133 +0,0 @@
Upstream: yes
Source: https://github.com/swaywm/sway/pull/6046
Reason: Popup menu flickers on Firefox
(https://bugzilla.mozilla.org/show_bug.cgi?id=1696662)
From cf03185561e919f1c337f087194fec150425eef5 Mon Sep 17 00:00:00 2001
From: Kenny Levinsen <kl@kl.wtf>
Date: Fri, 19 Feb 2021 18:39:54 +0100
Subject: [PATCH 1/3] view: Recursively check mapped of view_child tree
A subsurface may be set to mapped without its parent.
---
sway/tree/view.c | 14 ++++++++++++--
1 file changed, 12 insertions(+), 2 deletions(-)
diff --git a/sway/tree/view.c b/sway/tree/view.c
index ad79b2294..c8a4ea6b6 100644
--- a/sway/tree/view.c
+++ b/sway/tree/view.c
@@ -982,8 +982,18 @@ static void view_child_subsurface_create(struct sway_view_child *child,
view_child_damage(&subsurface->child, true);
}
+static bool view_child_is_mapped(struct sway_view_child *child) {
+ while (child) {
+ if (!child->mapped) {
+ return false;
+ }
+ child = child->parent;
+ }
+ return true;
+}
+
static void view_child_damage(struct sway_view_child *child, bool whole) {
- if (!child || !child->mapped || !child->view || !child->view->container) {
+ if (!child || !view_child_is_mapped(child) || !child->view || !child->view->container) {
return;
}
int sx, sy;
@@ -1082,7 +1092,7 @@ void view_child_init(struct sway_view_child *child,
}
void view_child_destroy(struct sway_view_child *child) {
- if (child->mapped && child->view->container != NULL) {
+ if (view_child_is_mapped(child) && child->view->container != NULL) {
view_child_damage(child, true);
}
From e2ec65d0a32797edd0846758bc24cf685e2d19d5 Mon Sep 17 00:00:00 2001
From: Kenny Levinsen <kl@kl.wtf>
Date: Fri, 19 Feb 2021 18:41:04 +0100
Subject: [PATCH 2/3] view: Mark subchildren as unmapped in view_child_destroy
The subchildren lose their parent association at this point, so they
will not be able to see that the parent is unmapped.
Instead, just set the subchildren to be unmapped directly.
---
sway/tree/view.c | 3 +++
1 file changed, 3 insertions(+)
diff --git a/sway/tree/view.c b/sway/tree/view.c
index c8a4ea6b6..978271c24 100644
--- a/sway/tree/view.c
+++ b/sway/tree/view.c
@@ -1105,6 +1105,9 @@ void view_child_destroy(struct sway_view_child *child) {
wl_list_for_each_safe(subchild, tmpchild, &child->children, link) {
wl_list_remove(&subchild->link);
subchild->parent = NULL;
+ // The subchild lost its parent link, so it cannot see that the parent
+ // is unmapped. Unmap it directly.
+ subchild->mapped = false;
}
wl_list_remove(&child->surface_commit.link);
From c06a926e0d89e952e5a3892b63f07d5b802b34ef Mon Sep 17 00:00:00 2001
From: Kenny Levinsen <kl@kl.wtf>
Date: Fri, 19 Feb 2021 18:33:20 +0100
Subject: [PATCH 3/3] view: Set parent for view_child subsurfaces on init
view_child_init was calling view_init_subsurfaces, which did not set the
parent attribute for the subchildren. This lead to the subchildren
acting as standalone children. If the parent was an xdg_popup, this
would make the subchild unaware of the popup position.
Introduce view_child_init_subsurfaces for view_child_init to use
instead.
Closes: https://github.com/swaywm/sway/issues/6038
---
sway/tree/view.c | 13 ++++++++++++-
1 file changed, 12 insertions(+), 1 deletion(-)
diff --git a/sway/tree/view.c b/sway/tree/view.c
index 978271c24..8a2a8178d 100644
--- a/sway/tree/view.c
+++ b/sway/tree/view.c
@@ -465,6 +465,9 @@ static void view_subsurface_create(struct sway_view *view,
static void view_init_subsurfaces(struct sway_view *view,
struct wlr_surface *surface);
+static void view_child_init_subsurfaces(struct sway_view_child *view_child,
+ struct wlr_surface *surface);
+
static void view_handle_surface_new_subsurface(struct wl_listener *listener,
void *data) {
struct sway_view *view =
@@ -1033,6 +1036,14 @@ static void view_init_subsurfaces(struct sway_view *view,
}
}
+static void view_child_init_subsurfaces(struct sway_view_child *view_child,
+ struct wlr_surface *surface) {
+ struct wlr_subsurface *subsurface;
+ wl_list_for_each(subsurface, &surface->subsurfaces, parent_link) {
+ view_child_subsurface_create(view_child, subsurface);
+ }
+}
+
static void view_child_handle_surface_map(struct wl_listener *listener,
void *data) {
struct sway_view_child *child =
@@ -1088,7 +1099,7 @@ void view_child_init(struct sway_view_child *child,
wlr_surface_send_enter(child->surface, workspace->output->wlr_output);
}
- view_init_subsurfaces(child->view, surface);
+ view_child_init_subsurfaces(child, surface);
}
void view_child_destroy(struct sway_view_child *child) {

View File

@ -1,8 +1,9 @@
# Template file for 'sway'
pkgname=sway
version=1.5.1
revision=2
version=1.6
revision=1
build_style=meson
configure_args="-Dwerror=false -Db_ndebug=false"
conf_files="/etc/sway/config"
hostmakedepends="pkg-config wayland-devel scdoc git"
makedepends="wlroots-devel pcre-devel json-c-devel pango-devel cairo-devel
@ -13,12 +14,7 @@ maintainer="Olaf Mersmann <olafm@p-value.net>"
license="MIT"
homepage="https://swaywm.org"
distfiles="https://github.com/swaywm/${pkgname}/archive/${version}.tar.gz"
checksum=095f983c9a5f80d761bc2fb19df8166839b9290124ccd47f3e74119a1335490f
patch_args="-Np1"
post_patch() {
vsed -e 's/werror=true/werror=false/g' -i meson.build
}
checksum=9ecfd2f38239f7e90922a13cd348fc95fc059e8fa0e4b75b8ffcc7b61685a5fb
post_install() {
vlicense LICENSE