Avoid adding null-objects to the icon cache

When we can't get the icon for the first time, we would use the data
in the cache later, and we will never get the new icon when the system
theme is updated while the application is running.

Change-Id: I839ad9983918561a1dc6bc842f85477bba53f64a
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
(cherry picked from commit 4dc7102c8410f5699af93b6c55ba1c7df7755bc2)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
This commit is contained in:
Fan PengCheng 2021-04-21 21:15:16 +08:00 committed by Qt Cherry-pick Bot
parent 9b165a3487
commit 7a3071c4bc

View File

@ -1323,9 +1323,9 @@ QIcon QIcon::fromTheme(const QString &name)
bool hasUserTheme = QIconLoader::instance()->hasUserTheme();
QIconEngine * const engine = (platformTheme && !hasUserTheme) ? platformTheme->createIconEngine(name)
: new QIconLoaderEngine(name);
QIcon *cachedIcon = new QIcon(engine);
icon = *cachedIcon;
qtIconCache()->insert(name, cachedIcon);
icon = QIcon(engine);
if (!icon.isNull())
qtIconCache()->insert(name, new QIcon(icon));
}
return icon;