summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorOlivier Goffart <olivier.goffart@nokia.com>2010-05-14 18:06:15 (GMT)
committerOlivier Goffart <olivier.goffart@nokia.com>2010-05-14 18:06:46 (GMT)
commit77ddabd7fdf0c8ba2e15951e83abbcce18270285 (patch)
tree8d714e0b93a976dd9285cc8fef016d95e8f64233
parentc60045ad8df097ebcb7efa89a5fc18b3a4614df6 (diff)
downloadQt-77ddabd7fdf0c8ba2e15951e83abbcce18270285.zip
Qt-77ddabd7fdf0c8ba2e15951e83abbcce18270285.tar.gz
Qt-77ddabd7fdf0c8ba2e15951e83abbcce18270285.tar.bz2
Revert "Optimize QPixmapIconEngine's pixmap() function"
This reverts commit ad6dafee9be288bcef6b2c4b318b234d2995abff. This is replaced by commit c8d2e18c4b431870560f324a17f20904bb47ae68
-rw-r--r--src/gui/image/qicon.cpp35
1 files 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;
}