summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTomas Chvatal <scarabeus@gentoo.org>2008-12-11 13:32:30 +0000
committerTomas Chvatal <scarabeus@gentoo.org>2008-12-11 13:32:30 +0000
commit72afe5bad1c7b30020e6ae4c83eb7b7d9434fac7 (patch)
treeda4d41505eca81e45274ed6a79d4b37ac029294d /kde-base/kdelibs
parentFix building with gcj-jdk. (diff)
downloadgentoo-2-72afe5bad1c7b30020e6ae4c83eb7b7d9434fac7.tar.gz
gentoo-2-72afe5bad1c7b30020e6ae4c83eb7b7d9434fac7.tar.bz2
gentoo-2-72afe5bad1c7b30020e6ae4c83eb7b7d9434fac7.zip
Fix bug #246568.
(Portage version: 2.2_rc17/cvs/Linux 2.6.27-gentoo x86_64)
Diffstat (limited to 'kde-base/kdelibs')
-rw-r--r--kde-base/kdelibs/ChangeLog6
-rw-r--r--kde-base/kdelibs/files/kdelibs-4.1.3-gcc4.1.patch238
-rw-r--r--kde-base/kdelibs/kdelibs-4.1.3-r1.ebuild5
3 files changed, 246 insertions, 3 deletions
diff --git a/kde-base/kdelibs/ChangeLog b/kde-base/kdelibs/ChangeLog
index fcecea60699f..59eb0c047b72 100644
--- a/kde-base/kdelibs/ChangeLog
+++ b/kde-base/kdelibs/ChangeLog
@@ -1,6 +1,10 @@
# ChangeLog for kde-base/kdelibs
# Copyright 1999-2008 Gentoo Foundation; Distributed under the GPL v2
-# $Header: /var/cvsroot/gentoo-x86/kde-base/kdelibs/ChangeLog,v 1.549 2008/11/16 05:04:28 vapier Exp $
+# $Header: /var/cvsroot/gentoo-x86/kde-base/kdelibs/ChangeLog,v 1.550 2008/12/11 13:32:29 scarabeus Exp $
+
+ 11 Dec 2008; Tomas Chvatal <scarabeus@gentoo.org>
+ +files/kdelibs-4.1.3-gcc4.1.patch, kdelibs-4.1.3-r1.ebuild:
+ Fix bug #246568
15 Nov 2008; Mike Frysinger <vapier@gentoo.org> kdelibs-4.1.3.ebuild,
kdelibs-4.1.3-r1.ebuild:
diff --git a/kde-base/kdelibs/files/kdelibs-4.1.3-gcc4.1.patch b/kde-base/kdelibs/files/kdelibs-4.1.3-gcc4.1.patch
new file mode 100644
index 000000000000..8c374320282d
--- /dev/null
+++ b/kde-base/kdelibs/files/kdelibs-4.1.3-gcc4.1.patch
@@ -0,0 +1,238 @@
+--- trunk/KDE/kdelibs/kio/kio/kdirlister.cpp 2008/10/04 15:04:07 867819
++++ trunk/KDE/kdelibs/kio/kio/kdirlister.cpp 2008/10/04 15:06:31 867820
+@@ -157,7 +157,7 @@
+
+ DirItem *itemU = itemsInUse.value(urlStr);
+
+- DirectoryData& dirData = directoryData[urlStr]; // find or insert
++ KDirListerCacheDirectoryData& dirData = directoryData[urlStr]; // find or insert
+
+ if (dirData.listersCurrentlyListing.isEmpty()) {
+ // if there is an update running for _url already we get into
+@@ -290,7 +290,7 @@
+ kdl->addNewItems( items );
+ kdl->emitItems();
+
+- DirectoryData& dirData = directoryData[urlStr];
++ KDirListerCacheDirectoryData& dirData = directoryData[urlStr];
+ Q_ASSERT(dirData.listersCurrentlyListing.contains(lister));
+
+ // Emit completed, unless we were told not to,
+@@ -345,10 +345,10 @@
+ //kDebug(7004) << "lister: " << lister;
+ bool stopped = false;
+
+- QHash<QString,DirectoryData>::iterator dirit = directoryData.begin();
+- const QHash<QString,DirectoryData>::iterator dirend = directoryData.end();
++ QHash<QString,KDirListerCacheDirectoryData>::iterator dirit = directoryData.begin();
++ const QHash<QString,KDirListerCacheDirectoryData>::iterator dirend = directoryData.end();
+ for( ; dirit != dirend ; ++dirit ) {
+- DirectoryData& dirData = dirit.value();
++ KDirListerCacheDirectoryData& dirData = dirit.value();
+ if ( dirData.listersCurrentlyListing.removeAll(lister) ) { // contains + removeAll in one go
+ // lister is listing url
+ const QString url = dirit.key();
+@@ -388,10 +388,10 @@
+ // TODO: consider to stop all the "child jobs" of url as well
+ kDebug(7004) << lister << " url=" << url;
+
+- QHash<QString,DirectoryData>::iterator dirit = directoryData.find(urlStr);
++ QHash<QString,KDirListerCacheDirectoryData>::iterator dirit = directoryData.find(urlStr);
+ if (dirit == directoryData.end())
+ return;
+- DirectoryData& dirData = dirit.value();
++ KDirListerCacheDirectoryData& dirData = dirit.value();
+ if ( dirData.listersCurrentlyListing.removeAll(lister) ) { // contains + removeAll in one go
+
+ stopLister(lister, urlStr, dirData);
+@@ -405,7 +405,7 @@
+ }
+
+ // Helper for both stop() methods
+-void KDirListerCache::stopLister(KDirLister* lister, const QString& url, DirectoryData& dirData)
++void KDirListerCache::stopLister(KDirLister* lister, const QString& url, KDirListerCacheDirectoryData& dirData)
+ {
+ kDebug(7004) << "stopping lister" << lister << url;
+ KIO::ListJob *job = jobForUrl( url );
+@@ -484,7 +484,7 @@
+ DirectoryDataHash::iterator dit = directoryData.find(urlStr);
+ if (dit == directoryData.end())
+ return;
+- DirectoryData& dirData = *dit;
++ KDirListerCacheDirectoryData& dirData = *dit;
+ dirData.listersCurrentlyHolding.removeAll(lister);
+
+ DirItem *item = itemsInUse.value(urlStr);
+@@ -573,7 +573,7 @@
+ // - only update a directory: the listers are in listersCurrentlyHolding
+ // - update a currently running listing: the listers are in both
+
+- DirectoryData& dirData = directoryData[urlStr];
++ KDirListerCacheDirectoryData& dirData = directoryData[urlStr];
+ QList<KDirLister *> listers = dirData.listersCurrentlyListing;
+ QList<KDirLister *> holders = dirData.listersCurrentlyHolding;
+
+@@ -990,7 +990,7 @@
+
+ DirectoryDataHash::iterator dit = directoryData.find(urlStr);
+ Q_ASSERT(dit != directoryData.end());
+- DirectoryData& dirData = *dit;
++ KDirListerCacheDirectoryData& dirData = *dit;
+ Q_ASSERT( !dirData.listersCurrentlyListing.isEmpty() );
+
+ // check if anyone wants the mimetypes immediately
+@@ -1050,7 +1050,7 @@
+
+ DirectoryDataHash::iterator dit = directoryData.find(jobUrlStr);
+ Q_ASSERT(dit != directoryData.end());
+- DirectoryData& dirData = *dit;
++ KDirListerCacheDirectoryData& dirData = *dit;
+ Q_ASSERT( !dirData.listersCurrentlyListing.isEmpty() );
+ QList<KDirLister *> listers = dirData.listersCurrentlyListing;
+
+@@ -1137,7 +1137,7 @@
+
+ DirectoryDataHash::iterator dit = directoryData.find(oldUrlStr);
+ Q_ASSERT(dit != directoryData.end());
+- DirectoryData oldDirData = *dit;
++ KDirListerCacheDirectoryData oldDirData = *dit;
+ directoryData.erase(dit);
+ Q_ASSERT( !oldDirData.listersCurrentlyListing.isEmpty() );
+ const QList<KDirLister *> listers = oldDirData.listersCurrentlyListing;
+@@ -1172,7 +1172,7 @@
+
+ // listers of newUrl with oldJob: forget about the oldJob and use the already running one
+ // which will be converted to an updateJob
+- DirectoryData& newDirData = directoryData[newUrlStr];
++ KDirListerCacheDirectoryData& newDirData = directoryData[newUrlStr];
+
+ QList<KDirLister *>& curListers = newDirData.listersCurrentlyListing;
+ if ( !curListers.isEmpty() ) {
+@@ -1229,7 +1229,7 @@
+
+ delete dir;
+ itemsInUse.insert( newUrlStr, newDir );
+- DirectoryData& newDirData = directoryData[newUrlStr];
++ KDirListerCacheDirectoryData& newDirData = directoryData[newUrlStr];
+ newDirData.listersCurrentlyListing = listers;
+ newDirData.listersCurrentlyHolding = holders;
+
+@@ -1248,7 +1248,7 @@
+ dir->lstItems.clear();
+ dir->redirect( newUrl );
+ itemsInUse.insert( newUrlStr, dir );
+- DirectoryData& newDirData = directoryData[newUrlStr];
++ KDirListerCacheDirectoryData& newDirData = directoryData[newUrlStr];
+ newDirData.listersCurrentlyListing = listers;
+ newDirData.listersCurrentlyHolding = holders;
+
+@@ -1361,7 +1361,7 @@
+ const QList<KDirLister *> listers = (*dit).listersCurrentlyListing;
+ const QList<KDirLister *> holders = (*dit).listersCurrentlyHolding;
+
+- DirectoryData& newDirData = directoryData[newUrlStr];
++ KDirListerCacheDirectoryData& newDirData = directoryData[newUrlStr];
+
+ // Tell the world that the job listing the old url is dead.
+ foreach ( KDirLister *kdl, listers ) {
+@@ -1427,7 +1427,7 @@
+
+ kDebug(7004) << "finished update" << jobUrl;
+
+- DirectoryData& dirData = directoryData[jobUrlStr];
++ KDirListerCacheDirectoryData& dirData = directoryData[jobUrlStr];
+ // Collect the dirlisters which were listing the URL using that ListJob
+ // plus those that were already holding that URL - they all get updated.
+ dirData.moveListersWithoutCachedItemsJob();
+@@ -2503,7 +2503,7 @@
+ }
+ }
+
+-void KDirListerCache::DirectoryData::moveListersWithoutCachedItemsJob()
++void KDirListerCacheDirectoryData::moveListersWithoutCachedItemsJob()
+ {
+ // Move dirlisters from listersCurrentlyListing to listersCurrentlyHolding,
+ // but not those that are still waiting on a CachedItemsJob...
+--- trunk/KDE/kdelibs/kio/kio/kdirlister.h 2008/10/04 15:04:07 867819
++++ trunk/KDE/kdelibs/kio/kio/kdirlister.h 2008/10/04 15:06:31 867820
+@@ -57,6 +57,7 @@
+ class KIO_EXPORT KDirLister : public QObject
+ {
+ friend class KDirListerCache;
++ friend struct KDirListerCacheDirectoryData;
+
+ Q_OBJECT
+ Q_PROPERTY( bool autoUpdate READ autoUpdate WRITE setAutoUpdate )
+--- trunk/KDE/kdelibs/kio/kio/kdirlister_p.h 2008/10/04 15:04:07 867819
++++ trunk/KDE/kdelibs/kio/kio/kdirlister_p.h 2008/10/04 15:06:31 867820
+@@ -36,7 +36,7 @@
+ class KDirLister;
+ namespace KIO { class Job; class ListJob; }
+ class OrgKdeKDirNotifyInterface;
+-
++struct KDirListerCacheDirectoryData;
+
+ class KDirLister::Private
+ {
+@@ -237,8 +237,7 @@
+ bool validUrl( const KDirLister *lister, const KUrl& _url ) const;
+
+ // helper for both stop methods
+- struct DirectoryData;
+- void stopLister(KDirLister* lister, const QString& url, DirectoryData& dirData);
++ void stopLister(KDirLister* lister, const QString& url, KDirListerCacheDirectoryData& dirData);
+
+ KIO::ListJob *jobForUrl( const QString& url, KIO::ListJob *not_job = 0 );
+ const KUrl& joburl( KIO::ListJob *job );
+@@ -369,25 +368,7 @@
+ QHash<QString /*url*/, DirItem*> itemsInUse;
+ QCache<QString /*url*/, DirItem> itemsCached;
+
+- // Data associated with a directory url
+- // This could be in DirItem but only in the itemsInUse dict...
+- struct DirectoryData
+- {
+- // A lister can be EITHER in listersCurrentlyListing OR listersCurrentlyHolding
+- // but NOT in both at the same time.
+- // But both lists can have different listers at the same time; this
+- // happens if more listers are requesting url at the same time and
+- // one lister was stopped during the listing of files.
+-
+- // Listers that are currently listing this url
+- QList<KDirLister *> listersCurrentlyListing;
+- // Listers that are currently holding this url
+- QList<KDirLister *> listersCurrentlyHolding;
+-
+- void moveListersWithoutCachedItemsJob();
+- };
+-
+- typedef QHash<QString /*url*/, DirectoryData> DirectoryDataHash;
++ typedef QHash<QString /*url*/, KDirListerCacheDirectoryData> DirectoryDataHash;
+ DirectoryDataHash directoryData;
+
+ // List of files that we have changed recently
+@@ -399,6 +380,24 @@
+ OrgKdeKDirNotifyInterface *kdirnotify;
+ };
+
++// Data associated with a directory url
++// This could be in DirItem but only in the itemsInUse dict...
++struct KDirListerCacheDirectoryData
++{
++ // A lister can be EITHER in listersCurrentlyListing OR listersCurrentlyHolding
++ // but NOT in both at the same time.
++ // But both lists can have different listers at the same time; this
++ // happens if more listers are requesting url at the same time and
++ // one lister was stopped during the listing of files.
++
++ // Listers that are currently listing this url
++ QList<KDirLister *> listersCurrentlyListing;
++ // Listers that are currently holding this url
++ QList<KDirLister *> listersCurrentlyHolding;
++
++ void moveListersWithoutCachedItemsJob();
++};
++
+ //const unsigned short KDirListerCache::MAX_JOBS_PER_LISTER = 5;
+
+ // This job tells KDirListerCache to emit cached items asynchronously from listDir()
diff --git a/kde-base/kdelibs/kdelibs-4.1.3-r1.ebuild b/kde-base/kdelibs/kdelibs-4.1.3-r1.ebuild
index f54f12d324f3..dbb3a31b25f5 100644
--- a/kde-base/kdelibs/kdelibs-4.1.3-r1.ebuild
+++ b/kde-base/kdelibs/kdelibs-4.1.3-r1.ebuild
@@ -1,6 +1,6 @@
# Copyright 1999-2008 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
-# $Header: /var/cvsroot/gentoo-x86/kde-base/kdelibs/kdelibs-4.1.3-r1.ebuild,v 1.2 2008/11/16 05:04:28 vapier Exp $
+# $Header: /var/cvsroot/gentoo-x86/kde-base/kdelibs/kdelibs-4.1.3-r1.ebuild,v 1.3 2008/12/11 13:32:30 scarabeus Exp $
EAPI="2"
@@ -74,7 +74,8 @@ RDEPEND="${COMMONDEPEND}
x11-apps/iceauth
"
-PATCHES=( "${FILESDIR}/${PN}-4.1.1-cmake-modules.patch" "${FILESDIR}/${PV}-cmake-config.patch" )
+PATCHES=( "${FILESDIR}/${PN}-4.1.1-cmake-modules.patch" "${FILESDIR}/${PV}-cmake-config.patch"
+ "${FILESDIR}/${P}-gcc4.1.patch" )
src_configure() {
if use zeroconf; then