summaryrefslogtreecommitdiff
path: root/kde-plasma
diff options
context:
space:
mode:
authorV3n3RiX <venerix@koprulu.sector>2022-04-16 13:07:24 +0100
committerV3n3RiX <venerix@koprulu.sector>2022-04-16 13:07:24 +0100
commit0c100b7dd2b30e75b799d806df4ef899fd98e1ea (patch)
tree464c922e949c7e4d5d891fb2cdda5daee5612537 /kde-plasma
parente68d405c5d712af4387159df07e226217bdda049 (diff)
gentoo resync : 16.04.2022
Diffstat (limited to 'kde-plasma')
-rw-r--r--kde-plasma/Manifest.gzbin9094 -> 9098 bytes
-rw-r--r--kde-plasma/kwayland-server/Manifest5
-rw-r--r--kde-plasma/kwayland-server/files/kwayland-server-5.24.4-fix-crash-on-screen-setup-change.patch109
-rw-r--r--kde-plasma/kwayland-server/files/kwayland-server-5.24.4-fix-layer-shell-reset.patch57
-rw-r--r--kde-plasma/kwayland-server/files/kwayland-server-5.24.4-guard-subsurface-parent-access.patch44
-rw-r--r--kde-plasma/kwayland-server/kwayland-server-5.24.4-r1.ebuild (renamed from kde-plasma/kwayland-server/kwayland-server-5.24.4.ebuild)6
6 files changed, 220 insertions, 1 deletions
diff --git a/kde-plasma/Manifest.gz b/kde-plasma/Manifest.gz
index e1dd9bd5f811..a2959fdd5fb2 100644
--- a/kde-plasma/Manifest.gz
+++ b/kde-plasma/Manifest.gz
Binary files 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 <vlad.zahorodnii@kde.org>
+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 QList<OutputDeviceModeV2Interface *
+ d->modes << 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 QList<OutputDeviceModeV2Interface *
+ }
+
+ for (auto resource : clientResources) {
+- d->sendNewMode(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 <kde@davidedmundson.co.uk>
+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 <kde@davidedmundson.co.uk>
+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.ebuild b/kde-plasma/kwayland-server/kwayland-server-5.24.4-r1.ebuild
index 01f58af88ddf..033b2c03dc1c 100644
--- a/kde-plasma/kwayland-server/kwayland-server-5.24.4.ebuild
+++ b/kde-plasma/kwayland-server/kwayland-server-5.24.4-r1.ebuild
@@ -40,3 +40,9 @@ BDEPEND="
)
dev-util/wayland-scanner
"
+
+PATCHES=(
+ "${FILESDIR}"/${P}-fix-layer-shell-reset.patch
+ "${FILESDIR}"/${P}-guard-subsurface-parent-access.patch # bug 452044
+ "${FILESDIR}"/${P}-fix-crash-on-screen-setup-change.patch # bug 452318
+)