QPixmapCache: DRY insert()
Implement insert(QString, QPixmap) in terms of insert(QPixmap) to avoid duplicating code and to separate concerns: insert(QString, QPixmap) is now only dealing with the cacheKeys, insert(QPixmap) is only concerned with the Key-based lookup. Task-number: QTBUG-112200 Change-Id: I30394da43a5e93b7bd41ef9ce9c7aea044523c30 Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io> (cherry picked from commit aa8e8e94b99dfff8613bcbcc8ac6de5d0d8bcb12) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
This commit is contained in:
parent
8050a66a8d
commit
9d6543ea40
@ -316,25 +316,16 @@ QPixmap *QPMCache::object(const QPixmapCache::Key &key) const
|
||||
|
||||
bool QPMCache::insert(const QString& key, const QPixmap &pixmap, int cost)
|
||||
{
|
||||
QPixmapCache::Key &cacheKey = cacheKeys[key];
|
||||
//If for the same key we add already a pixmap we should delete it
|
||||
if (cacheKey.d)
|
||||
QCache<QPixmapCache::Key, QPixmapCacheEntry>::remove(cacheKey);
|
||||
remove(key);
|
||||
|
||||
//we create a new key the old one has been removed
|
||||
cacheKey = createKey();
|
||||
|
||||
bool success = QCache<QPixmapCache::Key, QPixmapCacheEntry>::insert(cacheKey, new QPixmapCacheEntry(cacheKey, pixmap), cost);
|
||||
if (success) {
|
||||
if (!theid) {
|
||||
theid = startTimer(flush_time);
|
||||
t = false;
|
||||
}
|
||||
} else {
|
||||
//Insertion failed we released the new allocated key
|
||||
cacheKeys.remove(key);
|
||||
// this will create a new key; the old one has been removed
|
||||
auto k = insert(pixmap, cost);
|
||||
if (k.isValid()) {
|
||||
cacheKeys[key] = std::move(k);
|
||||
return true;
|
||||
}
|
||||
return success;
|
||||
return false;
|
||||
}
|
||||
|
||||
QPixmapCache::Key QPMCache::insert(const QPixmap &pixmap, int cost)
|
||||
|
Loading…
x
Reference in New Issue
Block a user