From 0c100b7dd2b30e75b799d806df4ef899fd98e1ea Mon Sep 17 00:00:00 2001 From: V3n3RiX Date: Sat, 16 Apr 2022 13:07:24 +0100 Subject: gentoo resync : 16.04.2022 --- kde-plasma/Manifest.gz | Bin 9094 -> 9098 bytes kde-plasma/kwayland-server/Manifest | 5 +- ...r-5.24.4-fix-crash-on-screen-setup-change.patch | 109 +++++++++++++++++++++ ...yland-server-5.24.4-fix-layer-shell-reset.patch | 57 +++++++++++ ...ver-5.24.4-guard-subsurface-parent-access.patch | 44 +++++++++ .../kwayland-server-5.24.4-r1.ebuild | 48 +++++++++ .../kwayland-server/kwayland-server-5.24.4.ebuild | 42 -------- 7 files changed, 262 insertions(+), 43 deletions(-) create mode 100644 kde-plasma/kwayland-server/files/kwayland-server-5.24.4-fix-crash-on-screen-setup-change.patch create mode 100644 kde-plasma/kwayland-server/files/kwayland-server-5.24.4-fix-layer-shell-reset.patch create mode 100644 kde-plasma/kwayland-server/files/kwayland-server-5.24.4-guard-subsurface-parent-access.patch create mode 100644 kde-plasma/kwayland-server/kwayland-server-5.24.4-r1.ebuild delete mode 100644 kde-plasma/kwayland-server/kwayland-server-5.24.4.ebuild (limited to 'kde-plasma') diff --git a/kde-plasma/Manifest.gz b/kde-plasma/Manifest.gz index e1dd9bd5f811..a2959fdd5fb2 100644 Binary files a/kde-plasma/Manifest.gz and b/kde-plasma/Manifest.gz differ diff --git a/kde-plasma/kwayland-server/Manifest b/kde-plasma/kwayland-server/Manifest index 603e7de8f395..c057d07477f6 100644 --- a/kde-plasma/kwayland-server/Manifest +++ b/kde-plasma/kwayland-server/Manifest @@ -1,5 +1,8 @@ +AUX kwayland-server-5.24.4-fix-crash-on-screen-setup-change.patch 4276 BLAKE2B 4620ba8b9469fb04e83feb0e6c898f3015652859878e238c8e5fad6390eda2d047d56e65f62748f13cd446abe39f127496d823216a314f8185ecdd1eed0a8700 SHA512 431b3da95dcd79b38deeff2b111e60af9b5c28ebedca682804572b79835840ce967e7125367c97b85bebf7001591df3dd7cd381cfe6ad6cd7b13a279be18f4b6 +AUX kwayland-server-5.24.4-fix-layer-shell-reset.patch 1974 BLAKE2B 16041ba840f43e137ed2143c7d0abb0a2b70cee49ab6e2a8d3e077382a09837c47dd68a5285ee4400b9c21860db203ee5604f297ed567d9b3ca1237f1351435f SHA512 89f000937a3b7aaa366043948200ea8fa01e70cdcfd42e499c7dd10097486dbd36852ac702cc79a9d5f7d8d643cea8de4a23f3bf2f600a266e6edb96fd569d92 +AUX kwayland-server-5.24.4-guard-subsurface-parent-access.patch 1324 BLAKE2B 60d40a919cc68c340e7e67e4dc0701fddaa375fde87f4feacc03c97c1a3fb9c7b3b9f981a4363db9759af45e0bc136162cf7490035d79b82b2357a2412547872 SHA512 449f3c5f7ff7826110307f7d5938bf8bdc132d9057f39764d39fedd2487877bf1611502ba983e5723ee94e4cea18732b9162587f6567d042e74becd22de20e4c DIST kwayland-server-5.23.5.tar.xz 217524 BLAKE2B 0bc2f6b3137ba9620e7c37fa381fea3037d06cfabb8921ad5417589e6408ebfc603c6a7d73e550b40d7c00f0d8a97f1d946df730358fd6b1758a29183d3779c3 SHA512 bb5305e823d60612f79863de02337855c96de1ba908bf19ad14d0d67c8a199e9f4215faaf5251974cf1f012337a71c444d831a307d112bf5e7fd5b7156c384cd DIST kwayland-server-5.24.4.tar.xz 221412 BLAKE2B efc970b7f7d99e5195e74a71480039b6a6de15d23f4af9ea776a5b4f45494d8323fee8729e8b2633ed0e25167c99c2a73b63f08ce4e1cdd75d0870258e8d65ea SHA512 9281261b96ceccfb59b1d4eef247572424a196951cf927ae2d65eb6153cb0a9409059e789c7479ef04d8df750c109abfe202395a0a1f49010c40b1190cc2e640 EBUILD kwayland-server-5.23.5.ebuild 902 BLAKE2B 230c8c66a5483186af6e0ae4051b2304080dfdcfb206717f1d189ce2f2ef41b6b615c9ad9d88331b1df763bdb974d0db3eea2c3469f9f89e4ca33d0d0c47eca1 SHA512 5436b3b036a23f002852f407aa2cf412f843da2febd9b9af15deb9f76d3ffb6af05f29f9aa33d783c4e0e730ad808417ef62f356e98c943574bf778920f693cf -EBUILD kwayland-server-5.24.4.ebuild 905 BLAKE2B c895c5797a17978fc3c1e0313e08db1b9628eda574136ae0f0f661ffc612374e31b7cc0307371a0c87e24a4b2380eb87cbc1a23da993b1b74c2cae8e5a533822 SHA512 6b355421aeaf4414658d85078b07a59728398a29308ae9bc87e97dcc6f8f788410f62dbf9a2cf2f5888584d15b4324f48c873fddfbe5e4fe1e9639da3413fd41 +EBUILD kwayland-server-5.24.4-r1.ebuild 1108 BLAKE2B 12fd2d62d2e1e553c55634853c7c08ad0c75f83deeb51fa33e95d065c03478f33dbc27ac159f63641b999264dc8d85398a82302d51e4fcef55219a0b7210e700 SHA512 d1de0f06b1c4b58c69bbcb41b80df1a63e0a74ff66e83bbd3e97d79b2e0436c174b4b1189043a668424a8f0ff84575eae37601021e87b0dc43cbe9feec51242d MISC metadata.xml 318 BLAKE2B 922a5e32e706b2976c5f359a14194d268d3f499398576c80ce5fad8c0fcea0fbf048de4480a80a6a1889c88b8b6c14147654a3ab4d5ffbcc258c2290da63f6d1 SHA512 614cb8dda7ad2088e5d6ef39b449bb4be0ac72cd0231c320188d76d1816dce6490c5114bb4798112c4b11d99d30a9e82ff8fcf08ffa8c049589682a5e38208f6 diff --git a/kde-plasma/kwayland-server/files/kwayland-server-5.24.4-fix-crash-on-screen-setup-change.patch b/kde-plasma/kwayland-server/files/kwayland-server-5.24.4-fix-crash-on-screen-setup-change.patch new file mode 100644 index 000000000000..4ddd9737e759 --- /dev/null +++ b/kde-plasma/kwayland-server/files/kwayland-server-5.24.4-fix-crash-on-screen-setup-change.patch @@ -0,0 +1,109 @@ +From 40364d2ee670a5a74318ef96c643762293ca95f0 Mon Sep 17 00:00:00 2001 +From: Vlad Zahorodnii +Date: Fri, 8 Apr 2022 12:44:33 +0300 +Subject: [PATCH] Simplify code that announces available modes and current mode + +If no mode has the current flag set, the first mode object will be +announced twice. + +There's also no benefit from sending the current mode as last. If the +current mode changes, the compositor will send the current_mode event, +not the mode event. + +BUG: 452318 + + +(cherry picked from commit b40c4e3f4108b9a0be9b4f5d437e72f7c2aa3fea) +--- + src/server/outputdevice_v2_interface.cpp | 35 ++++++++---------------- + 1 file changed, 11 insertions(+), 24 deletions(-) + +diff --git a/src/server/outputdevice_v2_interface.cpp b/src/server/outputdevice_v2_interface.cpp +index 31ab16ca..9093bd2f 100644 +--- a/src/server/outputdevice_v2_interface.cpp ++++ b/src/server/outputdevice_v2_interface.cpp +@@ -31,7 +31,7 @@ public: + + void sendGeometry(Resource *resource); + wl_resource *sendNewMode(Resource *resource, OutputDeviceModeV2Interface *mode); +- void sendCurrentMode(Resource *resource, OutputDeviceModeV2Interface *mode); ++ void sendCurrentMode(Resource *resource); + void sendDone(Resource *resource); + void sendUuid(Resource *resource); + void sendEdid(Resource *resource); +@@ -180,7 +180,7 @@ void OutputDeviceV2Interface::setCurrentMode(OutputDeviceModeV2Interface *mode) + const auto clientResources = d->resourceMap(); + for (auto it = clientResources.begin(); it != clientResources.end(); ++it) { + auto resource = *it; +- d->sendCurrentMode(resource, d->currentMode); ++ d->sendCurrentMode(resource); + d->sendDone(resource); + } + d->updateGeometry(); +@@ -257,22 +257,10 @@ void OutputDeviceV2InterfacePrivate::kde_output_device_v2_bind_resource(Resource + sendName(resource); + sendSerialNumber(resource); + +- auto currentModeIt = modes.end(); +- for (auto it = modes.begin(); it != modes.end(); ++it) { +- auto &mode = *it; +- if (mode->flags().testFlag(OutputDeviceModeV2Interface::ModeFlag::Current)) { +- // needs to be sent as last mode +- currentModeIt = it; +- continue; +- } ++ for (OutputDeviceModeV2Interface *mode : std::as_const(modes)) { + sendNewMode(resource, mode); + } +- +- if (currentModeIt != modes.end()) { +- auto modeResource = sendNewMode(resource, *currentModeIt); +- send_current_mode(resource->handle, modeResource); +- } +- ++ sendCurrentMode(resource); + sendUuid(resource); + sendEdid(resource); + sendEnabled(resource); +@@ -296,9 +284,9 @@ wl_resource *OutputDeviceV2InterfacePrivate::sendNewMode(Resource *resource, Out + return modeResource->handle; + } + +-void OutputDeviceV2InterfacePrivate::sendCurrentMode(Resource *outputResource, OutputDeviceModeV2Interface *mode) ++void OutputDeviceV2InterfacePrivate::sendCurrentMode(Resource *outputResource) + { +- const auto modeResource = OutputDeviceModeV2InterfacePrivate::get(mode)->findResource(outputResource); ++ const auto modeResource = OutputDeviceModeV2InterfacePrivate::get(currentMode)->findResource(outputResource); + send_current_mode(outputResource->handle, modeResource->handle); + } + +@@ -506,12 +494,12 @@ void OutputDeviceV2Interface::setModes(const QListmodes << outputDeviceMode; + outputDeviceMode->setParent(this); + ++ for (auto resource : clientResources) { ++ d->sendNewMode(resource, outputDeviceMode); ++ } ++ + if (outputDeviceMode->flags().testFlag(OutputDeviceModeV2Interface::ModeFlag::Current)) { + d->currentMode = outputDeviceMode; +- } else { +- for (auto resource : clientResources) { +- d->sendNewMode(resource, outputDeviceMode); +- } + } + } + +@@ -520,8 +508,7 @@ void OutputDeviceV2Interface::setModes(const QListsendNewMode(resource, d->currentMode); +- d->sendCurrentMode(resource, d->currentMode); ++ d->sendCurrentMode(resource); + } + + qDeleteAll(oldModes.crbegin(), oldModes.crend()); +-- +GitLab + diff --git a/kde-plasma/kwayland-server/files/kwayland-server-5.24.4-fix-layer-shell-reset.patch b/kde-plasma/kwayland-server/files/kwayland-server-5.24.4-fix-layer-shell-reset.patch new file mode 100644 index 000000000000..a3a0b2067f5d --- /dev/null +++ b/kde-plasma/kwayland-server/files/kwayland-server-5.24.4-fix-layer-shell-reset.patch @@ -0,0 +1,57 @@ +From 97df88c6c8af925382bb1f59b7c6ad75f28142a0 Mon Sep 17 00:00:00 2001 +From: David Edmundson +Date: Tue, 5 Apr 2022 13:26:26 +0100 +Subject: [PATCH] Fix layer shell reset + +In the current form any client committing multiple times without +attaching a buffer would unset the cached state and trigger an error. + +It's legal (though weird) to commit multiple times before attaching a +buffer. + +We should only reset the state if we commit an empty buffer after having +committed an existing buffer. This brings us in line with XdgShell. + + +(cherry picked from commit a5c55b68589a8771cde0bf4ce552702da6fca41c) +--- + src/server/layershell_v1_interface.cpp | 8 +++++++- + 1 file changed, 7 insertions(+), 1 deletion(-) + +diff --git a/src/server/layershell_v1_interface.cpp b/src/server/layershell_v1_interface.cpp +index 17086334..19fcd68e 100644 +--- a/src/server/layershell_v1_interface.cpp ++++ b/src/server/layershell_v1_interface.cpp +@@ -69,6 +69,7 @@ public: + bool isClosed = false; + bool isConfigured = false; + bool isCommitted = false; ++ bool firstBufferAttached = false; + + protected: + void zwlr_layer_surface_v1_destroy_resource(Resource *resource) override; +@@ -290,8 +291,10 @@ void LayerSurfaceV1InterfacePrivate::commit() + return; + } + +- if (!surface->isMapped() && isCommitted) { ++ // detect reset ++ if (!surface->isMapped() && firstBufferAttached) { + isCommitted = false; ++ firstBufferAttached = false; + isConfigured = false; + + current = LayerSurfaceV1State(); +@@ -303,6 +306,9 @@ void LayerSurfaceV1InterfacePrivate::commit() + const LayerSurfaceV1State previous = std::exchange(current, pending); + + isCommitted = true; // Must set the committed state before emitting any signals. ++ if (surface->isMapped()) { ++ firstBufferAttached = true; ++ } + + if (previous.acceptsFocus != current.acceptsFocus) { + Q_EMIT q->acceptsFocusChanged(); +-- +GitLab + diff --git a/kde-plasma/kwayland-server/files/kwayland-server-5.24.4-guard-subsurface-parent-access.patch b/kde-plasma/kwayland-server/files/kwayland-server-5.24.4-guard-subsurface-parent-access.patch new file mode 100644 index 000000000000..e40189ab2744 --- /dev/null +++ b/kde-plasma/kwayland-server/files/kwayland-server-5.24.4-guard-subsurface-parent-access.patch @@ -0,0 +1,44 @@ +From 6dcf73adaafeaa40c05e22df5f1c10af88df362b Mon Sep 17 00:00:00 2001 +From: David Edmundson +Date: Wed, 30 Mar 2022 14:57:12 +0100 +Subject: [PATCH] Guard subsurface parent access. + +Whilst a subsurface must have a parent at the time of creation, the +lifespan is not guaranteed afterwards. + +It's a weird thing for a client to do, but we need to not crash +afterwards. + +If the parent surface is destroyed we should consider the surface +unmapped. + +BUG: 452044 + + +(cherry picked from commit 1d2424a56a13dc55aeab699a38234a7cafa091d8) +--- + src/server/surface_interface.cpp | 8 +++++++- + 1 file changed, 7 insertions(+), 1 deletion(-) + +diff --git a/src/server/surface_interface.cpp b/src/server/surface_interface.cpp +index ef2584f4..8bfac95f 100644 +--- a/src/server/surface_interface.cpp ++++ b/src/server/surface_interface.cpp +@@ -678,7 +678,13 @@ void SurfaceInterfacePrivate::commitFromCache() + + bool SurfaceInterfacePrivate::computeEffectiveMapped() const + { +- return bufferRef && (!subSurface || subSurface->parentSurface()->isMapped()); ++ if (!bufferRef) { ++ return false; ++ } ++ if (subSurface) { ++ return subSurface->parentSurface() && subSurface->parentSurface()->isMapped(); ++ } ++ return true; + } + + void SurfaceInterfacePrivate::updateEffectiveMapped() +-- +GitLab + diff --git a/kde-plasma/kwayland-server/kwayland-server-5.24.4-r1.ebuild b/kde-plasma/kwayland-server/kwayland-server-5.24.4-r1.ebuild new file mode 100644 index 000000000000..033b2c03dc1c --- /dev/null +++ b/kde-plasma/kwayland-server/kwayland-server-5.24.4-r1.ebuild @@ -0,0 +1,48 @@ +# Copyright 1999-2022 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +ECM_QTHELP="true" +ECM_TEST="true" +KFMIN=5.90.0 +PVCUT=$(ver_cut 1-2) +QTMIN=5.15.2 +inherit ecm kde.org + +DESCRIPTION="Wayland Server Components built on KDE Frameworks" +HOMEPAGE="https://invent.kde.org/plasma/kwayland-server" + +LICENSE="LGPL-2.1" +SLOT="5" +KEYWORDS="~amd64 ~arm ~arm64 ~ppc64 ~riscv ~x86" +IUSE="" + +# All failing, I guess we need a virtual wayland server +RESTRICT="test" + +RDEPEND=" + >=dev-libs/wayland-1.19.0 + >=dev-qt/qtconcurrent-${QTMIN}:5 + >=dev-qt/qtgui-${QTMIN}:5[egl] + >=dev-qt/qtwayland-${QTMIN}:5 + >=kde-frameworks/kwayland-${KFMIN}:5 + media-libs/libglvnd +" +DEPEND="${RDEPEND} + >=dev-libs/plasma-wayland-protocols-1.6.0 + >=dev-libs/wayland-protocols-1.24 +" +BDEPEND=" + || ( + >=dev-qt/qtwaylandscanner-${QTMIN}:5 +