diff options
Diffstat (limited to 'kde-plasma/kwin')
-rw-r--r-- | kde-plasma/kwin/Manifest | 10 | ||||
-rw-r--r-- | kde-plasma/kwin/files/kwin-5.14.3-kcrash-init.patch | 48 | ||||
-rw-r--r-- | kde-plasma/kwin/files/kwin-5.14.3-resizewindows-crash.patch | 72 | ||||
-rw-r--r-- | kde-plasma/kwin/files/kwin-5.14.3-virtualdesktop-crash.patch | 137 | ||||
-rw-r--r-- | kde-plasma/kwin/kwin-5.14.3-r1.ebuild (renamed from kde-plasma/kwin/kwin-5.12.7.ebuild) | 14 | ||||
-rw-r--r-- | kde-plasma/kwin/kwin-5.14.3.ebuild (renamed from kde-plasma/kwin/kwin-5.14.2.ebuild) | 0 |
6 files changed, 274 insertions, 7 deletions
diff --git a/kde-plasma/kwin/Manifest b/kde-plasma/kwin/Manifest index e2a0e9f29c99..69fa3f2e0c0a 100644 --- a/kde-plasma/kwin/Manifest +++ b/kde-plasma/kwin/Manifest @@ -1,9 +1,11 @@ AUX kwin-5.10.95-test-optional.patch 1023 BLAKE2B 9e3f9e831a7164ad4041732785f771c4557c65f68dfe8cd5e6dcb55f6f65d5e1d0b220cde0901f56baeb8ffd194c604115f64c6d6496b19be6e9254cf37f567d SHA512 e564dc6c0e28762917713d37aec099d1ff522f64e26aabc906ffbb7dd4056316bbab43b1b3c71e1f55659471e270f17afe8673a76dcd75efa1a5c8e399bdd7f5 +AUX kwin-5.14.3-kcrash-init.patch 1364 BLAKE2B 56420c52d5c1fb8fb4e7ea2a4f41112d99443bd69d65d5246a4c42520251126a4413d5589d9899e643a04c505033a05a3c46477f6c414a7fb2a86093f5112abc SHA512 069229bb1c9eb1562d907553d0c06644cbd940b1ec33d93d0722238a590f7aa44a05b45ee98657084f59c156e1be036db2d1997ac191e0d4018b95eea4652040 +AUX kwin-5.14.3-resizewindows-crash.patch 2671 BLAKE2B 8be2d2d0a5e28a550c3c01f00673a11d916b5d52d92e072d38301881a4787788a6dbda3897f921921edcd0f24243dc916b08689b0f3ff6339f3411773f710dbf SHA512 522fd906ccec2a2b6cb025060f6be45d263295a75fef53549ec43fcf083346ba1e7087091604d9a531023f2d1f7323897cc252e5f30fd6fef9147aac18c3b387 +AUX kwin-5.14.3-virtualdesktop-crash.patch 4668 BLAKE2B 6f405123b019d45b76dbabe4e114cc02c97d1cc9776119828b87f292b6d21b238074d04bc7ca0eb473ea4675d38fa9926a94c9247b8eba1ea5ed581b3e6c75ad SHA512 4c4914cbec8b45212346c5ce58338189ffc035e490cfd6173a4db138eb36011fcf9ff61899b9f057df5b460e83f74776065f8c45cf4bf3f6c599410740190027 AUX kwin-gstreamer-optional.patch 523 BLAKE2B 471af1885be73ef7ea48054ff9451faba750008117903cedb073e2ba217cb48f386b48824af95813e81646afebddcc99e01646d507b26a94e8c55fb5b90f9c40 SHA512 e8a4106f8754e5e1b426f1ae3141d17ba4469c1dac44f34f0ec7292d3242d7848b5f7748c56f08db576e1f826c171a1020d5fe73e2aa4dfdea813e37c565a4e3 -DIST kwin-5.12.7.tar.xz 6521368 BLAKE2B 5cf898b85ead7c7b88017b86ddee2c4c0444637414094c07b972681be45c2eeac43cb4c3ceb167d22b5e3f685216922c065b76e5db555d22fd378faa2b2e7a94 SHA512 acb58cd5681727aa2ebcfb75d2abc3ea636811b490d8b15a4b89e55cfb81ce8aeed9568a52d4d1c3274852f26823ec5301a6721d9be64ba9a2b65e04f6029760 DIST kwin-5.13.5.tar.xz 6525660 BLAKE2B b159dd8223f018e7a17d8e17296c8f6bd40d95ed666839198a82b6c65c13965e0ba49af45ac13ac579567a4f2e3f088c571f2f300103a4477284327609076272 SHA512 73f2d16403b7972db8ebe228569504d1e6345a633f8b006b6399575b0ed26dc5a3d047be0f476dedfce16acaaba0e3870e62059d96e4f8471fecafca7eee5a14 -DIST kwin-5.14.2.tar.xz 6552580 BLAKE2B b39ce6b8e2a2ebca1d62e7ca32b558ba865a6ecc349edc1f2eab773a9f73fb34892f41cbaf3e8d3f61debc8663fc15885c099cd6560f6ab2ff5b82e74383db91 SHA512 a2be6b80454082a772956aafb66057c32b555c81f8e30b0a6aef0ff35ff6d2ab5de3c23bcbce59f40508fc6792a7216060297d204f9ff4c534c0c3561015d70e -EBUILD kwin-5.12.7.ebuild 2619 BLAKE2B 68d90c5bba00288f04507d62226667e9d53d1f226950b7438e9118cdc921454443a0f6b44443d29d4e7ebe6de34f7e1f77a3aaf2a2f0cac556d9aa249de1b388 SHA512 8e322ba5508901d2436a00e09fac55040b04ddd5aa82ed50fffd7a24037c5ddab243474ea1a02f32fb55d78fbdbdac46db9b3ef672c5d2d3aaa3e53f252a9c6d +DIST kwin-5.14.3.tar.xz 6573740 BLAKE2B 53d80cf2e2bdb8b74421badddf2c3c7620ddaf337a8f91239c5de8a74efb7c3f4cce1bddda722a93f0d5a89e7639015b3207fb3b5ef483be2781ca742f742d29 SHA512 4ba7a6cc02c1a5e94f4d08c6c72968ecf1e1c72fb9f047e2db014a525d3f6e30b8e16d1dc2043f077e3f63b67362355c456295f7962e1661d667c01e0b22626c EBUILD kwin-5.13.5.ebuild 2660 BLAKE2B 2b4ccd708c175999c1d6699b982705aab487fef681dda1df36c7c80b658cf26c4e28bcd2f4c02aca0938fe8f60e2fab6b064b7f18b4b95705c7639c8a66fd34d SHA512 5eb976f750d8b8d0d30f3d454957512f423a2df194e4d626479dfa8a3b2e8af11726682f2e2a35d40a2e0f772e4f4c727e751eabf5c47814bd1f76c74957f99c -EBUILD kwin-5.14.2.ebuild 2633 BLAKE2B b250135395b592bf38f073284691a62570952393c8e10f7bbabb513f4a12155a65a2d49c35ce9ea22ef02c3ebac645680001b12541cb79cb7666dc936f2db288 SHA512 e6395ce7a4ff1fb1784b2eb34847b36b1c3e890a743f146174c87dedfd3e7663baee2353eb2d2fcec1f9751de90d6726c158e2b8fef04699f5503d2423925e1f +EBUILD kwin-5.14.3-r1.ebuild 2777 BLAKE2B 9f9948fe406a765a9639528b20bb6953b0c66e2adaccd0e76bf321b52569790bbb948eb102279caf044033e02c329653fac467368ec857e38537221a1d76c671 SHA512 87ab7caad1c113eebb6b82ce7de2361e3216f858c20335dbed2f8b31d1b5b3c63fbad826f3396456a9311582930ed2e9e558f76cc4eddbddf77a48587e88d80d +EBUILD kwin-5.14.3.ebuild 2633 BLAKE2B b250135395b592bf38f073284691a62570952393c8e10f7bbabb513f4a12155a65a2d49c35ce9ea22ef02c3ebac645680001b12541cb79cb7666dc936f2db288 SHA512 e6395ce7a4ff1fb1784b2eb34847b36b1c3e890a743f146174c87dedfd3e7663baee2353eb2d2fcec1f9751de90d6726c158e2b8fef04699f5503d2423925e1f MISC metadata.xml 410 BLAKE2B 2e56cbd363ebaea00a040efa12ae0049cee90c9be17b7acdbc96b61ec3452a9b6ad837779259ae7fc506331088fca9a2822afebc035e94bae73bc545ded034c0 SHA512 0aef8e1ddd94f46d2f90a90c5a0408e1068c11684593dc86d1b7681f2be71fbd8f43f33566e15548f17be51da539b8fdd37d173bb5dc65bf74719bc38275d12f diff --git a/kde-plasma/kwin/files/kwin-5.14.3-kcrash-init.patch b/kde-plasma/kwin/files/kwin-5.14.3-kcrash-init.patch new file mode 100644 index 000000000000..fc9c3007f840 --- /dev/null +++ b/kde-plasma/kwin/files/kwin-5.14.3-kcrash-init.patch @@ -0,0 +1,48 @@ +From aace9b1675819feab81d50f694391c7d854d9822 Mon Sep 17 00:00:00 2001 +From: Harald Sitter <sitter@kde.org> +Date: Fri, 16 Nov 2018 12:50:53 +0100 +Subject: actually initialize kcrash for xclipboardsync + +Summary: +to successfully use kcrash when linking with as-needed (which is a default +flag on many linux distros) one also needs to call KCrash::initialize. + +https://markmail.org/thread/zv5pheijaze72bzs + +Test Plan: builds; correctly links kcrash + +Reviewers: davidedmundson + +Reviewed By: davidedmundson + +Subscribers: kwin + +Tags: #kwin + +Differential Revision: https://phabricator.kde.org/D16923 +--- + helpers/xclipboardsync/main.cpp | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/helpers/xclipboardsync/main.cpp b/helpers/xclipboardsync/main.cpp +index 2f06e9c..1a5e5ee 100644 +--- a/helpers/xclipboardsync/main.cpp ++++ b/helpers/xclipboardsync/main.cpp +@@ -19,6 +19,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>. + *********************************************************************/ + #include "waylandclipboard.h" + ++#include <KCrash> + #include <QGuiApplication> + + #include <config-kwin.h> +@@ -40,6 +41,7 @@ int main(int argc, char *argv[]) + argv[0], qPrintable(app.platformName())); + return 1; + } ++ KCrash::initialize(); + new WaylandClipboard(&app); + return app.exec(); + } +-- +cgit v0.11.2 diff --git a/kde-plasma/kwin/files/kwin-5.14.3-resizewindows-crash.patch b/kde-plasma/kwin/files/kwin-5.14.3-resizewindows-crash.patch new file mode 100644 index 000000000000..37963c8395c5 --- /dev/null +++ b/kde-plasma/kwin/files/kwin-5.14.3-resizewindows-crash.patch @@ -0,0 +1,72 @@ +From 406b70b04e093c13faf763e2d885797ae037d806 Mon Sep 17 00:00:00 2001 +From: Vlad Zagorodniy <vladzzag@gmail.com> +Date: Mon, 12 Nov 2018 17:45:14 +0200 +Subject: [wayland] Don't crash when resizing windows + +Summary: +If you resize a decorated client by using the resize user action(press +Alt + F3 > More Actions > Resize), then KWin will crash because it gets +stuck in an infinite loop (AbstractClient::performMoveResize <-> +ShellClient::setGeometry). + +Here's how KWin gets stuck in that loop: +* when you finish resizing the client, AbstractClient::keyPressEvent + will call AbstractClient::finishMoveResize; +* the first thing that finishMoveResize does is block geometry updates, + then it does some clean up (e.g. reset the value of isMoveResize(), etc), + updates the geometry of the client and when it's done, it will emit + clientFinishUserMoveResized signal; +* when PointerInputRedirection notices that signal, it will call + processDecorationMove on the client, which in its turn will indirectly + call AbstractClient::startMoveResize; +* when it's time to go back to AbstractClient::keyPressEvent, geometry + updates are unblocked and if there are any pending geometry updates, + then ShellClient::setGeometry will be called; +* ShellClient::setGeometry will eventually call ShellClient::doSetGeometry; +* ShellClient::doSetGeometry will call AbstractClient::performMoveResize + because AbstractClient::processDecorationMove indirectly called + AbstractClient::startMoveResize; +* AbstractClient::performMoveResize calls ShellClient::setGeometry; +* (at this point, KWin got stuck in the infinite loop) + +This change swaps setMoveResizePointerButtonDown and finishMoveResize, +so processDecorationMove won't indirectly call startMoveResize. + +BUG: 397577 +FIXED-IN: 5.14.4 + +Reviewers: #kwin, davidedmundson + +Reviewed By: #kwin, davidedmundson + +Subscribers: kwin + +Tags: #kwin + +Differential Revision: https://phabricator.kde.org/D16846 +--- + abstract_client.cpp | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/abstract_client.cpp b/abstract_client.cpp +index b4628f2..ed72b9c 100644 +--- a/abstract_client.cpp ++++ b/abstract_client.cpp +@@ -1457,13 +1457,13 @@ void AbstractClient::keyPressEvent(uint key_code) + case Qt::Key_Space: + case Qt::Key_Return: + case Qt::Key_Enter: +- finishMoveResize(false); + setMoveResizePointerButtonDown(false); ++ finishMoveResize(false); + updateCursor(); + break; + case Qt::Key_Escape: +- finishMoveResize(true); + setMoveResizePointerButtonDown(false); ++ finishMoveResize(true); + updateCursor(); + break; + default: +-- +cgit v0.11.2 diff --git a/kde-plasma/kwin/files/kwin-5.14.3-virtualdesktop-crash.patch b/kde-plasma/kwin/files/kwin-5.14.3-virtualdesktop-crash.patch new file mode 100644 index 000000000000..4e480a06be8e --- /dev/null +++ b/kde-plasma/kwin/files/kwin-5.14.3-virtualdesktop-crash.patch @@ -0,0 +1,137 @@ +From ad28da84e78c7eb7ff1e608c4819707b2142daea Mon Sep 17 00:00:00 2001 +From: Vlad Zagorodniy <vladzzag@gmail.com> +Date: Mon, 5 Nov 2018 14:59:42 +0200 +Subject: [effects/slidingpopups] Don't crash when sliding virtual desktops + +Summary: +If you switch virtual desktops while krunner is sliding in, then +depending on whether your distro strips assert statements away, +KWin can crash. + +The reason why it crashes is the sliding popups effect tries to unref +deleted windows that it hasn't referenced before (if there is an active +full screen effect, then popups won't be slided out, which in its turn +means that we won't reference deleted windows). So, in the end, the +refcount of those windows can be -1. That triggers an assert statement +in the destructor of the Deleted class, which checks whether the +refcount is equal to 0. + +Popups are not slided while there is an active full screen effect because +we don't know what the full screen effect does. + +This patch adjusts the sliding popups effect so it stops all active +animations when user switches virtual desktops or when a full screen +effect kicks in. We need to do that so the effect won't try to +unreference windows in postPaintWindow. + +Visually, it doesn't look quite nice, but for now that's good enough. +A proper fix would be more complex: we would need to make sure that +full screen effects ignore sliding popups (and also maybe docks) and +perform some input redirection. + +BUG: 400170 +FIXED-IN: 5.14.4 + +Test Plan: I'm not able anymore to reproduce bug 400170. + +Reviewers: #kwin, graesslin + +Reviewed By: #kwin, graesslin + +Subscribers: davidedmundson, graesslin, kwin + +Tags: #kwin + +Differential Revision: https://phabricator.kde.org/D16731 +--- + effects/slidingpopups/slidingpopups.cpp | 22 ++++++++++++++++++++++ + effects/slidingpopups/slidingpopups.h | 6 +++--- + 2 files changed, 25 insertions(+), 3 deletions(-) + +diff --git a/effects/slidingpopups/slidingpopups.cpp b/effects/slidingpopups/slidingpopups.cpp +index a104a5c..066b2a3 100644 +--- a/effects/slidingpopups/slidingpopups.cpp ++++ b/effects/slidingpopups/slidingpopups.cpp +@@ -3,6 +3,7 @@ + This file is part of the KDE project. + + Copyright (C) 2009 Marco Martin notmart@gmail.com ++Copyright (C) 2018 Vlad Zagorodniy <vladzzag@gmail.com> + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by +@@ -53,6 +54,11 @@ SlidingPopupsEffect::SlidingPopupsEffect() + m_atom = effects->announceSupportProperty(QByteArrayLiteral("_KDE_SLIDE"), this); + } + ); ++ connect(effects, qOverload<int, int, EffectWindow *>(&EffectsHandler::desktopChanged), ++ this, &SlidingPopupsEffect::stopAnimations); ++ connect(effects, &EffectsHandler::activeFullScreenEffectChanged, ++ this, &SlidingPopupsEffect::stopAnimations); ++ + reconfigure(ReconfigureAll); + } + +@@ -434,6 +440,22 @@ void SlidingPopupsEffect::slideOut(EffectWindow *w) + w->addRepaintFull(); + } + ++void SlidingPopupsEffect::stopAnimations() ++{ ++ for (auto it = m_animations.constBegin(); it != m_animations.constEnd(); ++it) { ++ EffectWindow *w = it.key(); ++ ++ if (w->isDeleted()) { ++ w->unrefWindow(); ++ } else { ++ w->setData(WindowForceBackgroundContrastRole, QVariant()); ++ w->setData(WindowForceBlurRole, QVariant()); ++ } ++ } ++ ++ m_animations.clear(); ++} ++ + bool SlidingPopupsEffect::isActive() const + { + return !m_animations.isEmpty(); +diff --git a/effects/slidingpopups/slidingpopups.h b/effects/slidingpopups/slidingpopups.h +index 821640a..32e8fb5 100644 +--- a/effects/slidingpopups/slidingpopups.h ++++ b/effects/slidingpopups/slidingpopups.h +@@ -3,6 +3,7 @@ + This file is part of the KDE project. + + Copyright (C) 2009 Marco Martin notmart@gmail.com ++Copyright (C) 2018 Vlad Zagorodniy <vladzzag@gmail.com> + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by +@@ -49,8 +50,6 @@ public: + + static bool supported(); + +- // TODO react also on virtual desktop changes +- + int slideInDuration() const; + int slideOutDuration() const; + +@@ -62,6 +61,7 @@ private Q_SLOTS: + + void slideIn(EffectWindow *w); + void slideOut(EffectWindow *w); ++ void stopAnimations(); + + private: + void setupAnimData(EffectWindow *w); +@@ -81,7 +81,7 @@ private: + AnimationKind kind; + TimeLine timeLine; + }; +- QHash<const EffectWindow*, Animation> m_animations; ++ QHash<EffectWindow *, Animation> m_animations; + + enum class Location { + Left, +-- +cgit v0.11.2 diff --git a/kde-plasma/kwin/kwin-5.12.7.ebuild b/kde-plasma/kwin/kwin-5.14.3-r1.ebuild index fed669468999..c74288ae8cb1 100644 --- a/kde-plasma/kwin/kwin-5.12.7.ebuild +++ b/kde-plasma/kwin/kwin-5.14.3-r1.ebuild @@ -49,7 +49,7 @@ COMMON_DEPEND=" $(add_qt_dep qtsensors) $(add_qt_dep qtwidgets) $(add_qt_dep qtx11extras) - >=dev-libs/libinput-1.5 + >=dev-libs/libinput-1.9 >=dev-libs/wayland-1.2 media-libs/fontconfig media-libs/freetype @@ -70,7 +70,8 @@ COMMON_DEPEND=" caps? ( sys-libs/libcap ) " RDEPEND="${COMMON_DEPEND} - $(add_plasma_dep kde-cli-tools) + $(add_qt_dep qtquickcontrols) + $(add_qt_dep qtquickcontrols2) $(add_qt_dep qtvirtualkeyboard) multimedia? ( $(add_qt_dep qtmultimedia 'gstreamer,qml') ) !kde-plasma/kwin:4 @@ -81,10 +82,17 @@ DEPEND="${COMMON_DEPEND} $(add_qt_dep qtconcurrent) x11-base/xorg-proto " +PDEPEND=" + $(add_plasma_dep kde-cli-tools) +" RESTRICT+=" test" -PATCHES=( "${FILESDIR}/${PN}-5.10.95-test-optional.patch" ) +PATCHES=( + "${FILESDIR}/${P}-virtualdesktop-crash.patch" + "${FILESDIR}/${P}-resizewindows-crash.patch" + "${FILESDIR}/${P}-kcrash-init.patch" +) src_prepare() { kde5_src_prepare diff --git a/kde-plasma/kwin/kwin-5.14.2.ebuild b/kde-plasma/kwin/kwin-5.14.3.ebuild index d144e2c92230..d144e2c92230 100644 --- a/kde-plasma/kwin/kwin-5.14.2.ebuild +++ b/kde-plasma/kwin/kwin-5.14.3.ebuild |