summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohannes Huber <johu@gentoo.org>2012-09-05 21:05:45 +0000
committerJohannes Huber <johu@gentoo.org>2012-09-05 21:05:45 +0000
commitc6311653a4f542a36d878408b5efb5260980ada6 (patch)
treee414908f1ad1feb0b69a5b4e140edab6d93baefe /kde-base
parentinitial commit (diff)
downloadhistorical-c6311653a4f542a36d878408b5efb5260980ada6.tar.gz
historical-c6311653a4f542a36d878408b5efb5260980ada6.tar.bz2
historical-c6311653a4f542a36d878408b5efb5260980ada6.zip
Revision bump adds upstream patch which fixes an regression, that can causes freezes on tabbing by packagers ml.
Package-Manager: portage-2.2.0_alpha124/cvs/Linux x86_64
Diffstat (limited to 'kde-base')
-rw-r--r--kde-base/kwin/ChangeLog9
-rw-r--r--kde-base/kwin/Manifest19
-rw-r--r--kde-base/kwin/files/kwin-4.9.1-tab-freeze.patch182
-rw-r--r--kde-base/kwin/kwin-4.9.1-r1.ebuild (renamed from kde-base/kwin/kwin-4.9.1.ebuild)4
4 files changed, 203 insertions, 11 deletions
diff --git a/kde-base/kwin/ChangeLog b/kde-base/kwin/ChangeLog
index 269185436477..6c4603c9bf16 100644
--- a/kde-base/kwin/ChangeLog
+++ b/kde-base/kwin/ChangeLog
@@ -1,6 +1,13 @@
# ChangeLog for kde-base/kwin
# Copyright 1999-2012 Gentoo Foundation; Distributed under the GPL v2
-# $Header: /var/cvsroot/gentoo-x86/kde-base/kwin/ChangeLog,v 1.291 2012/09/05 11:21:54 kensington Exp $
+# $Header: /var/cvsroot/gentoo-x86/kde-base/kwin/ChangeLog,v 1.292 2012/09/05 21:05:45 johu Exp $
+
+*kwin-4.9.1-r1 (05 Sep 2012)
+
+ 05 Sep 2012; Johannes Huber <johu@gentoo.org>
+ +files/kwin-4.9.1-tab-freeze.patch, +kwin-4.9.1-r1.ebuild, -kwin-4.9.1.ebuild:
+ Revision bump adds upstream patch which fixes an regression, that can causes
+ freezes on tabbing by packagers ml.
05 Sep 2012; Michael Palimaka <kensington@gentoo.org> kwin-4.9.1.ebuild:
Unrestrict tests wrt bug #428348.
diff --git a/kde-base/kwin/Manifest b/kde-base/kwin/Manifest
index b3a772521c86..9abce4ceb29d 100644
--- a/kde-base/kwin/Manifest
+++ b/kde-base/kwin/Manifest
@@ -1,22 +1,23 @@
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA256
+AUX kwin-4.9.1-tab-freeze.patch 7677 SHA256 137f5a93e8ea224bc2b6faa13d2cfc68e1c58cf053e8f081f57620f40e309f3d SHA512 49aacd9fb73398d6b2852c88602d068ab5706f5dd6c8217c253a5b4ec139dcd8910a94410a213966157392d9ed515e091fc56d866e9c93c80f645d88dfd37c90 WHIRLPOOL efc681982f6b4436aec72f0528d657ed0860013b7729d143e9fe64511b88aa05508c61b12c4314f310ad8d4c6f0bce669d3b69546c2e904982e4a5ec5eacbf1a
DIST kde-workspace-4.8.5.tar.xz 21475948 SHA256 6dcb9ebcb14635e60f304c89c59ec530b030111d15f9e34478883df1be598c5f SHA512 94ceb5c01c2d390d02e07118e8982018893552c1e830789d5927c3dd8b4db615bdec0676b6414e97719796a87735c3034e50ec961b58aaae8b96d477a98f579f WHIRLPOOL 53a2f2a0a0b153c6bf1f5df7dd5970fa1819d4e33270542c01cf4fe7aa9dce578d8c3147512957eefa510533c137a46f5e71688d82a90ceb0c828c23ad86ab47
DIST kde-workspace-4.9.0.tar.xz 22286744 SHA256 c563c6ec8a59e6551913638d89f5df0d898c32937a9ab8ab17d2d5ebd7593ebe SHA512 f6cc4396bf113d2d6f0428832105c86ff11245959597d5676db2fd4850d3a4fa4d42afdf2aaa3cff77f38c1872dbf703a608c5234e779c7c1b8cfdd7bec4cdd3 WHIRLPOOL e4918f61440cd6dacf4ecc86f53c27a4d0d1a6384b96b128f30dc4fff520b9e34117545c66b1e1b95977f3e9b0f596b6afda1c2dc6d2112dec575e2f684d4f0a
DIST kde-workspace-4.9.1.tar.xz 22301292 SHA256 b3d5405f52b0ece3934deb84949aea3ea781ebbf654bfe1f94ce868df7dee257 SHA512 64bf9845637155dfe1f927c66e81d529ffcb3930f0bfd5a925b6eb668b7357fe7065d84c759d67dc67b9f33dd165df8ec79b80389b2aa233fc15ba4f6c65b660 WHIRLPOOL 7e26b7b27fb33682c64f6900304df7f6ca4669134b58381c198472f0ed637626b9bfa17851cae93fdcece535418f683b4ccaa7fa1b9a7772cac8fa3e21aa09b2
EBUILD kwin-4.8.5.ebuild 1557 SHA256 932656b91463c57f6bac0d6571c9e19288ad6162c37e696ea18393b0ae1ca8fa SHA512 d015c9e2103d41120a40a76334d1744693fc95ea526197afbd0ce66c7fbfb83eab8e6a3b34bef1b537eac3014033938c80deb1797c1b5aacfa43bc561c816855 WHIRLPOOL 83cfca366ffe6deab1e36f8615434828ac552a3f5a62c0c46777bf2fd30b7791034a412d5792022b6efec70ae6134845c035875a9c12e53ceb12cd698355feed
EBUILD kwin-4.9.0.ebuild 1566 SHA256 31b184a6e4d7342aa3a78dc0bc7c3759d77bea10920335c8bbf86ca8e57f7302 SHA512 40d30a3f4986ab9162e2190092e0aca2c05111184f87e382a003680e3dda21e6e7294647f6b71c7bcb22502ce99e9b17d4f445d313ee3de474057171fd1087af WHIRLPOOL d81014a79934df50717eb8b0a886874f86d46667cd24b3f9698b098b7584887572fbe0fe0b11696e249ef0f8cbe264345329dad9b7743ed8892072aa02e528fe
-EBUILD kwin-4.9.1.ebuild 1544 SHA256 22253e1195c48132b100d6f7517bf4fd3cc67656766cb14ac5ca1cd6bd5fccaa SHA512 c0d9712180edbdf615e29dc6f212e2fe1fa677fe1269652e433cced12bc6e92ed7a33af7dd9774af011940ccc85ea013801ff861f4e2e0ebfb0ca906a1379c62 WHIRLPOOL d61c8b40439a8ef03517f33ebbbeb81683d088c72db8f6e50fc183d3be8eb99bf3ba87f69d49694e4425191e1d08f44ee54767de76472b88e23fb2727ccfdab3
-MISC ChangeLog 35657 SHA256 488e51eda6e206053b19eb787cb0c24ef11fa6edc8d581e1c1ca4ee98e6f4898 SHA512 c0c345923e06a822a96080eea2fc2ddf7dcdda68ab0f351347d4fbbf5711e4abe79fa9eb6d682f020c19a2c9faedd08d568303556fbdc289858f4ebc909507e0 WHIRLPOOL 787d5002ecfe3829f2daedf553febbc0337fefec96236b66fcaa93c1bc7e1a0cd52512b9ef47bc39f6f7ea81454eb277d91a0ecbb4b4a2df9253fb3775d13d2c
+EBUILD kwin-4.9.1-r1.ebuild 1588 SHA256 f1d0d245c983a0d5e2f17fe396ca605d44b1f5b2a3c27445756b8fa43cebd5b2 SHA512 31cb5992e5943cccfa88ea9b422d6cd1a9c9960782ee59421f68e899eb4309f345978a419ce1439589ba616afffe5ba378a4bbaee6ce14ee6fa320ad9850e98d WHIRLPOOL 6adbdcdcfc8ad388bd92ff4da628014c451c935f89bd4ffad7a1a5222e2612f2dd7aa08125107088e7e671d577a464b491dfc1bd8aa3a98ec6fd0fde48d7ec36
+MISC ChangeLog 35928 SHA256 dbd8f9b719e92c065597903cbf41dd9cc4658d719e59b975a4b181722bb29d22 SHA512 b47eca7332e7e9b3359858d074156b20a61f447e04bf9858a497717e4bc1d8154da694c26a95170f76be7117c60ea3e8c69c1e67d8b4749151010b0ba4d8731a WHIRLPOOL 796354d8fe55b408320ad4f65456ffb23d912593d18b1ce07fec342549fbf5ac63efc08104e9775b0f755a449cc7895bc4188935988e93faa8f6dc4e017df1d4
MISC metadata.xml 229 SHA256 1cd96488355a3e48a2b0b12f09ad8e3ea923e199b4fcbf175590cd317b033af7 SHA512 357e165f3706a18dbab9ce108b28d7b3338e3a458fb9d184d701e7fd932f41d1abdc7785bdd22003b2bd2d702674b3dcc206b39e141d8c3adfda7d6d1d1ec0d8 WHIRLPOOL fd66f59afef8829e84f2be5f0782511e6b16dbd811d432205eaf629470055d1d4173d135a59b95668500c4b4cb15bcf9f6230e96aecf5f0e1d5338d4d4881018
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2.0.19 (GNU/Linux)
-iQEcBAEBCAAGBQJQRzWoAAoJEMbwO6tnXQ0sMm8H+wWvpKhaYoT6zoWzSHB72jhX
-DmLZpVvM4WBnGzsXV6jpRcjXw4RVULZZ4cH9QFsqu24U3t5rw5kBUd8ghYf8RW0Q
-lGKSp0N58e/1lJ906XPoNdRvXY81YyhrZ2+nyC7Uvt+zsEVRtm0XS7VABtAmCyor
-8z6nwZaDMelUBSpFxKI7nL4Aeq4d9HZyB6g9vTdY6Mqel92RUmfgTR2IYtPlriFe
-gosLK4pUxJf3oWgQNefYsags5N7otGzQG8gZq747xejMsDWNA/18r7th0POHI7iN
-G44fEpt3b2F6aDwBGWhw50rJtHNvb+GhGJtw+g9KdEzJ2F3qmgzPahNYwftoZwA=
-=PoUi
+iQEcBAEBCAAGBQJQR76yAAoJEO+t9ga+3I3aU4AH/iy4SanezYbW4JOrUqURYBkq
+YE8fRBG8+hEIfJZOQo9e45eFDXLbbrVCMHNSyYC9khb+4jeCz0ZVkLaq+6y5UK32
+PjSWZrsqDj495C564hKXb+LjK0qugbDmJ2tZz1nt+L1WUDs5qz+chfq0x/UVPjwK
+ARDgRYGp+IOhteusqcL3JHc3QUQWQ6lZi6Py47YWP0qmau1sgu0+yrMi3YOYcukO
+/+MgjEU+x6lAfFZ8N538NcDW/Eouy+kYqnwUv1JV5MYD0i6zFSn8se7L7tW8ewun
+Z+3fWU21MwQVVntYOyW5VkNPp1EtHTyhq+H9x/R0SO12heyZTpkrd1xpNMuZcfE=
+=tnjx
-----END PGP SIGNATURE-----
diff --git a/kde-base/kwin/files/kwin-4.9.1-tab-freeze.patch b/kde-base/kwin/files/kwin-4.9.1-tab-freeze.patch
new file mode 100644
index 000000000000..8f944903e15c
--- /dev/null
+++ b/kde-base/kwin/files/kwin-4.9.1-tab-freeze.patch
@@ -0,0 +1,182 @@
+commit 8452e6c3f01a65953705087e0d7ada87e2cc6997
+Author: Martin Gräßlin <mgraesslin@kde.org>
+Date: Wed Sep 5 20:55:07 2012 +0200
+
+ Ensure that the start Client to build up the ClientModel is in the Focus Chain
+
+ If the start Client is not part of the focus chain the call to
+ nextClientFocusChain() cannot return the Client again. So the loop break
+ condition is never reached and as the focus chain is not empty the call
+ always returns a not null Client which means KWin is caught in an endless
+ loop.
+
+ This change checks that the starting Client is in the focus chain and if
+ not the first Client of the focus chain is used.
+
+ BUG: 306260
+ BUG: 306275
+ FIXED-IN: 4.9.2
+
+diff --git a/kwin/tabbox/clientmodel.cpp b/kwin/tabbox/clientmodel.cpp
+index 9591bab..a67d979 100644
+--- a/kwin/tabbox/clientmodel.cpp
++++ b/kwin/tabbox/clientmodel.cpp
+@@ -188,7 +188,7 @@ void ClientModel::createClientList(int desktop, bool partialReset)
+ switch(tabBox->config().clientSwitchingMode()) {
+ case TabBoxConfig::FocusChainSwitching: {
+ TabBoxClient* c = start;
+- if (!c) {
++ if (!tabBox->isInFocusChain(c)) {
+ QSharedPointer<TabBoxClient> firstClient = tabBox->firstClientFocusChain().toStrongRef();
+ if (firstClient) {
+ c = firstClient.data();
+diff --git a/kwin/tabbox/tabbox.cpp b/kwin/tabbox/tabbox.cpp
+index d96d0bd..7a08d37 100644
+--- a/kwin/tabbox/tabbox.cpp
++++ b/kwin/tabbox/tabbox.cpp
+@@ -112,6 +112,14 @@ QWeakPointer< TabBoxClient > TabBoxHandlerImpl::firstClientFocusChain() const
+ }
+ }
+
++bool TabBoxHandlerImpl::isInFocusChain(TabBoxClient *client) const
++{
++ if (TabBoxClientImpl *c = static_cast<TabBoxClientImpl*>(client)) {
++ return Workspace::self()->globalFocusChain().contains(c->client());
++ }
++ return false;
++}
++
+ int TabBoxHandlerImpl::nextDesktopFocusChain(int desktop) const
+ {
+ return m_tabBox->nextDesktopFocusChain(desktop);
+diff --git a/kwin/tabbox/tabbox.h b/kwin/tabbox/tabbox.h
+index 6652f93..bba0b39 100644
+--- a/kwin/tabbox/tabbox.h
++++ b/kwin/tabbox/tabbox.h
+@@ -52,6 +52,7 @@ public:
+ virtual QString desktopName(int desktop) const;
+ virtual QWeakPointer< TabBoxClient > nextClientFocusChain(TabBoxClient* client) const;
+ virtual QWeakPointer< TabBoxClient > firstClientFocusChain() const;
++ virtual bool isInFocusChain (TabBoxClient* client) const;
+ virtual int nextDesktopFocusChain(int desktop) const;
+ virtual int numberOfDesktops() const;
+ virtual TabBoxClientList stackingOrder() const;
+diff --git a/kwin/tabbox/tabboxhandler.h b/kwin/tabbox/tabboxhandler.h
+index 7abddfc..2af65b2 100644
+--- a/kwin/tabbox/tabboxhandler.h
++++ b/kwin/tabbox/tabboxhandler.h
+@@ -120,6 +120,20 @@ public:
+ **/
+ virtual QWeakPointer<TabBoxClient> firstClientFocusChain() const = 0;
+ /**
++ * Checks whether the given @p client is part of the focus chain at all.
++ * This is useful to figure out whether the currently active Client can be used
++ * as a starting point to construct the recently used list.
++ *
++ * In case the @p client is not in the focus chain it is recommended to use the
++ * Client returned by @link firstClientFocusChain.
++ *
++ * The method accepts a @c null Client and in that case @c false is returned.
++ * @param client The Client to check whether it is in the Focus Chain
++ * @return @c true in case the Client is part of the focus chain, @c false otherwise.
++ * @since 4.9.2
++ **/
++ virtual bool isInFocusChain(TabBoxClient* client) const = 0;
++ /**
+ * @param client The client whose desktop name should be retrieved
+ * @return The desktop name of the given TabBoxClient. If the client is
+ * on all desktops the name of current desktop will be returned.
+diff --git a/kwin/tabbox/tests/mock_tabboxhandler.cpp b/kwin/tabbox/tests/mock_tabboxhandler.cpp
+index c3ad7a9..20fe8e8 100644
+--- a/kwin/tabbox/tests/mock_tabboxhandler.cpp
++++ b/kwin/tabbox/tests/mock_tabboxhandler.cpp
+@@ -72,6 +72,9 @@ QWeakPointer< TabBox::TabBoxClient > MockTabBoxHandler::nextClientFocusChain(Tab
+ }
+ }
+ }
++ if (!m_windows.isEmpty()) {
++ return QWeakPointer< TabBox::TabBoxClient >(m_windows.last());
++ }
+ return QWeakPointer< TabBox::TabBoxClient >();
+ }
+
+@@ -83,6 +86,20 @@ QWeakPointer< TabBox::TabBoxClient > MockTabBoxHandler::firstClientFocusChain()
+ return m_windows.first();
+ }
+
++bool MockTabBoxHandler::isInFocusChain(TabBox::TabBoxClient *client) const
++{
++ if (!client) {
++ return false;
++ }
++ QList< QSharedPointer< TabBox::TabBoxClient > >::const_iterator it = m_windows.constBegin();
++ for (; it != m_windows.constEnd(); ++it) {
++ if ((*it).data() == client) {
++ return true;
++ }
++ }
++ return false;
++}
++
+ QWeakPointer< TabBox::TabBoxClient > MockTabBoxHandler::createMockWindow(const QString &caption, WId id)
+ {
+ QSharedPointer< TabBox::TabBoxClient > client(new MockTabBoxClient(caption, id));
+diff --git a/kwin/tabbox/tests/mock_tabboxhandler.h b/kwin/tabbox/tests/mock_tabboxhandler.h
+index a223648..5578001 100644
+--- a/kwin/tabbox/tests/mock_tabboxhandler.h
++++ b/kwin/tabbox/tests/mock_tabboxhandler.h
+@@ -60,6 +60,7 @@ public:
+ }
+ virtual QWeakPointer< TabBox::TabBoxClient > nextClientFocusChain(TabBox::TabBoxClient *client) const;
+ virtual QWeakPointer<TabBox::TabBoxClient> firstClientFocusChain() const;
++ virtual bool isInFocusChain (TabBox::TabBoxClient* client) const;
+ virtual int nextDesktopFocusChain(int desktop) const {
+ Q_UNUSED(desktop)
+ return 1;
+diff --git a/kwin/tabbox/tests/test_tabbox_clientmodel.cpp b/kwin/tabbox/tests/test_tabbox_clientmodel.cpp
+index 79d0253..cee9860 100644
+--- a/kwin/tabbox/tests/test_tabbox_clientmodel.cpp
++++ b/kwin/tabbox/tests/test_tabbox_clientmodel.cpp
+@@ -63,4 +63,24 @@ void TestTabBoxClientModel::testCreateClientListNoActiveClient()
+ QCOMPARE(clientModel->rowCount(), 2);
+ }
+
++void TestTabBoxClientModel::testCreateClientListActiveClientNotInFocusChain()
++{
++ MockTabBoxHandler tabboxhandler;
++ tabboxhandler.setConfig(TabBox::TabBoxConfig());
++ TabBox::ClientModel *clientModel = new TabBox::ClientModel(&tabboxhandler);
++ // create two windows, rowCount() should go to two
++ QWeakPointer<TabBox::TabBoxClient> client = tabboxhandler.createMockWindow(QString("test"), 1);
++ client = tabboxhandler.createMockWindow(QString("test2"), 2);
++ clientModel->createClientList();
++ QCOMPARE(clientModel->rowCount(), 2);
++
++ // simulate that the active client is not in the focus chain
++ // for that we use the closeWindow of the MockTabBoxHandler which
++ // removes the Client from the Focus Chain but leaves the active window as it is
++ QSharedPointer<TabBox::TabBoxClient> clientOwner = client.toStrongRef();
++ tabboxhandler.closeWindow(client.data());
++ clientModel->createClientList();
++ QCOMPARE(clientModel->rowCount(), 1);
++}
++
+ QTEST_MAIN(TestTabBoxClientModel)
+diff --git a/kwin/tabbox/tests/test_tabbox_clientmodel.h b/kwin/tabbox/tests/test_tabbox_clientmodel.h
+index 2ec6608..fad7987 100644
+--- a/kwin/tabbox/tests/test_tabbox_clientmodel.h
++++ b/kwin/tabbox/tests/test_tabbox_clientmodel.h
+@@ -40,6 +40,13 @@ private slots:
+ * See BUG: 305449
+ **/
+ void testCreateClientListNoActiveClient();
++ /**
++ * Tests the creation of the Client list for the case that
++ * the active Client is not in the Focus chain.
++ *
++ * See BUG: 306260
++ **/
++ void testCreateClientListActiveClientNotInFocusChain();
+ };
+
+ #endif
diff --git a/kde-base/kwin/kwin-4.9.1.ebuild b/kde-base/kwin/kwin-4.9.1-r1.ebuild
index d9773398abf0..f118f6ae5ae2 100644
--- a/kde-base/kwin/kwin-4.9.1.ebuild
+++ b/kde-base/kwin/kwin-4.9.1-r1.ebuild
@@ -1,6 +1,6 @@
# Copyright 1999-2012 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
-# $Header: /var/cvsroot/gentoo-x86/kde-base/kwin/kwin-4.9.1.ebuild,v 1.2 2012/09/05 11:21:54 kensington Exp $
+# $Header: /var/cvsroot/gentoo-x86/kde-base/kwin/kwin-4.9.1-r1.ebuild,v 1.1 2012/09/05 21:05:45 johu Exp $
EAPI=4
@@ -49,6 +49,8 @@ KMEXTRACTONLY="
# you need one of these
REQUIRED_USE="!opengl? ( gles ) !gles? ( opengl )"
+PATCHES=("${FILESDIR}/${P}-tab-freeze.patch")
+
src_configure() {
# FIXME Remove when activity API moved away from libkworkspace
append-cppflags "-I${EPREFIX}/usr/include/kworkspace"