From 680d8aa6c5240715d9f425f1d0a018ebb192bb43 Mon Sep 17 00:00:00 2001 From: Konstantin Ritt Date: Tue, 2 Apr 2013 17:08:59 +0300 Subject: QPA/Mac: Fix resources leaking Having static QFont instance leads to a resources leaking, since QFontCache is unable to clean-up font engines when the application exits. Relates to QTBUG-25434 Change-Id: I71d91094de27c07ab2434c415e4c28b6acab3646 Reviewed-by: David Faure (KDE) Reviewed-by: Friedemann Kleint --- src/plugins/platforms/ios/qiostheme.mm | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) (limited to 'src/plugins/platforms/ios/qiostheme.mm') diff --git a/src/plugins/platforms/ios/qiostheme.mm b/src/plugins/platforms/ios/qiostheme.mm index f98781f8a7..e7093185aa 100644 --- a/src/plugins/platforms/ios/qiostheme.mm +++ b/src/plugins/platforms/ios/qiostheme.mm @@ -59,6 +59,7 @@ QIOSTheme::QIOSTheme() QIOSTheme::~QIOSTheme() { + qDeleteAll(m_fonts); } QVariant QIOSTheme::themeHint(ThemeHint hint) const @@ -73,8 +74,7 @@ QVariant QIOSTheme::themeHint(ThemeHint hint) const const QFont *QIOSTheme::font(Font type) const { - static QHash fonts; - if (fonts.isEmpty()) { + if (m_fonts.isEmpty()) { // The real system font on iOS is '.Helvetica Neue UI', as returned by both [UIFont systemFontOfSize] // and CTFontCreateUIFontForLanguage(kCTFontSystemFontType, ...), but this font is not included when // populating the available fonts in QCoreTextFontDatabase::populateFontDatabase(), since the font @@ -84,13 +84,13 @@ const QFont *QIOSTheme::font(Font type) const // For now we hard-code the font to Helvetica, which should be very close to the actual // system font. QLatin1String systemFontFamilyName("Helvetica"); - fonts.insert(QPlatformTheme::SystemFont, new QFont(systemFontFamilyName, [UIFont systemFontSize])); - fonts.insert(QPlatformTheme::SmallFont, new QFont(systemFontFamilyName, [UIFont smallSystemFontSize])); - fonts.insert(QPlatformTheme::LabelFont, new QFont(systemFontFamilyName, [UIFont labelFontSize])); - fonts.insert(QPlatformTheme::PushButtonFont, new QFont(systemFontFamilyName, [UIFont buttonFontSize])); + m_fonts.insert(QPlatformTheme::SystemFont, new QFont(systemFontFamilyName, [UIFont systemFontSize])); + m_fonts.insert(QPlatformTheme::SmallFont, new QFont(systemFontFamilyName, [UIFont smallSystemFontSize])); + m_fonts.insert(QPlatformTheme::LabelFont, new QFont(systemFontFamilyName, [UIFont labelFontSize])); + m_fonts.insert(QPlatformTheme::PushButtonFont, new QFont(systemFontFamilyName, [UIFont buttonFontSize])); } - return fonts.value(type, 0); + return m_fonts.value(type, 0); } QT_END_NAMESPACE -- cgit v1.2.3