summaryrefslogtreecommitdiff
path: root/kde-plasma/kwin/files/kwin-5.14.3-virtualdesktop-crash.patch
diff options
context:
space:
mode:
Diffstat (limited to 'kde-plasma/kwin/files/kwin-5.14.3-virtualdesktop-crash.patch')
-rw-r--r--kde-plasma/kwin/files/kwin-5.14.3-virtualdesktop-crash.patch137
1 files changed, 0 insertions, 137 deletions
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
deleted file mode 100644
index 4e480a06be8e..000000000000
--- a/kde-plasma/kwin/files/kwin-5.14.3-virtualdesktop-crash.patch
+++ /dev/null
@@ -1,137 +0,0 @@
-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