diff options
author | Benjamin C Meyer <benjamin.meyer@torchmobile.com> | 2009-04-29 11:15:25 -0400 |
---|---|---|
committer | Thiago Macieira <thiago.macieira@nokia.com> | 2009-05-18 16:23:45 +0200 |
commit | e5755e131952ab5c3c8dd0fd6a88dbaa7148898a (patch) | |
tree | 6808d3cf1087d813a37e12e894ff47d399427506 /src/network | |
parent | ef310a8cf2067a2fe21d6812cf34fb8aaad74f48 (diff) |
Fix QNetworkDiskCache to expire the oldest files first.
When expiring cache files use a QMultiMap, when using a QMap not all
files are put into the map because often many files (downloaded or
updated at the same time) will have the same creation QDateTime and
so only one will go into the QMap who's key is QDateTime.
Reviewed-By: Thiago Macieira
Reviewed-By: Peter Hartmann
Diffstat (limited to 'src/network')
-rw-r--r-- | src/network/access/qnetworkdiskcache.cpp | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/src/network/access/qnetworkdiskcache.cpp b/src/network/access/qnetworkdiskcache.cpp index 892929e6e2..44a82988d0 100644 --- a/src/network/access/qnetworkdiskcache.cpp +++ b/src/network/access/qnetworkdiskcache.cpp @@ -494,21 +494,21 @@ qint64 QNetworkDiskCache::expire() QDir::Filters filters = QDir::AllDirs | QDir:: Files | QDir::NoDotAndDotDot; QDirIterator it(cacheDirectory(), filters, QDirIterator::Subdirectories); - QMap<QDateTime, QString> cacheItems; + QMultiMap<QDateTime, QString> cacheItems; qint64 totalSize = 0; while (it.hasNext()) { QString path = it.next(); QFileInfo info = it.fileInfo(); QString fileName = info.fileName(); if (fileName.endsWith(CACHE_POSTFIX) && fileName.startsWith(CACHE_PREFIX)) { - cacheItems[info.created()] = path; + cacheItems.insert(info.created(), path); totalSize += info.size(); } } int removedFiles = 0; qint64 goal = (maximumCacheSize() * 9) / 10; - QMap<QDateTime, QString>::const_iterator i = cacheItems.constBegin(); + QMultiMap<QDateTime, QString>::const_iterator i = cacheItems.constBegin(); while (i != cacheItems.constEnd()) { if (totalSize < goal) break; |