diff options
Diffstat (limited to 'kde-plasma/kwin')
20 files changed, 616 insertions, 611 deletions
diff --git a/kde-plasma/kwin/Manifest b/kde-plasma/kwin/Manifest index 777a8684cab2..f65b72a3bb64 100644 --- a/kde-plasma/kwin/Manifest +++ b/kde-plasma/kwin/Manifest @@ -1,15 +1,13 @@ AUX kwin-5.21.80-gstreamer-optional.patch 971 BLAKE2B f31d18f865a9108ff1bfb711ea95a281295487090be982719a8623faeb5fbc645b8c55468fdfa8482fc052b1546bb2445e4b150c10b239e1ca149f1402b97bff SHA512 cf08106ca39cb455044c47da104b66eb470b72573803a3a1fd6be0eaa58f80b9b7a163898a3234f28552214a1aa3d651f633490377bf87ec4d883878b115b7bc -AUX kwin-5.24.4-backends-drm-dont-perm-disable-vrr.patch 1143 BLAKE2B cf2957ffe9739826f31b4d9cb3657d4fa3eded789ba1bc3125c54a5d8aa6d32438c85d7305b64cbcc0e5e05220725001e5af3afa892ec06d6622cdca35b3de38 SHA512 fef2abe755ecf613df95fa85c3e12a083afa04d56262564c90c4a9a6f088f32986056bf9b4b85ff9ecc407c223d4f1f480c84394321a087048f58c72a71a557b -AUX kwin-5.24.4-backends-drm-fetch-immutable-blobs.patch 8361 BLAKE2B bbf3478d265290fd50597e063205404551243e30f157fa58a448e1b6b644f39c55a7b526d125fc399487e9cc36795e27e9ba793d1cd5ba19899a9eb56c1b0fd3 SHA512 28d981819f0d81e6498ad8c92cd9bd96808ab5b11cba946cef5318da273b4f107e0fcdeffc80bb46e5865d69a8bf50eb5febc3d2eb1ec3ac716495af3a030091 -AUX kwin-5.24.4-dont-send-geom-to-text-input.patch 1119 BLAKE2B ff8b13dfca5be2d0a3603599e80ed3b666ea61bfaddbcc19af57b70a82077d41736e0a3919a9c386e8d76233abdf6a9ddbc87e1a46a564c07dff98a2c60ee4bf SHA512 9388a6dac9c9c2a35c9eb6093571ff0f275a1720ac9a703c1dc134f06dfb7be4e0806ef26765b7cd3be4d53fef342345f2bba0980bfebf92fe8c5368c915d20a -AUX kwin-5.24.4-dont-use-xcb-in-wayland.patch 1593 BLAKE2B ddee202fb073af4331c77ea1013cb3b779a4ce8c6d5a6adeae9035edf051b1b6cce708ac64719e6d04c0cfa3a7e76599e233714c7137f05d8c9480293b95d6e0 SHA512 62a99855da7ec06ac35bd790d5d5bcc40c7e91ef5c66d99dae8bf8015742b9c9de60a52f565a0872cfa3e89ccfa26d2a62a223ec1d07fa97983e1ef508937b93 -AUX kwin-5.24.4-fix-current-VD-always-added.patch 1904 BLAKE2B bc8fbc8548e9e379281736ae2e388f81e11a61a7e881fd3b0bc87781cbd0d2dac15baa62a8a0ed501a3b92468f4bb729ce582b07953625e607bea1317ffdb17f SHA512 96ab4ebd818dc89055a66327c63cc8beca46d0797911d59c03125bfa0a07f602cfcefbf76a34648050c44e054dcc2b6f0c01f4531155438e504096436f806695 -AUX kwin-5.24.4-fix-unlocking-wayland-sessions.patch 1353 BLAKE2B 23dc90586cb7743a5009f5d4c7ffd4473a1df0ba62da8e55c3eb883dfc609b4d58483397b5f529e50e7beea4244416a32cf8bd2bf4220da1c9a1939b06385dbd SHA512 62e57a20a7de142f8ac8c4007a92f4cfa5fdcef7c06e5b2a706b610aa91d1268b9d88f725166477ba5438651787db37546b173e3b18fbe28f2dd2480e3ce564a -AUX kwin-5.24.4-waylandserver-lockScreenShown.patch 3721 BLAKE2B 70b8cd4bf8a571190c51e6b47427d875319726e1459f0084349d66adb77691b0cd6612192d8103e18e1b6f17335ac8e787c2a029703a44d5899c84d377914ad4 SHA512 5e30c5bfdc2fad74944f87d1e09d1a8a2bb4a64b31b1e8920814e3c680b6d5372b14f6abc356bbcbab77d8aaa6a4838549c881c7000e2b856138bf1fa765ab1f -AUX kwin-5.24.4-waylandserver-move-LockScreenPresentationWatcher.patch 1306 BLAKE2B 5511bb0c43c60df298cefe4ed53b76c906fb9935054cfbdc4c628425d3111e727d85b16b222e4d4b8a55908aec898536696594d929b56db23d8fe4cd1bcca82b SHA512 e672bf722b19e339b159710d3775f22f3d081c96b80a30d0f58d1bb078ddd4279aa402e1111b0612cbbeed36907d021755bd80fe7753aff1a67276681e390ea5 -AUX kwin-5.24.4-xdgactivation-demand-attention.patch 1235 BLAKE2B 49b7bca6c6009ffd1c9d94de6caab874f45a54f846f813c659bb63a3775aea2f5280f0f2728fcdd4e8d90a28c49b46dedbb5289e3d41c110a7ccbb480f465076 SHA512 35ecb28484b0f07b026d8875b4c5cabfb05f563259920c76d6bb1c0cd2339891540c6aab8f763e034d52c90e45bafb5c607fd18e602791d75f9e92fef9162a00 -DIST kwin-5.24.4.tar.xz 6448844 BLAKE2B 3e58ae22d2ff254f4c08a8c6662702e5dae97dd207ca8d1d51cc203826d4b68a5eecffea69cd6eb4de5894e09e73340cda540e41db3753873cab72a76936e6d4 SHA512 2e1389a68e373791bd397294c834fb1cdbab24f32253eeaf505bb1878b8a8a5cd02d1250cae181c00dc73d6a524ff44cd1fbf2e101f13adf915f30f15c738df3 +AUX kwin-5.24.5-effects-overview-hide-panels.patch 2059 BLAKE2B 1f5477757d7c56e2c862d35c0052c53ac6295ba17b0a16a20bf15f80df09756011429d3ffb589dc8a367e468b55672e2de42e79d5b6c4445d7835d271ddbd483 SHA512 d5410cde9f264bb3a2fc5cc5583c9655afa51af42eec056ff04adcd9a2102be9972052f9ce5a93709adfe8cfec9079f28c9e51cf1bd9c1fc322738e8fc0c634d +AUX kwin-5.24.5-fix-multi-gpu-double-copy.patch 1762 BLAKE2B 45e37e6f6b7a134284d5c4c63ba63f2657be6921e37ff7b49d52c09f87174ff7dd0e0860dbc487d217ea236f4622a15e350684919b7efb9728cb0b9a7ddf0622 SHA512 b3954c5c6a64c7c3e3a5ee78d80b6c7b0a053ab91686363035e4e730d29449c98d2beb4fc23aeac2e678e09de0a3771ed72da7eeec2f2f7bfe9354fc1a8157ce +AUX kwin-5.24.5-fix-nvidia-render-glitches.patch 1674 BLAKE2B ef1db8231b6931857c53d24b21a6dc0fb54257d62c171a1717c65569fc93f788479b3389fdb3d455b0e3e22baae899e6f8c80a44a4d4969cf05e831c286aa176 SHA512 f4905d81d03596b9d8a56d5ed580c6f1291f160ab39b20fbf06c70a2ac4d2de08a137e5cb13bf2fd4532adbbe89fd906a18dc0c51ba52f51a8b5c68186b08f29 +AUX kwin-5.24.5-fix-plasmashell-crash-1.patch 11170 BLAKE2B 0e7877953d8a9c35c4d618f7ac95fae1222516edae8fb6ba644d28c495621189bbc145cd8410f3e70852ce342f72592b6b2c633d6fc38196472921c14376d967 SHA512 71f9d67fa2d2200b7b0f9a4d130fd9518032b5bd79076a3d47a1a1e77a3bbca49113880ce7ef6f281d86a04ba568f9e26f7d30f7402343308a7f6748f9efa7ae +AUX kwin-5.24.5-fix-plasmashell-crash-2.patch 982 BLAKE2B dbb3bc31d65384ec14164f7af58254482e0c0bcbb31b06386ea1981bb886a220cf0b727aa7b2b963eaa3c44454344801b0c7fcdce7929c2ffddc6bee6e30cdca SHA512 604ccaab296defceb37ed0bffb5ba6e2c40563bbcf8b4fb2d899c0669de5d180a59ca73fb16f8a2e7939f00ba54c2f4daa96d33b99a4543b88957926d574a3fd +AUX kwin-5.24.5-tabbox-dont-dismiss-popups.patch 1111 BLAKE2B 017199e01456961ece0335f54d42e18162c703868e7a7f95e84ea1440014ceaaed798e7668dbba4e7392492d82171e29d5453a554f669a789eb8b52a15f47c88 SHA512 538b79201b70eaf162ec75a37dcc40c264b5f1021c6a940ab67274c9e33566962053867f11b45f309d1dfe35d30573139419f666333e06bfd4a5d1c08ca97e6a +AUX kwin-5.24.5-update-device-outputName.patch 959 BLAKE2B c39d0a94210ea82fa4c7292cb29d5fd93aa793d74e3743f23b3a86462a898594e17798a7beb272cd8462e557875560a05ae642463cee78d7d2a35ee0cd11e576 SHA512 fc4ec093ea882b9d73ef11024d4279d566faeee1979a7fb0f8f29c5e89c658f32b89a3f40faee286c428ac95297dde684ceefcc5e0d3276cdd8d512084f02a19 DIST kwin-5.24.5.tar.xz 6453932 BLAKE2B cd042dd8c9168e11bc39d15969c57a97fd5c47b1af3e3a6235cabad166c4925c51541d52f7bf96f3132b3ecfeb91547845d6af3893ab5f31b41df4a926e83993 SHA512 4fad8b39a588a44f89e2640358d8e563047fa889a9bdaf246c1c87d320aa5f5b9d3d6bef702314fb06d2bfe16d0445efe736de60d94b4409f9b5efcdac48d089 -EBUILD kwin-5.24.4-r1.ebuild 4603 BLAKE2B 25641eac46f94b51f9f7e5219cdcc0318f4c2af271ff1c6931cca5d6a420ad6bea85008ecff4004710e7ba4adcfe32f15456f68ee7d45aaa25089f92da8c2676 SHA512 e2581f0c225ea409a480148c4e083b7c6ca849de78a98cab104844f0fe7b73562e4d53a69b349094bc53303c7207d2115693670a6bc12c4a8d94fbdfff055749 -EBUILD kwin-5.24.5.ebuild 3999 BLAKE2B e8ce73997e57a5950ea0845dfd9483bdeccb4f3fe579527fc71fcf1f20ffadd9c0b7e3a3c096de5d7a14a7558a28d798a7a154da046525b70bbc3ec1864e7ff9 SHA512 59ca2792f3da48edf46acf1183fae9f69bd9ec344631e264cd8f761cd74257a195eaa29abc48e43b8e41b6272c9f01404fc88a87aa3b61acd11f52ca89ff5879 -MISC metadata.xml 512 BLAKE2B 3e81119dbc98181573e294885c52623e4799b55c238ca9513e33547e718ec0f1762371d6391a4291c54159f31cd510cd8d9c192aa16ef0fc16672a3d0ef25dbe SHA512 a9a28562cb0f25abf24cb89c48fea816bfaf701c889ee08e66b80b3afe434af68e5ddb0fa21d313d68418c81a1e73eefcabf75e8e3878f55a1292039dde6ecdb +DIST kwin-5.25.2.tar.xz 6622476 BLAKE2B ee659cce95cc2fea3d9b0a2ce8669c107cac60c1844f3c569e002782ea19bd980a999076ad84231215712a8e25a6fa91cf4b979c88b30d09e9c5437a67c39430 SHA512 1a93bcd5d0a6f70aa67e1bb940fa505ffa2c946280e772a1fd061dd3acfaa84a851302cd6c96d30abd10d01dbdc731d884f3a79e590b0c7ff26a44b019cc7ec9 +EBUILD kwin-5.24.5-r2.ebuild 4421 BLAKE2B f9a50bba822c9da8867b4a5cb3fab9c9bab2ab75d93f20f3cfd467672c425fcb6cc9da401f49c444726f7bb3fed7de636c3bc696fffa949c02c133125a4f4311 SHA512 32eec4d57c7525e27ef2c1cd5b0aed37a6eafaf459146ed6170763773f31805a89b9b7d7d8cc9e22230236c9936a21624cf089a0b0f9923c148a73f16cc8359f +EBUILD kwin-5.25.2.ebuild 4174 BLAKE2B e898e6b3238aff6de16730b770c318f56c88350d2a43a02d197f36f20130762d75ce5542c2527376b437c7f169cc77c915ab05b0a8d372d5507c738dff1a7555 SHA512 44c02ac15741db2710bb0c70ebeae028c92dbaddf0e0d3dee4f6b3d46ec476db21368a19443d08f73f7423a9baf69e9af87756c249cc9b5e5f497b0e5a6ade83 +MISC metadata.xml 601 BLAKE2B 7c0bd77ee6f0b2622a67856a1da9257577cb55f5675e065f0e00dbb22d77d639ba7efdb9af06c6676152f168f26f854dc9dfe1107897ed87f8eafa73e2bdf169 SHA512 ee62735bef06e510b0f4961465bc86aff1cece881b7370cbe3b10bcf0457a4ac2fae8ff41953787ad47fef1917dbf1c2d568eec1cdff3bc0f09f60955cfca4d2 diff --git a/kde-plasma/kwin/files/kwin-5.24.4-backends-drm-dont-perm-disable-vrr.patch b/kde-plasma/kwin/files/kwin-5.24.4-backends-drm-dont-perm-disable-vrr.patch deleted file mode 100644 index 38d4771c2345..000000000000 --- a/kde-plasma/kwin/files/kwin-5.24.4-backends-drm-dont-perm-disable-vrr.patch +++ /dev/null @@ -1,32 +0,0 @@ -From a5404234dbd26e170acb97789599fbcd705cf6cb Mon Sep 17 00:00:00 2001 -From: Xaver Hugl <xaver.hugl@gmail.com> -Date: Fri, 8 Apr 2022 17:47:09 +0200 -Subject: [PATCH] backends/drm: don't permanently disable VRR when the test - commit fails - -In 5.24, the same code path is used for testing direct scanout, so that -causes false negatives. Generally though, the user setting shouldn't be -touched, it's not really proper feedback for the driver or KWin having -problems. - - -(cherry picked from commit 2ef6215a517e4220f147f5327e7ecdad02762b64) ---- - src/backends/drm/drm_output.cpp | 1 - - 1 file changed, 1 deletion(-) - -diff --git a/src/backends/drm/drm_output.cpp b/src/backends/drm/drm_output.cpp -index bd08631cf7..048803883b 100644 ---- a/src/backends/drm/drm_output.cpp -+++ b/src/backends/drm/drm_output.cpp -@@ -337,7 +337,6 @@ bool DrmOutput::present(const QSharedPointer<DrmBuffer> &buffer, QRegion damaged - m_pipeline->applyPendingChanges(); - } else { - m_pipeline->revertPendingChanges(); -- setVrrPolicy(RenderLoop::VrrPolicy::Never); - } - } - if (m_pipeline->present(buffer)) { --- -GitLab - diff --git a/kde-plasma/kwin/files/kwin-5.24.4-backends-drm-fetch-immutable-blobs.patch b/kde-plasma/kwin/files/kwin-5.24.4-backends-drm-fetch-immutable-blobs.patch deleted file mode 100644 index 16c7756d33e2..000000000000 --- a/kde-plasma/kwin/files/kwin-5.24.4-backends-drm-fetch-immutable-blobs.patch +++ /dev/null @@ -1,214 +0,0 @@ -From 82c2324b5675ea2d5e3b962f270bda1d186e7326 Mon Sep 17 00:00:00 2001 -From: Xaver Hugl <xaver.hugl@gmail.com> -Date: Mon, 4 Apr 2022 20:19:05 +0200 -Subject: [PATCH] backends/drm: fetch immutable blobs in DrmProperty - -If the blob is fetched while there is no kernel-visible reference to it, -the driver may re-use the blob ID. When DrmProperty is created or updated, -KWin holds a reference on the blob via drmModeObjectProperties, so this -should prevent any possible issues. - -CCBUG: 449285 ---- - src/backends/drm/drm_object_connector.cpp | 13 +++----- - src/backends/drm/drm_object_plane.cpp | 39 +++++++++++------------ - src/backends/drm/drm_property.cpp | 27 +++++++++++++++- - src/backends/drm/drm_property.h | 7 +++- - 4 files changed, 54 insertions(+), 32 deletions(-) - -diff --git a/src/backends/drm/drm_object_connector.cpp b/src/backends/drm/drm_object_connector.cpp -index a0045290df..0cdbd70b4f 100644 ---- a/src/backends/drm/drm_object_connector.cpp -+++ b/src/backends/drm/drm_object_connector.cpp -@@ -337,16 +337,11 @@ bool DrmConnector::updateProperties() - } - - // parse edid -- auto edidProp = getProp(PropertyIndex::Edid); -- if (edidProp) { -- DrmScopedPointer<drmModePropertyBlobRes> blob(drmModeGetPropertyBlob(gpu()->fd(), edidProp->current())); -- if (blob && blob->data) { -- m_edid = Edid(blob->data, blob->length); -- if (!m_edid.isValid()) { -- qCWarning(KWIN_DRM) << "Couldn't parse EDID for connector" << this; -- } -+ if (const auto edidProp = getProp(PropertyIndex::Edid); edidProp && edidProp->immutableBlob()) { -+ m_edid = Edid(edidProp->immutableBlob()->data, edidProp->immutableBlob()->length); -+ if (!m_edid.isValid()) { -+ qCWarning(KWIN_DRM) << "Couldn't parse EDID for connector" << this; - } -- deleteProp(PropertyIndex::Edid); - } else { - qCDebug(KWIN_DRM) << "Could not find edid for connector" << this; - } -diff --git a/src/backends/drm/drm_object_plane.cpp b/src/backends/drm/drm_object_plane.cpp -index 6967fdd50d..c4dcca96d4 100644 ---- a/src/backends/drm/drm_object_plane.cpp -+++ b/src/backends/drm/drm_object_plane.cpp -@@ -73,29 +73,26 @@ bool DrmPlane::init() - checkSupport(5, Transformation::ReflectY); - - // read formats from blob if available and if modifiers are supported, and from the plane object if not -- if (auto formatProp = getProp(PropertyIndex::In_Formats); formatProp && gpu()->addFB2ModifiersSupported()) { -- DrmScopedPointer<drmModePropertyBlobRes> propertyBlob(drmModeGetPropertyBlob(gpu()->fd(), formatProp->current())); -- if (propertyBlob && propertyBlob->data) { -- auto blob = static_cast<drm_format_modifier_blob*>(propertyBlob->data); -- auto modifiers = reinterpret_cast<drm_format_modifier*>(reinterpret_cast<uint8_t*>(blob) + blob->modifiers_offset); -- uint32_t *formatarr = reinterpret_cast<uint32_t*>(reinterpret_cast<uint8_t*>(blob) + blob->formats_offset); -- -- for (uint32_t f = 0; f < blob->count_formats; f++) { -- auto format = formatarr[f]; -- QVector<uint64_t> mods; -- for (uint32_t m = 0; m < blob->count_modifiers; m++) { -- auto modifier = &modifiers[m]; -- // The modifier advertisement blob is partitioned into groups of 64 formats -- if (m < modifier->offset || m > modifier->offset + 63) { -- continue; -- } -- if (!(modifier->formats & (1 << (f - modifier->offset)))) { -- continue; -- } -- mods << modifier->modifier; -+ if (const auto formatProp = getProp(PropertyIndex::In_Formats); formatProp && formatProp->immutableBlob() && gpu()->addFB2ModifiersSupported()) { -+ auto blob = static_cast<drm_format_modifier_blob *>(formatProp->immutableBlob()->data); -+ auto modifiers = reinterpret_cast<drm_format_modifier *>(reinterpret_cast<uint8_t *>(blob) + blob->modifiers_offset); -+ uint32_t *formatarr = reinterpret_cast<uint32_t *>(reinterpret_cast<uint8_t *>(blob) + blob->formats_offset); -+ -+ for (uint32_t f = 0; f < blob->count_formats; f++) { -+ auto format = formatarr[f]; -+ QVector<uint64_t> mods; -+ for (uint32_t m = 0; m < blob->count_modifiers; m++) { -+ auto modifier = &modifiers[m]; -+ // The modifier advertisement blob is partitioned into groups of 64 formats -+ if (m < modifier->offset || m > modifier->offset + 63) { -+ continue; - } -- m_supportedFormats.insert(format, mods); -+ if (!(modifier->formats & (1 << (f - modifier->offset)))) { -+ continue; -+ } -+ mods << modifier->modifier; - } -+ m_supportedFormats.insert(format, mods); - } - } else { - for (uint32_t i = 0; i < p->count_formats; i++) { -diff --git a/src/backends/drm/drm_property.cpp b/src/backends/drm/drm_property.cpp -index 28af8ec07f..8ab0dc0e5a 100644 ---- a/src/backends/drm/drm_property.cpp -+++ b/src/backends/drm/drm_property.cpp -@@ -24,6 +24,7 @@ DrmProperty::DrmProperty(DrmObject *obj, drmModePropertyRes *prop, uint64_t val, - , m_next(val) - , m_current(val) - , m_immutable(prop->flags & DRM_MODE_PROP_IMMUTABLE) -+ , m_isBlob(prop->flags & DRM_MODE_PROP_BLOB) - , m_obj(obj) - { - if (!enumNames.isEmpty()) { -@@ -35,6 +36,7 @@ DrmProperty::DrmProperty(DrmObject *obj, drmModePropertyRes *prop, uint64_t val, - m_minValue = prop->values[0]; - m_maxValue = prop->values[1]; - } -+ updateBlob(); - } - - DrmProperty::~DrmProperty() = default; -@@ -110,7 +112,10 @@ bool DrmProperty::needsCommit() const - - void DrmProperty::setCurrent(uint64_t value) - { -- m_current = value; -+ if (m_current != value) { -+ updateBlob(); -+ m_current = value; -+ } - } - - uint64_t DrmProperty::current() const -@@ -122,10 +127,12 @@ QVector<QByteArray> DrmProperty::enumNames() const - { - return m_enumNames; - } -+ - bool DrmProperty::hasEnum(uint64_t value) const - { - return m_enumMap.contains(value); - } -+ - bool DrmProperty::hasAllEnums() const - { - return m_enumMap.count() == m_enumNames.count(); -@@ -166,4 +173,22 @@ uint64_t DrmProperty::maxValue() const - return m_maxValue; - } - -+void DrmProperty::updateBlob() -+{ -+ if (m_immutable && m_isBlob) { -+ if (m_current != 0) { -+ m_immutableBlob.reset(drmModeGetPropertyBlob(m_obj->gpu()->fd(), m_current)); -+ if (m_immutableBlob && (!m_immutableBlob->data || !m_immutableBlob->length)) { -+ m_immutableBlob.reset(); -+ } -+ } else { -+ m_immutableBlob.reset(); -+ } -+ } -+} -+ -+drmModePropertyBlobRes *DrmProperty::immutableBlob() const -+{ -+ return m_immutableBlob.get(); -+} - } -diff --git a/src/backends/drm/drm_property.h b/src/backends/drm/drm_property.h -index 48bdeafdc2..1ae547f41e 100644 ---- a/src/backends/drm/drm_property.h -+++ b/src/backends/drm/drm_property.h -@@ -9,9 +9,9 @@ - */ - - #pragma once -+#include "drm_pointer.h" - - #include <xf86drmMode.h> -- - #include <QVector> - #include <QMap> - #include <QByteArray> -@@ -59,6 +59,7 @@ public: - - void setCurrent(uint64_t value); - uint64_t current() const; -+ drmModePropertyBlobRes *immutableBlob() const; - - uint64_t minValue() const; - uint64_t maxValue() const; -@@ -78,6 +79,8 @@ public: - } - - private: -+ void updateBlob(); -+ - uint32_t m_propId = 0; - QByteArray m_propName; - -@@ -89,6 +92,7 @@ private: - uint64_t m_next = 0; - // the value currently set for or by the kernel - uint64_t m_current = 0; -+ DrmScopedPointer<drmModePropertyBlobRes> m_immutableBlob; - - uint64_t m_minValue = -1; - uint64_t m_maxValue = -1; -@@ -96,6 +100,7 @@ private: - QMap<uint32_t, uint64_t> m_enumMap; - QVector<QByteArray> m_enumNames; - const bool m_immutable; -+ const bool m_isBlob; - bool m_legacy = false; - const DrmObject *m_obj; - }; --- -GitLab - diff --git a/kde-plasma/kwin/files/kwin-5.24.4-dont-send-geom-to-text-input.patch b/kde-plasma/kwin/files/kwin-5.24.4-dont-send-geom-to-text-input.patch deleted file mode 100644 index acd7bf4149ab..000000000000 --- a/kde-plasma/kwin/files/kwin-5.24.4-dont-send-geom-to-text-input.patch +++ /dev/null @@ -1,26 +0,0 @@ -From a35e3075a7aa4616c8930ccd3869dc4cca5d287e Mon Sep 17 00:00:00 2001 -From: Weng Xuetian <wengxt@gmail.com> -Date: Sat, 9 Apr 2022 07:25:44 -0700 -Subject: [PATCH] Do not send overlay geometry to text input. - -(cherry picked from commit 374e94918238f3ddb9d00c542f281d3d8a309efb) ---- - src/inputmethod.cpp | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/src/inputmethod.cpp b/src/inputmethod.cpp -index e7951d9580..5b8e54efbc 100644 ---- a/src/inputmethod.cpp -+++ b/src/inputmethod.cpp -@@ -615,7 +615,7 @@ void InputMethod::updateInputPanelState() - const bool bottomKeyboard = m_inputClient && m_inputClient->mode() != InputPanelV1Client::Overlay && m_inputClient->isShown(); - m_trackedClient->setVirtualKeyboardGeometry(bottomKeyboard ? m_inputClient->inputGeometry() : QRect()); - -- if (m_inputClient) { -+ if (m_inputClient && m_inputClient->mode() != InputPanelV1Client::Overlay) { - overlap = m_trackedClient->frameGeometry() & m_inputClient->inputGeometry(); - overlap.moveTo(m_trackedClient->mapToLocal(overlap.topLeft())); - } --- -GitLab - diff --git a/kde-plasma/kwin/files/kwin-5.24.4-dont-use-xcb-in-wayland.patch b/kde-plasma/kwin/files/kwin-5.24.4-dont-use-xcb-in-wayland.patch deleted file mode 100644 index 667b91b8dc5c..000000000000 --- a/kde-plasma/kwin/files/kwin-5.24.4-dont-use-xcb-in-wayland.patch +++ /dev/null @@ -1,41 +0,0 @@ -From 7a26f93cb579cf6b1cbc1e32790f93be70013157 Mon Sep 17 00:00:00 2001 -From: Xaver Hugl <xaver.hugl@gmail.com> -Date: Tue, 12 Apr 2022 15:45:52 +0200 -Subject: [PATCH] effects/kscreen: don't use xcb on Wayland - -BUG: 450564 -FIXED-IN: 5.24.5 -(cherry picked from commit db3f27336f2172fd70be3411874d9bbeb3db6a24) ---- - src/effects/kscreen/kscreen.cpp | 12 ++++++------ - 1 file changed, 6 insertions(+), 6 deletions(-) - -diff --git a/src/effects/kscreen/kscreen.cpp b/src/effects/kscreen/kscreen.cpp -index 9484399756..0673915aad 100644 ---- a/src/effects/kscreen/kscreen.cpp -+++ b/src/effects/kscreen/kscreen.cpp -@@ -44,15 +44,15 @@ namespace KWin - - KscreenEffect::KscreenEffect() - : Effect() -- , m_atom(effects->announceSupportProperty("_KDE_KWIN_KSCREEN_SUPPORT", this)) -+ , m_atom(effects->waylandDisplay() ? XCB_ATOM_NONE : effects->announceSupportProperty("_KDE_KWIN_KSCREEN_SUPPORT", this)) - { - initConfig<KscreenConfig>(); -- connect(effects, &EffectsHandler::propertyNotify, this, &KscreenEffect::propertyNotify); -- connect(effects, &EffectsHandler::xcbConnectionChanged, this, -- [this] { -+ if (!effects->waylandDisplay()) { -+ connect(effects, &EffectsHandler::propertyNotify, this, &KscreenEffect::propertyNotify); -+ connect(effects, &EffectsHandler::xcbConnectionChanged, this, [this]() { - m_atom = effects->announceSupportProperty(QByteArrayLiteral("_KDE_KWIN_KSCREEN_SUPPORT"), this); -- } -- ); -+ }); -+ } - reconfigure(ReconfigureAll); - - const QList<EffectScreen *> screens = effects->screens(); --- -GitLab - diff --git a/kde-plasma/kwin/files/kwin-5.24.4-fix-current-VD-always-added.patch b/kde-plasma/kwin/files/kwin-5.24.4-fix-current-VD-always-added.patch deleted file mode 100644 index 195d33b1f3a2..000000000000 --- a/kde-plasma/kwin/files/kwin-5.24.4-fix-current-VD-always-added.patch +++ /dev/null @@ -1,50 +0,0 @@ -From c1d7919ad7cc8a7e55f5b93ec84de63547bc53b9 Mon Sep 17 00:00:00 2001 -From: Ismael Asensio <isma.af@gmail.com> -Date: Fri, 8 Apr 2022 22:53:08 +0200 -Subject: [PATCH] AbstractClient: Fix the current VD being always added to the - plasma interface - -When setting-up the plasma window interface we need to call -`setOnAllDesktops()` after the actual virtual desktops have -been set. - -Otherwise, the current desktop would be always added to the -interface (as if the user were unsetting the "onAllDesktops" -flag) and the plasma interface and KWin can get un-synced, -specially if there are specific window rules. - -BUG: 452171 -FIXED-IN: 5.24.5 - - -(cherry picked from commit 4c8711f121430caa658f9848070e4e25c4a12208) ---- - src/abstract_client.cpp | 5 ++++- - 1 file changed, 4 insertions(+), 1 deletion(-) - -diff --git a/src/abstract_client.cpp b/src/abstract_client.cpp -index 7e8a7eec04..0714b9ac3f 100644 ---- a/src/abstract_client.cpp -+++ b/src/abstract_client.cpp -@@ -1488,7 +1488,6 @@ void AbstractClient::setupWindowManagementInterface() - w->setKeepBelow(keepBelow()); - w->setMaximized(maximizeMode() == KWin::MaximizeFull); - w->setMinimized(isMinimized()); -- w->setOnAllDesktops(isOnAllDesktops()); - w->setDemandsAttention(isDemandingAttention()); - w->setCloseable(isCloseable()); - w->setMaximizeable(isMaximizable()); -@@ -1620,6 +1619,10 @@ void AbstractClient::setupWindowManagementInterface() - for (const auto vd : qAsConst(m_desktops)) { - w->addPlasmaVirtualDesktop(vd->id()); - } -+ // We need to set `OnAllDesktops` after the actual VD list has been added. -+ // Otherwise it will unconditionally add the current desktop to the interface -+ // which may not be the case, for example, when using rules -+ w->setOnAllDesktops(isOnAllDesktops()); - - //Plasma Virtual desktop management - //show/hide when the window enters/exits from desktop --- -GitLab - diff --git a/kde-plasma/kwin/files/kwin-5.24.4-fix-unlocking-wayland-sessions.patch b/kde-plasma/kwin/files/kwin-5.24.4-fix-unlocking-wayland-sessions.patch deleted file mode 100644 index 9e9a4dabc998..000000000000 --- a/kde-plasma/kwin/files/kwin-5.24.4-fix-unlocking-wayland-sessions.patch +++ /dev/null @@ -1,44 +0,0 @@ -From ee625b2d8acad2ba81693107740a12d8a03863c0 Mon Sep 17 00:00:00 2001 -From: Aleix Pol <aleixpol@kde.org> -Date: Mon, 28 Mar 2022 03:40:12 +0200 -Subject: [PATCH] Fix unlocking wayland sessions - -We were never issuing a repaint which confused thoroughly the -compositor. - -BUG: 447705 ---- - src/wayland_server.cpp | 3 +++ - 1 file changed, 3 insertions(+) - -diff --git a/src/wayland_server.cpp b/src/wayland_server.cpp -index eb3600f824..9e60787465 100644 ---- a/src/wayland_server.cpp -+++ b/src/wayland_server.cpp -@@ -15,6 +15,7 @@ - #include "inputpanelv1integration.h" - #include "keyboard_input.h" - #include "screens.h" -+#include "scene.h" - #include "layershellv1integration.h" - #include "main.h" - #include "xdgshellintegration.h" -@@ -610,6 +611,7 @@ void WaylandServer::initScreenLocker() - connect(seat, &KWaylandServer::SeatInterface::timestampChanged, - screenLockerApp, &ScreenLocker::KSldApp::userActivity); - } -+ Compositor::self()->scene()->addRepaintFull(); - } - ); - -@@ -627,6 +629,7 @@ void WaylandServer::initScreenLocker() - screenLockerApp, &ScreenLocker::KSldApp::userActivity); - } - ScreenLocker::KSldApp::self()->setWaylandFd(-1); -+ Compositor::self()->scene()->addRepaintFull(); - } - ); - --- -GitLab - diff --git a/kde-plasma/kwin/files/kwin-5.24.4-waylandserver-lockScreenShown.patch b/kde-plasma/kwin/files/kwin-5.24.4-waylandserver-lockScreenShown.patch deleted file mode 100644 index 4defd5ae5945..000000000000 --- a/kde-plasma/kwin/files/kwin-5.24.4-waylandserver-lockScreenShown.patch +++ /dev/null @@ -1,93 +0,0 @@ -From 9d38f57d84fb9a6f2c4e60f7051f685842f34e0f Mon Sep 17 00:00:00 2001 -From: Xaver Hugl <xaver.hugl@gmail.com> -Date: Mon, 28 Mar 2022 18:08:59 +0200 -Subject: [PATCH] waylandserver: only signal lockScreenShown once it has - actually been shown - -When the system goes to suspend and screen locking for suspend is enabled, -suspend is inhibited until ScreenLocker::KSldApp::self()->lockScreenShown() -gets called, in order to make sure that the lockscreen is shown before the -system goes to standby, and thus also when the system wakes (instead of -potentially sensitive user information). -However, signalling that when the lockscreen gets mapped can't work reliably, -as it's then a matter of timing whether or not KWin actually presents an -image with the lockscreen before suspending. To fix that, this commit replaces -that logic with only calling lockScreenShown once every output actually got a -lockscreen presented. ---- - src/wayland_server.cpp | 25 +++++++++++++++++++++---- - src/wayland_server.h | 10 ++++++++++ - 2 files changed, 31 insertions(+), 4 deletions(-) - -diff --git a/src/wayland_server.cpp b/src/wayland_server.cpp -index c850a1b697..6d5e1206a5 100644 ---- a/src/wayland_server.cpp -+++ b/src/wayland_server.cpp -@@ -213,10 +213,6 @@ KWaylandServer::ClientConnection *WaylandServer::inputMethodConnection() const - - void WaylandServer::registerShellClient(AbstractClient *client) - { -- if (client->isLockScreen()) { -- ScreenLocker::KSldApp::self()->lockScreenShown(); -- } -- - if (client->readyForPainting()) { - Q_EMIT shellClientAdded(client); - } else { -@@ -623,6 +619,8 @@ void WaylandServer::initScreenLocker() - m_screenLockerClientConnection = nullptr; - } - -+ new LockScreenPresentationWatcher(this); -+ - const QVector<SeatInterface *> seatIfaces = m_display->seats(); - for (auto *seat : seatIfaces) { - disconnect(seat, &KWaylandServer::SeatInterface::timestampChanged, -@@ -797,4 +795,23 @@ QString WaylandServer::socketName() const - return QString(); - } - -+WaylandServer::LockScreenPresentationWatcher::LockScreenPresentationWatcher(WaylandServer *server) -+{ -+ connect(server, &WaylandServer::shellClientAdded, this, [this](AbstractClient *client) { -+ if (client->isLockScreen()) { -+ connect(client->output()->renderLoop(), &RenderLoop::framePresented, this, [this, client]() { -+ // only signal lockScreenShown once all outputs have been presented at least once -+ m_signaledOutputs << client->output(); -+ if (m_signaledOutputs.size() == kwinApp()->platform()->enabledOutputs().size()) { -+ ScreenLocker::KSldApp::self()->lockScreenShown(); -+ delete this; -+ } -+ }); -+ } -+ }); -+ QTimer::singleShot(1000, this, [this]() { -+ ScreenLocker::KSldApp::self()->lockScreenShown(); -+ delete this; -+ }); -+} - } -diff --git a/src/wayland_server.h b/src/wayland_server.h -index bf1ba6eee5..58dda9a7a2 100644 ---- a/src/wayland_server.h -+++ b/src/wayland_server.h -@@ -243,6 +243,16 @@ private: - void handleOutputRemoved(AbstractOutput *output); - void handleOutputEnabled(AbstractOutput *output); - void handleOutputDisabled(AbstractOutput *output); -+ -+ class LockScreenPresentationWatcher : public QObject -+ { -+ public: -+ LockScreenPresentationWatcher(WaylandServer *server); -+ -+ private: -+ QSet<AbstractOutput *> m_signaledOutputs; -+ }; -+ - KWaylandServer::Display *m_display = nullptr; - KWaylandServer::CompositorInterface *m_compositor = nullptr; - KWaylandServer::SeatInterface *m_seat = nullptr; --- -GitLab - diff --git a/kde-plasma/kwin/files/kwin-5.24.4-waylandserver-move-LockScreenPresentationWatcher.patch b/kde-plasma/kwin/files/kwin-5.24.4-waylandserver-move-LockScreenPresentationWatcher.patch deleted file mode 100644 index 0607e2ff3030..000000000000 --- a/kde-plasma/kwin/files/kwin-5.24.4-waylandserver-move-LockScreenPresentationWatcher.patch +++ /dev/null @@ -1,36 +0,0 @@ -From 388402c3b1b37d9f72597aae8d6670e8c0edeb14 Mon Sep 17 00:00:00 2001 -From: Xaver Hugl <xaver.hugl@gmail.com> -Date: Wed, 6 Apr 2022 21:08:25 +0200 -Subject: [PATCH] waylandserver: move LockScreenPresentationWatcher to the - correct place - -CCBUG: 452334 ---- - src/wayland_server.cpp | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git a/src/wayland_server.cpp b/src/wayland_server.cpp -index 6d5e1206a5..eb3600f824 100644 ---- a/src/wayland_server.cpp -+++ b/src/wayland_server.cpp -@@ -603,6 +603,8 @@ void WaylandServer::initScreenLocker() - } - ScreenLocker::KSldApp::self()->setWaylandFd(clientFd); - -+ new LockScreenPresentationWatcher(this); -+ - const QVector<SeatInterface *> seatIfaces = m_display->seats(); - for (auto *seat : seatIfaces) { - connect(seat, &KWaylandServer::SeatInterface::timestampChanged, -@@ -619,8 +621,6 @@ void WaylandServer::initScreenLocker() - m_screenLockerClientConnection = nullptr; - } - -- new LockScreenPresentationWatcher(this); -- - const QVector<SeatInterface *> seatIfaces = m_display->seats(); - for (auto *seat : seatIfaces) { - disconnect(seat, &KWaylandServer::SeatInterface::timestampChanged, --- -GitLab - diff --git a/kde-plasma/kwin/files/kwin-5.24.4-xdgactivation-demand-attention.patch b/kde-plasma/kwin/files/kwin-5.24.4-xdgactivation-demand-attention.patch deleted file mode 100644 index 8efa6b637222..000000000000 --- a/kde-plasma/kwin/files/kwin-5.24.4-xdgactivation-demand-attention.patch +++ /dev/null @@ -1,32 +0,0 @@ -From 5390a4978f3a3903ede15ecd94a750b37931fbd2 Mon Sep 17 00:00:00 2001 -From: Aleix Pol <aleixpol@kde.org> -Date: Wed, 6 Apr 2022 00:33:21 +0200 -Subject: [PATCH] xdgactivation: Demand attention when a process fails to - resolve its token - -In xdg_activation_v1, if a process fails to negotiate activation, at -least decorate it as demanding attention. -This will give apps ways to indicate attention is required. It can can also -help detect clients doing weird things. - - -(cherry picked from commit 52035f43b90738e2efb4fd7b482719c1ea458578) ---- - src/xdgactivationv1.cpp | 1 + - 1 file changed, 1 insertion(+) - -diff --git a/src/xdgactivationv1.cpp b/src/xdgactivationv1.cpp -index e2270a3393..97f8575c29 100644 ---- a/src/xdgactivationv1.cpp -+++ b/src/xdgactivationv1.cpp -@@ -76,6 +76,7 @@ void XdgActivationV1Integration::activateSurface(SurfaceInterface *surface, cons - - if (!m_currentActivationToken || m_currentActivationToken->token != token) { - qCDebug(KWIN_CORE) << "Refusing to activate " << client << " (provided token: " << token << ", current token:" << (m_currentActivationToken ? m_currentActivationToken->token : QStringLiteral("null")) << ")"; -+ client->demandAttention(); - return; - } - --- -GitLab - diff --git a/kde-plasma/kwin/files/kwin-5.24.5-effects-overview-hide-panels.patch b/kde-plasma/kwin/files/kwin-5.24.5-effects-overview-hide-panels.patch new file mode 100644 index 000000000000..d5b1f8c3864e --- /dev/null +++ b/kde-plasma/kwin/files/kwin-5.24.5-effects-overview-hide-panels.patch @@ -0,0 +1,65 @@ +From 7fcf36d636f62f101397d88ad6c448f54da79e46 Mon Sep 17 00:00:00 2001 +From: Marco Martin <notmart@gmail.com> +Date: Fri, 13 May 2022 15:37:13 +0000 +Subject: [PATCH] effects/overview: hide panels + +This makes it consistent with WindowView (and the panel window doesn't respond +to input anyways even if shown, which is misleading). + +BUG: 444274 +FIXED-IN: 5.24.6 + + +(cherry picked from commit db2af5500f964f3eefde60183b69f21125aeb194) +--- + src/effects/overview/qml/ScreenView.qml | 20 ++++++++------------ + 1 file changed, 8 insertions(+), 12 deletions(-) + +diff --git a/src/effects/overview/qml/ScreenView.qml b/src/effects/overview/qml/ScreenView.qml +index 40cc29f4c7..39119e40b9 100644 +--- a/src/effects/overview/qml/ScreenView.qml ++++ b/src/effects/overview/qml/ScreenView.qml +@@ -70,16 +70,8 @@ FocusScope { + } + } + +- ExpoArea { +- id: heapArea +- screen: targetScreen +- } +- + Column { +- x: heapArea.x +- y: heapArea.y +- width: heapArea.width +- height: heapArea.height ++ anchors.fill: parent + + Item { + id: topBar +@@ -176,15 +168,19 @@ FocusScope { + + KWinComponents.WindowThumbnailItem { + id: windowThumbnail +- visible: !model.client.hidden ++ visible: !model.client.hidden && opacity > 0 + wId: model.client.internalId + x: model.client.x - targetScreen.geometry.x + y: model.client.y - targetScreen.geometry.y + width: model.client.width + height: model.client.height ++ opacity: container.effect.gestureInProgress ++ ? 1 - container.effect.partialActivationFactor ++ : (model.client.hidden || container.organized) ? 0 : 1 + +- TapHandler { +- onTapped: effect.deactivate(); ++ Behavior on opacity { ++ enabled: !container.effect.gestureInProgress ++ NumberAnimation { duration: animationDuration; easing.type: Easing.OutCubic } + } + } + } +-- +GitLab + diff --git a/kde-plasma/kwin/files/kwin-5.24.5-fix-multi-gpu-double-copy.patch b/kde-plasma/kwin/files/kwin-5.24.5-fix-multi-gpu-double-copy.patch new file mode 100644 index 000000000000..53c05da522ec --- /dev/null +++ b/kde-plasma/kwin/files/kwin-5.24.5-fix-multi-gpu-double-copy.patch @@ -0,0 +1,59 @@ +From 3b58fe4bde0722b352e4114adb992a2ed2c96423 Mon Sep 17 00:00:00 2001 +From: Xaver Hugl <xaver.hugl@gmail.com> +Date: Sat, 7 May 2022 21:23:17 +0200 +Subject: [PATCH] backends/drm: consider escaped separators KWIN_DRM_DEVICES + +':' conflicts with the file names in /dev/dri/by-path, so allow it to be +escaped with '\' + +CCBUG: 453386 + + +(cherry picked from commit a110aabbccf56019bdc324b3c751112f35ec3f6c) +--- + src/backends/drm/drm_backend.cpp | 24 +++++++++++++++++++++++- + 1 file changed, 23 insertions(+), 1 deletion(-) + +diff --git a/src/backends/drm/drm_backend.cpp b/src/backends/drm/drm_backend.cpp +index 272dba702c..567ea3f696 100644 +--- a/src/backends/drm/drm_backend.cpp ++++ b/src/backends/drm/drm_backend.cpp +@@ -57,12 +57,34 @@ + namespace KWin + { + ++static QStringList splitPathList(const QString &input, const QChar delimiter) ++{ ++ QStringList ret; ++ QString tmp; ++ for (int i = 0; i < input.size(); i++) { ++ if (input[i] == delimiter) { ++ if (i > 0 && input[i - 1] == '\\') { ++ tmp[tmp.size() - 1] = delimiter; ++ } else if (!tmp.isEmpty()) { ++ ret.append(tmp); ++ tmp = QString(); ++ } ++ } else { ++ tmp.append(input[i]); ++ } ++ } ++ if (!tmp.isEmpty()) { ++ ret.append(tmp); ++ } ++ return ret; ++} ++ + DrmBackend::DrmBackend(QObject *parent) + : Platform(parent) + , m_udev(new Udev) + , m_udevMonitor(m_udev->monitor()) + , m_session(Session::create(this)) +- , m_explicitGpus(qEnvironmentVariable("KWIN_DRM_DEVICES").split(':', Qt::SkipEmptyParts)) ++ , m_explicitGpus(splitPathList(qEnvironmentVariable("KWIN_DRM_DEVICES"), ':')) + , m_dpmsFilter() + { + setSupportsPointerWarping(true); +-- +GitLab + diff --git a/kde-plasma/kwin/files/kwin-5.24.5-fix-nvidia-render-glitches.patch b/kde-plasma/kwin/files/kwin-5.24.5-fix-nvidia-render-glitches.patch new file mode 100644 index 000000000000..d38e11375bbe --- /dev/null +++ b/kde-plasma/kwin/files/kwin-5.24.5-fix-nvidia-render-glitches.patch @@ -0,0 +1,42 @@ +From e2d271b6365188a86755af82745ad37535ceb4d7 Mon Sep 17 00:00:00 2001 +From: Erik Kurzinger <ekurzinger@nvidia.com> +Date: Sun, 8 May 2022 12:16:20 -0700 +Subject: [PATCH] platforms/drm: set read buffer in + GbmSurface::makeContextCurrent + +The first time the GBM backend's EGL context is made current after +creation, both the read and draw surfaces are set to EGL_NO_SURFACE. +This will set the GL read and draw buffers to GL_NONE in accordance with +the EGL spec. + +When a real surface is later made current, however, the spec is arguably +unclear on whether the read and draw buffers should remain set to +GL_NONE or whether they should be restored to the default GL_BACK. The +Mesa driver does the latter, the NVIDIA driver does the former. + +To work around this difference, Kwin has an explicit call to +glDrawBuffer in GbmSurface::makeContextCurrent. It does not have a +corresponding call to glReadBuffer, though, which can cause some desktop +effects such as background contrast to render incorrectly with the +NVIDIA driver. This change adds that missing call. + +(cherry picked from commit e6d2bc153f499d1ec3510c02badca38d4c42c340) +--- + src/backends/drm/egl_gbm_backend.cpp | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/src/backends/drm/egl_gbm_backend.cpp b/src/backends/drm/egl_gbm_backend.cpp +index 5a0be7ccaf..b34fa1320b 100644 +--- a/src/backends/drm/egl_gbm_backend.cpp ++++ b/src/backends/drm/egl_gbm_backend.cpp +@@ -377,6 +377,7 @@ bool EglGbmBackend::makeContextCurrent(const Output::RenderData &render) const + } + if (!GLPlatform::instance()->isGLES()) { + glDrawBuffer(GL_BACK); ++ glReadBuffer(GL_BACK); + } + return true; + } +-- +GitLab + diff --git a/kde-plasma/kwin/files/kwin-5.24.5-fix-plasmashell-crash-1.patch b/kde-plasma/kwin/files/kwin-5.24.5-fix-plasmashell-crash-1.patch new file mode 100644 index 000000000000..46b6f0ad9c71 --- /dev/null +++ b/kde-plasma/kwin/files/kwin-5.24.5-fix-plasmashell-crash-1.patch @@ -0,0 +1,307 @@ +From 4c3195270d6c8e1da8c3e2e3abe5aae75d5bf3c2 Mon Sep 17 00:00:00 2001 +From: Vlad Zahorodnii <vlad.zahorodnii@kde.org> +Date: Fri, 26 Nov 2021 12:03:14 +0200 +Subject: [PATCH] Ensure that Toplevel::output() stays always in sync with + geometry + +Currently, if geometry updates are blocked, the Toplevel.output property +won't be updated. On the other hand, it's reasonable to use the output +property instead of manually looking up the output in window management +code, e.g. Workspace::clientArea(). + +In other words, using the Toplevel.output property is like walking on a +mine field, things can blow up. You can't use Toplevel.output even if it +makes perfect sense. + +This change ensures that Toplevel.output property is always kept in sync +with the frame geometry. Unfortunately, this means that the output +property no longer can be updated when the frameGeometryChanged() signal +is emitted. It has to be done in moveResizeInternal() method. + +BUG: 448064 + +(cherry picked from 510a41eeb89f51843405fa0258c852ab06d05bb8) + +Part-of: <https://invent.kde.org/plasma/kwin/-/merge_requests/2448> +--- + src/abstract_client.cpp | 3 --- + src/events.cpp | 1 + + src/internal_client.cpp | 6 ++++++ + src/toplevel.cpp | 17 ----------------- + src/toplevel.h | 10 ++-------- + src/unmanaged.cpp | 6 ++++++ + src/unmanaged.h | 1 + + src/waylandclient.cpp | 6 ++++++ + src/x11client.cpp | 7 +++++++ + src/x11client.h | 1 + + 10 files changed, 30 insertions(+), 28 deletions(-) + +diff --git a/src/abstract_client.cpp b/src/abstract_client.cpp +index 0714b9ac3f..ddff11e53c 100644 +--- a/src/abstract_client.cpp ++++ b/src/abstract_client.cpp +@@ -63,8 +63,6 @@ AbstractClient::AbstractClient() + { + connect(this, &AbstractClient::clientStartUserMovedResized, this, &AbstractClient::moveResizedChanged); + connect(this, &AbstractClient::clientFinishUserMovedResized, this, &AbstractClient::moveResizedChanged); +- connect(this, &AbstractClient::clientStartUserMovedResized, this, &AbstractClient::removeCheckOutputConnection); +- connect(this, &AbstractClient::clientFinishUserMovedResized, this, &AbstractClient::setupCheckOutputConnection); + + connect(this, &AbstractClient::windowShown, this, &AbstractClient::hiddenChanged); + connect(this, &AbstractClient::windowHidden, this, &AbstractClient::hiddenChanged); +@@ -1011,7 +1009,6 @@ void AbstractClient::finishInteractiveMoveResize(bool cancel) + if (cancel) { + moveResize(initialInteractiveMoveResizeGeometry()); + } +- checkOutput(); // needs to be done because clientFinishUserMovedResized has not yet re-activated online alignment + if (output() != interactiveMoveResizeStartOutput()) { + workspace()->sendClientToOutput(this, output()); // checks rule validity + if (isFullScreen() || maximizeMode() != MaximizeRestore) { +diff --git a/src/events.cpp b/src/events.cpp +index b9bb9bbd36..a22960f0d0 100644 +--- a/src/events.cpp ++++ b/src/events.cpp +@@ -1261,6 +1261,7 @@ void Unmanaged::configureNotifyEvent(xcb_configure_notify_event_t *e) + m_clientGeometry = newgeom; + m_frameGeometry = newgeom; + m_bufferGeometry = newgeom; ++ checkOutput(); + Q_EMIT bufferGeometryChanged(this, old); + Q_EMIT clientGeometryChanged(this, old); + Q_EMIT frameGeometryChanged(this, old); +diff --git a/src/internal_client.cpp b/src/internal_client.cpp +index 3be51ff27b..b4c9250fd3 100644 +--- a/src/internal_client.cpp ++++ b/src/internal_client.cpp +@@ -10,6 +10,7 @@ + #include "internal_client.h" + #include "decorations/decorationbridge.h" + #include "deleted.h" ++#include "platform.h" + #include "surfaceitem.h" + #include "workspace.h" + +@@ -477,6 +478,7 @@ void InternalClient::commitGeometry(const QRect &rect) + // The client geometry and the buffer geometry are the same. + const QRect oldClientGeometry = m_clientGeometry; + const QRect oldFrameGeometry = m_frameGeometry; ++ const AbstractOutput *oldOutput = m_output; + + m_clientGeometry = frameRectToClientRect(rect); + m_frameGeometry = rect; +@@ -486,6 +488,7 @@ void InternalClient::commitGeometry(const QRect &rect) + return; + } + ++ m_output = kwinApp()->platform()->outputAt(rect.center()); + syncGeometryToInternalWindow(); + + if (oldClientGeometry != m_clientGeometry) { +@@ -495,6 +498,9 @@ void InternalClient::commitGeometry(const QRect &rect) + if (oldFrameGeometry != m_frameGeometry) { + Q_EMIT frameGeometryChanged(this, oldFrameGeometry); + } ++ if (oldOutput != m_output) { ++ Q_EMIT screenChanged(); ++ } + Q_EMIT geometryShapeChanged(this, oldFrameGeometry); + } + +diff --git a/src/toplevel.cpp b/src/toplevel.cpp +index 698f6998e5..ff216835c4 100644 +--- a/src/toplevel.cpp ++++ b/src/toplevel.cpp +@@ -47,7 +47,6 @@ Toplevel::Toplevel() + , m_skipCloseAnimation(false) + { + connect(screens(), &Screens::changed, this, &Toplevel::screenChanged); +- setupCheckOutputConnection(); + connect(this, &Toplevel::bufferGeometryChanged, this, &Toplevel::inputTransformationChanged); + + // Only for compatibility reasons, drop in the next major release. +@@ -379,22 +378,6 @@ void Toplevel::deleteEffectWindow() + effect_window = nullptr; + } + +-void Toplevel::checkOutput() +-{ +- setOutput(kwinApp()->platform()->outputAt(frameGeometry().center())); +-} +- +-void Toplevel::setupCheckOutputConnection() +-{ +- connect(this, &Toplevel::frameGeometryChanged, this, &Toplevel::checkOutput); +- checkOutput(); +-} +- +-void Toplevel::removeCheckOutputConnection() +-{ +- disconnect(this, &Toplevel::frameGeometryChanged, this, &Toplevel::checkOutput); +-} +- + int Toplevel::screen() const + { + return kwinApp()->platform()->enabledOutputs().indexOf(m_output); +diff --git a/src/toplevel.h b/src/toplevel.h +index f6b5dd4e61..3309647eb4 100644 +--- a/src/toplevel.h ++++ b/src/toplevel.h +@@ -636,13 +636,6 @@ Q_SIGNALS: + void visibleGeometryChanged(); + + protected Q_SLOTS: +- /** +- * Checks whether the screen number for this Toplevel changed and updates if needed. +- * Any method changing the geometry of the Toplevel should call this method. +- */ +- void checkOutput(); +- void setupCheckOutputConnection(); +- void removeCheckOutputConnection(); + void setReadyForPainting(); + + protected: +@@ -673,6 +666,8 @@ protected: + void deleteShadow(); + void deleteEffectWindow(); + void setDepth(int depth); ++ ++ AbstractOutput *m_output = nullptr; + QRect m_frameGeometry; + QRect m_clientGeometry; + QRect m_bufferGeometry; +@@ -700,7 +695,6 @@ private: + QRegion opaque_region; + mutable QRegion m_shapeRegion; + mutable bool m_shapeRegionIsValid = false; +- AbstractOutput *m_output = nullptr; + bool m_skipCloseAnimation; + quint32 m_pendingSurfaceId = 0; + QPointer<KWaylandServer::SurfaceInterface> m_surface; +diff --git a/src/unmanaged.cpp b/src/unmanaged.cpp +index de3caa303d..3164813a75 100644 +--- a/src/unmanaged.cpp ++++ b/src/unmanaged.cpp +@@ -12,6 +12,7 @@ + #include "workspace.h" + #include "effects.h" + #include "deleted.h" ++#include "platform.h" + #include "surfaceitem_x11.h" + #include "utils/common.h" + +@@ -206,6 +207,11 @@ QWindow *Unmanaged::findInternalWindow() const + return nullptr; + } + ++void Unmanaged::checkOutput() ++{ ++ setOutput(kwinApp()->platform()->outputAt(frameGeometry().center())); ++} ++ + void Unmanaged::damageNotifyEvent() + { + Q_ASSERT(kwinApp()->operationMode() == Application::OperationModeX11); +diff --git a/src/unmanaged.h b/src/unmanaged.h +index e874fc1724..fa543eb0b8 100644 +--- a/src/unmanaged.h ++++ b/src/unmanaged.h +@@ -45,6 +45,7 @@ private: + void configureNotifyEvent(xcb_configure_notify_event_t *e); + void damageNotifyEvent(); + QWindow *findInternalWindow() const; ++ void checkOutput(); + void associate(); + void initialize(); + bool m_outline = false; +diff --git a/src/waylandclient.cpp b/src/waylandclient.cpp +index 39d6ea22bc..9d8070c7f8 100644 +--- a/src/waylandclient.cpp ++++ b/src/waylandclient.cpp +@@ -7,6 +7,7 @@ + */ + + #include "waylandclient.h" ++#include "platform.h" + #include "screens.h" + #include "wayland_server.h" + #include "workspace.h" +@@ -289,6 +290,7 @@ void WaylandClient::updateGeometry(const QRect &rect) + const QRect oldClientGeometry = m_clientGeometry; + const QRect oldFrameGeometry = m_frameGeometry; + const QRect oldBufferGeometry = m_bufferGeometry; ++ const AbstractOutput *oldOutput = m_output; + + m_clientGeometry = frameRectToClientRect(rect); + m_frameGeometry = rect; +@@ -310,6 +312,7 @@ void WaylandClient::updateGeometry(const QRect &rect) + return; + } + ++ m_output = kwinApp()->platform()->outputAt(rect.center()); + updateWindowRules(Rules::Position | Rules::Size); + + if (changedGeometries & WaylandGeometryBuffer) { +@@ -321,6 +324,9 @@ void WaylandClient::updateGeometry(const QRect &rect) + if (changedGeometries & WaylandGeometryFrame) { + Q_EMIT frameGeometryChanged(this, oldFrameGeometry); + } ++ if (oldOutput != m_output) { ++ Q_EMIT screenChanged(); ++ } + Q_EMIT geometryShapeChanged(this, oldFrameGeometry); + } + +diff --git a/src/x11client.cpp b/src/x11client.cpp +index ce275fff1b..d7ed823128 100644 +--- a/src/x11client.cpp ++++ b/src/x11client.cpp +@@ -4062,6 +4062,8 @@ void X11Client::moveResizeInternal(const QRect &rect, MoveResizeMode mode) + m_lastClientGeometry == m_clientGeometry) { + return; + } ++ ++ m_output = kwinApp()->platform()->outputAt(frameGeometry.center()); + if (areGeometryUpdatesBlocked()) { + setPendingMoveResizeMode(mode); + return; +@@ -4070,6 +4072,7 @@ void X11Client::moveResizeInternal(const QRect &rect, MoveResizeMode mode) + const QRect oldBufferGeometry = m_lastBufferGeometry; + const QRect oldFrameGeometry = m_lastFrameGeometry; + const QRect oldClientGeometry = m_lastClientGeometry; ++ const AbstractOutput *oldOutput = m_lastOutput; + + updateServerGeometry(); + updateWindowRules(Rules::Position|Rules::Size); +@@ -4077,6 +4080,7 @@ void X11Client::moveResizeInternal(const QRect &rect, MoveResizeMode mode) + m_lastBufferGeometry = m_bufferGeometry; + m_lastFrameGeometry = m_frameGeometry; + m_lastClientGeometry = m_clientGeometry; ++ m_lastOutput = m_output; + + if (isActive()) { + workspace()->setActiveOutput(output()); +@@ -4092,6 +4096,9 @@ void X11Client::moveResizeInternal(const QRect &rect, MoveResizeMode mode) + if (oldFrameGeometry != m_frameGeometry) { + Q_EMIT frameGeometryChanged(this, oldFrameGeometry); + } ++ if (oldOutput != m_output) { ++ Q_EMIT screenChanged(); ++ } + Q_EMIT geometryShapeChanged(this, oldFrameGeometry); + } + +diff --git a/src/x11client.h b/src/x11client.h +index b523044d3d..adb8b0e8df 100644 +--- a/src/x11client.h ++++ b/src/x11client.h +@@ -524,6 +524,7 @@ private: + QMetaObject::Connection m_edgeGeometryTrackingConnection; + + QMargins m_clientFrameExtents; ++ AbstractOutput *m_lastOutput = nullptr; + QRect m_lastBufferGeometry; + QRect m_lastFrameGeometry; + QRect m_lastClientGeometry; +-- +GitLab + diff --git a/kde-plasma/kwin/files/kwin-5.24.5-fix-plasmashell-crash-2.patch b/kde-plasma/kwin/files/kwin-5.24.5-fix-plasmashell-crash-2.patch new file mode 100644 index 000000000000..026efdf9465b --- /dev/null +++ b/kde-plasma/kwin/files/kwin-5.24.5-fix-plasmashell-crash-2.patch @@ -0,0 +1,35 @@ +From a8477c1cf7acbf3358c85e53b236150dd43b4640 Mon Sep 17 00:00:00 2001 +From: Xaver Hugl <xaver.hugl@gmail.com> +Date: Thu, 14 Apr 2022 18:48:56 +0200 +Subject: [PATCH] toplevel: set valid output in the constructor + +This makes it less easy to cause crashes and fixes some segfaults. + +BUG: 452433 +BUG: 448064 + +(cherry picked from commit e48a5c0535f01dc380449ba8481c869ff23e5558) + +Tested-by: Merge Service <https://invent.kde.org/plasma/kwin/-/merge_requests/2448> +Part-of: <https://invent.kde.org/plasma/kwin/-/merge_requests/2448> +--- + src/toplevel.cpp | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/src/toplevel.cpp b/src/toplevel.cpp +index ff216835c4..5d3d7a5dde 100644 +--- a/src/toplevel.cpp ++++ b/src/toplevel.cpp +@@ -34,7 +34,8 @@ namespace KWin + { + + Toplevel::Toplevel() +- : m_visual(XCB_NONE) ++ : m_output(workspace()->activeOutput()) ++ , m_visual(XCB_NONE) + , bit_depth(24) + , info(nullptr) + , ready_for_painting(false) +-- +GitLab + diff --git a/kde-plasma/kwin/files/kwin-5.24.5-tabbox-dont-dismiss-popups.patch b/kde-plasma/kwin/files/kwin-5.24.5-tabbox-dont-dismiss-popups.patch new file mode 100644 index 000000000000..f79d4bba71ce --- /dev/null +++ b/kde-plasma/kwin/files/kwin-5.24.5-tabbox-dont-dismiss-popups.patch @@ -0,0 +1,32 @@ +From f7b1edc79e9526fe6bad69a8ad475a5d77e5aead Mon Sep 17 00:00:00 2001 +From: Xaver Hugl <xaver.hugl@gmail.com> +Date: Tue, 10 May 2022 13:07:03 +0200 +Subject: [PATCH] tabbox: don't dismiss popups + +The glitches that dismissing popups was supposed to prevent are apparently +no longer present. + +BUG: 446318 +(cherry picked from commit 94b0ca814688bf3622aa53f4d4d26f97d8de7306) +--- + src/tabbox/tabbox.cpp | 4 ---- + 1 file changed, 4 deletions(-) + +diff --git a/src/tabbox/tabbox.cpp b/src/tabbox/tabbox.cpp +index a1c50b27fc..76a50795ad 100644 +--- a/src/tabbox/tabbox.cpp ++++ b/src/tabbox/tabbox.cpp +@@ -1020,10 +1020,6 @@ void TabBox::navigatingThroughWindows(bool forward, const QKeySequence &shortcut + // CDE style raise / lower + CDEWalkThroughWindows(forward); + } else { +- workspace()->forEachAbstractClient([](Toplevel *toplevel) { +- if (toplevel->isPopupWindow()) +- toplevel->popupDone(); +- }); + if (areModKeysDepressed(shortcut)) { + if (startKDEWalkThroughWindows(mode)) + KDEWalkThroughWindows(forward); +-- +GitLab + diff --git a/kde-plasma/kwin/files/kwin-5.24.5-update-device-outputName.patch b/kde-plasma/kwin/files/kwin-5.24.5-update-device-outputName.patch new file mode 100644 index 000000000000..d1dbb3fb9bb8 --- /dev/null +++ b/kde-plasma/kwin/files/kwin-5.24.5-update-device-outputName.patch @@ -0,0 +1,32 @@ +From 1b96d21507a3b6b0a9ac6eac424d4e4db5602839 Mon Sep 17 00:00:00 2001 +From: David Redondo <kde@david-redondo.de> +Date: Wed, 18 May 2022 13:34:45 +0200 +Subject: [PATCH] Update device outputName when setting output + +BUG:451279 +FIXED-IN:5.25.0 + + +(cherry picked from commit d3a37aa9aef58fbaedcef77d2797c22a015dc9c0) +--- + src/backends/libinput/device.cpp | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/src/backends/libinput/device.cpp b/src/backends/libinput/device.cpp +index f247b66d74..30f51aca3c 100644 +--- a/src/backends/libinput/device.cpp ++++ b/src/backends/libinput/device.cpp +@@ -668,8 +668,10 @@ void Device::setOutput(AbstractOutput *output) + { + m_output = output; + if (m_output) { ++ m_outputName = output->name(); + writeEntry(ConfigKey::OutputName, output->name()); + } else { ++ m_outputName = QString(); + writeEntry(ConfigKey::OutputName, QString()); + } + Q_EMIT outputNameChanged(); +-- +GitLab + diff --git a/kde-plasma/kwin/kwin-5.24.5.ebuild b/kde-plasma/kwin/kwin-5.24.5-r2.ebuild index a47f4289b4c9..8e56a5025394 100644 --- a/kde-plasma/kwin/kwin-5.24.5.ebuild +++ b/kde-plasma/kwin/kwin-5.24.5-r2.ebuild @@ -15,7 +15,7 @@ DESCRIPTION="Flexible, composited Window Manager for windowing systems on Linux" LICENSE="GPL-2+" SLOT="5" -KEYWORDS="~amd64 ~arm ~arm64 ~ppc64 ~riscv ~x86" +KEYWORDS="amd64 ~arm arm64 ~ppc64 ~riscv x86" IUSE="accessibility caps gles2-only multimedia plasma screencast" RESTRICT="test" @@ -99,6 +99,15 @@ DEPEND="${COMMON_DEPEND} BDEPEND="test? ( >=dev-qt/qtwaylandscanner-${QTMIN}:5 )" PDEPEND=">=kde-plasma/kde-cli-tools-${PVCUT}:5" +PATCHES=( + "${FILESDIR}"/${P}-fix-multi-gpu-double-copy.patch # KDE-bug 453386 + "${FILESDIR}"/${P}-tabbox-dont-dismiss-popups.patch # KDE-bug 446318 + "${FILESDIR}"/${P}-effects-overview-hide-panels.patch # KDE-bug 444274 + "${FILESDIR}"/${P}-fix-nvidia-render-glitches.patch + "${FILESDIR}"/${P}-update-device-outputName.patch # KDE-bug 451279 + "${FILESDIR}"/${P}-fix-plasmashell-crash-{1,2}.patch # KDE-bugs 448064, 452433 +) + src_prepare() { ecm_src_prepare use multimedia || eapply "${FILESDIR}/${PN}-5.21.80-gstreamer-optional.patch" diff --git a/kde-plasma/kwin/kwin-5.24.4-r1.ebuild b/kde-plasma/kwin/kwin-5.25.2.ebuild index 354b862b91c3..4b4bb9fd0c9a 100644 --- a/kde-plasma/kwin/kwin-5.24.4-r1.ebuild +++ b/kde-plasma/kwin/kwin-5.25.2.ebuild @@ -5,9 +5,9 @@ EAPI=8 ECM_HANDBOOK="optional" ECM_TEST="optional" -KFMIN=5.90.0 +KFMIN=5.94.0 PVCUT=$(ver_cut 1-3) -QTMIN=5.15.2 +QTMIN=5.15.4 VIRTUALX_REQUIRED="test" inherit ecm kde.org optfeature @@ -15,24 +15,25 @@ DESCRIPTION="Flexible, composited Window Manager for windowing systems on Linux" LICENSE="GPL-2+" SLOT="5" -KEYWORDS="amd64 ~arm arm64 ~ppc64 ~riscv x86" -IUSE="accessibility caps gles2-only multimedia plasma screencast" +KEYWORDS="~amd64 ~arm ~arm64 ~loong ~ppc64 ~riscv ~x86" +IUSE="accessibility caps gles2-only lock multimedia plasma screencast" RESTRICT="test" COMMON_DEPEND=" >=dev-libs/libinput-1.19 - >=dev-libs/wayland-1.2 + >=dev-libs/wayland-1.20.0 + >=dev-qt/qtconcurrent-${QTMIN}:5 >=dev-qt/qtdbus-${QTMIN}:5 >=dev-qt/qtdeclarative-${QTMIN}:5 - >=dev-qt/qtgui-${QTMIN}:5=[gles2-only=,libinput] + >=dev-qt/qtgui-${QTMIN}:5=[egl,gles2-only=,libinput] + >=dev-qt/qtwayland-${QTMIN}:5 >=dev-qt/qtwidgets-${QTMIN}:5 >=dev-qt/qtx11extras-${QTMIN}:5 >=kde-frameworks/kactivities-${KFMIN}:5 >=kde-frameworks/kauth-${KFMIN}:5 >=kde-frameworks/kcmutils-${KFMIN}:5 - >=kde-frameworks/kcompletion-${KFMIN}:5 - >=kde-frameworks/kconfig-${KFMIN}:5 + >=kde-frameworks/kconfig-${KFMIN}:5[qml] >=kde-frameworks/kconfigwidgets-${KFMIN}:5 >=kde-frameworks/kcoreaddons-${KFMIN}:5 >=kde-frameworks/kcrash-${KFMIN}:5 @@ -40,13 +41,12 @@ COMMON_DEPEND=" >=kde-frameworks/kdeclarative-${KFMIN}:5 >=kde-frameworks/kglobalaccel-${KFMIN}:5= >=kde-frameworks/ki18n-${KFMIN}:5 - >=kde-frameworks/kiconthemes-${KFMIN}:5 >=kde-frameworks/kidletime-${KFMIN}:5= + >=kde-frameworks/kitemviews-${KFMIN}:5 >=kde-frameworks/knewstuff-${KFMIN}:5 >=kde-frameworks/knotifications-${KFMIN}:5 >=kde-frameworks/kpackage-${KFMIN}:5 >=kde-frameworks/kservice-${KFMIN}:5 - >=kde-frameworks/ktextwidgets-${KFMIN}:5 >=kde-frameworks/kwayland-${KFMIN}:5 >=kde-frameworks/kwidgetsaddons-${KFMIN}:5 >=kde-frameworks/kwindowsystem-${KFMIN}:5=[X] @@ -54,18 +54,18 @@ COMMON_DEPEND=" >=kde-frameworks/plasma-${KFMIN}:5 >=kde-plasma/breeze-${PVCUT}:5 >=kde-plasma/kdecoration-${PVCUT}:5 - >=kde-plasma/kscreenlocker-${PVCUT}:5 - >=kde-plasma/kwayland-server-${PVCUT}:5 media-libs/fontconfig media-libs/freetype media-libs/lcms:2 media-libs/libepoxy + media-libs/libglvnd >=media-libs/mesa-21.1[egl(+),gbm(+),wayland,X] virtual/libudev:= x11-libs/libX11 x11-libs/libXi x11-libs/libdrm >=x11-libs/libxcb-1.10 + >=x11-libs/libxcvt-0.1.1 >=x11-libs/libxkbcommon-0.7.0 x11-libs/xcb-util-cursor x11-libs/xcb-util-image @@ -74,10 +74,12 @@ COMMON_DEPEND=" accessibility? ( media-libs/libqaccessibilityclient:5 ) caps? ( sys-libs/libcap ) gles2-only? ( media-libs/mesa[gles2] ) + lock? ( >=kde-plasma/kscreenlocker-${PVCUT}:5 ) plasma? ( >=kde-frameworks/krunner-${KFMIN}:5 ) screencast? ( >=media-video/pipewire-0.3:= ) " RDEPEND="${COMMON_DEPEND} + !kde-plasma/kwayland-server >=dev-qt/qtquickcontrols-${QTMIN}:5 >=dev-qt/qtquickcontrols2-${QTMIN}:5 >=dev-qt/qtvirtualkeyboard-${QTMIN}:5 @@ -88,29 +90,18 @@ RDEPEND="${COMMON_DEPEND} multimedia? ( >=dev-qt/qtmultimedia-${QTMIN}:5[gstreamer,qml] ) " DEPEND="${COMMON_DEPEND} + dev-libs/plasma-wayland-protocols + >=dev-libs/wayland-protocols-1.25 >=dev-qt/designer-${QTMIN}:5 >=dev-qt/qtconcurrent-${QTMIN}:5 x11-base/xorg-proto - test? ( - dev-libs/plasma-wayland-protocols - >=dev-libs/wayland-protocols-1.19 - ) " -BDEPEND="test? ( >=dev-qt/qtwaylandscanner-${QTMIN}:5 )" +BDEPEND=" + >=dev-qt/qtwaylandscanner-${QTMIN}:5 + dev-util/wayland-scanner +" PDEPEND=">=kde-plasma/kde-cli-tools-${PVCUT}:5" -PATCHES=( - "${FILESDIR}"/${P}-waylandserver-lockScreenShown.patch - "${FILESDIR}"/${P}-xdgactivation-demand-attention.patch - "${FILESDIR}"/${P}-waylandserver-move-LockScreenPresentationWatcher.patch - "${FILESDIR}"/${P}-backends-drm-dont-perm-disable-vrr.patch - "${FILESDIR}"/${P}-backends-drm-fetch-immutable-blobs.patch # KDE-bug 449285 - "${FILESDIR}"/${P}-dont-send-geom-to-text-input.patch - "${FILESDIR}"/${P}-fix-current-VD-always-added.patch # KDE-bug 452171 - "${FILESDIR}"/${P}-dont-use-xcb-in-wayland.patch # KDE-bug 450564 - "${FILESDIR}"/${P}-fix-unlocking-wayland-sessions.patch # KDE-bug 447705 -) - src_prepare() { ecm_src_prepare use multimedia || eapply "${FILESDIR}/${PN}-5.21.80-gstreamer-optional.patch" @@ -123,8 +114,10 @@ src_prepare() { src_configure() { local mycmakeargs=( + # KWIN_BUILD_NOTIFICATIONS exists, but kdeclarative still hard-depends on it $(cmake_use_find_package accessibility QAccessibilityClient) $(cmake_use_find_package caps Libcap) + -DKWIN_BUILD_SCREENLOCKER=$(usex lock) $(cmake_use_find_package plasma KF5Runner) ) diff --git a/kde-plasma/kwin/metadata.xml b/kde-plasma/kwin/metadata.xml index 5c6a9ef157a9..d71da9e2cb08 100644 --- a/kde-plasma/kwin/metadata.xml +++ b/kde-plasma/kwin/metadata.xml @@ -9,6 +9,7 @@ <bugs-to>https://bugs.kde.org/</bugs-to> </upstream> <use> + <flag name="lock">Enable screen locking via <pkg>kde-plasma/kscreenlocker</pkg></flag> <flag name="multimedia">Enable effect video button in desktop effects KCM</flag> <flag name="screencast">Enable screencast portal using <pkg>media-video/pipewire</pkg></flag> </use> |