diff options
author | Johannes Huber <johu@gentoo.org> | 2012-09-05 21:05:45 +0000 |
---|---|---|
committer | Johannes Huber <johu@gentoo.org> | 2012-09-05 21:05:45 +0000 |
commit | c6311653a4f542a36d878408b5efb5260980ada6 (patch) | |
tree | e414908f1ad1feb0b69a5b4e140edab6d93baefe /kde-base | |
parent | initial commit (diff) | |
download | historical-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/ChangeLog | 9 | ||||
-rw-r--r-- | kde-base/kwin/Manifest | 19 | ||||
-rw-r--r-- | kde-base/kwin/files/kwin-4.9.1-tab-freeze.patch | 182 | ||||
-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" |