diff options
author | Olivier Goffart <olivier.goffart@nokia.com> | 2010-05-14 18:06:15 (GMT) |
---|---|---|
committer | Olivier Goffart <olivier.goffart@nokia.com> | 2010-05-14 18:06:46 (GMT) |
commit | 77ddabd7fdf0c8ba2e15951e83abbcce18270285 (patch) | |
tree | 8d714e0b93a976dd9285cc8fef016d95e8f64233 | |
parent | c60045ad8df097ebcb7efa89a5fc18b3a4614df6 (diff) | |
download | Qt-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.cpp | 35 |
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; } |