From 77ddabd7fdf0c8ba2e15951e83abbcce18270285 Mon Sep 17 00:00:00 2001 From: Olivier Goffart Date: Fri, 14 May 2010 20:06:15 +0200 Subject: Revert "Optimize QPixmapIconEngine's pixmap() function" This reverts commit ad6dafee9be288bcef6b2c4b318b234d2995abff. This is replaced by commit c8d2e18c4b431870560f324a17f20904bb47ae68 --- src/gui/image/qicon.cpp | 35 ++++++++++++++--------------------- 1 file changed, 14 insertions(+), 21 deletions(-) diff --git a/src/gui/image/qicon.cpp b/src/gui/image/qicon.cpp index 5ef0ff9..891b1db 100644 --- a/src/gui/image/qicon.cpp +++ b/src/gui/image/qicon.cpp @@ -261,28 +261,21 @@ QPixmap QPixmapIconEngine::pixmap(const QSize &size, QIcon::Mode mode, QIcon::St if (!actualSize.isNull() && (actualSize.width() > size.width() || actualSize.height() > size.height())) actualSize.scale(size, Qt::KeepAspectRatio); - struct { - quint64 pmc; - qint32 w; - qint32 h; - quint64 pac; - qint32 m; // Make struct size a multiple of 4, for safety's sake - } dill; - - dill.pmc = pm.cacheKey(); - dill.w = actualSize.width(); - dill.h = actualSize.height(); - dill.pac = QApplication::palette().cacheKey(); - dill.m = pe->mode; - - QString keyBase = QLatin1String("$qt_icon_") - + QString::fromRawData((QChar *)&dill, sizeof(dill)/sizeof(QChar)); - QString key = keyBase + QString::number(mode, 16); + QString key = QLatin1String("$qt_icon_") + + QString::number(pm.cacheKey()) + + QString::number(pe->mode) + + QString::number(QApplication::palette().cacheKey()) + + QLatin1Char('_') + + QString::number(actualSize.width()) + + QLatin1Char('_') + + QString::number(actualSize.height()) + + QLatin1Char('_'); + if (mode == QIcon::Active) { - if (QPixmapCache::find(key, pm)) + if (QPixmapCache::find(key + QString::number(mode), pm)) return pm; // horray - if (QPixmapCache::find(keyBase + QString::number(QIcon::Normal, 16), pm)) { + if (QPixmapCache::find(key + QString::number(QIcon::Normal), pm)) { QStyleOption opt(0); opt.palette = QApplication::palette(); QPixmap active = QApplication::style()->generatedIconPixmap(QIcon::Active, pm, &opt); @@ -291,7 +284,7 @@ QPixmap QPixmapIconEngine::pixmap(const QSize &size, QIcon::Mode mode, QIcon::St } } - if (!QPixmapCache::find(key, pm)) { + if (!QPixmapCache::find(key + QString::number(mode), pm)) { if (pm.size() != actualSize) pm = pm.scaled(actualSize, Qt::IgnoreAspectRatio, Qt::SmoothTransformation); if (pe->mode != mode && mode != QIcon::Normal) { @@ -301,7 +294,7 @@ QPixmap QPixmapIconEngine::pixmap(const QSize &size, QIcon::Mode mode, QIcon::St if (!generated.isNull()) pm = generated; } - QPixmapCache::insert(key, pm); + QPixmapCache::insert(key + QString::number(mode), pm); } return pm; } -- cgit v0.12