From d00b821eeeb20057cfc3e7b807f112aacf835760 Mon Sep 17 00:00:00 2001 From: Christian Muehlhaeuser Date: Thu, 15 Nov 2012 06:45:23 +0100 Subject: [PATCH] * Cache fancy avatars, too. --- src/libtomahawk/Source.cpp | 15 ++++++++++----- src/libtomahawk/Source.h | 2 +- 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/src/libtomahawk/Source.cpp b/src/libtomahawk/Source.cpp index 1cd3b798c..61b53516e 100644 --- a/src/libtomahawk/Source.cpp +++ b/src/libtomahawk/Source.cpp @@ -156,6 +156,7 @@ Source::avatar( AvatarStyle style, const QSize& size ) if ( ba.count() ) m_avatar->loadFromData( ba ); + if ( m_avatar->isNull() ) { delete m_avatar; @@ -164,8 +165,8 @@ Source::avatar( AvatarStyle style, const QSize& size ) m_avatarUpdated = false; } - if ( style == FancyStyle && m_avatar && !m_fancyAvatar ) - m_fancyAvatar = new QPixmap( TomahawkUtils::createAvatarFrame( QPixmap( *m_avatar ) ) ); + if ( style == FancyStyle && m_avatar && !m_avatar->isNull() && !m_fancyAvatar ) + m_fancyAvatar = new QPixmap( TomahawkUtils::createRoundedImage( QPixmap( *m_avatar ), QSize( 0, 0 ) ) ); QPixmap pixmap; if ( style == Original && m_avatar ) @@ -175,14 +176,18 @@ Source::avatar( AvatarStyle style, const QSize& size ) if ( !pixmap.isNull() && !size.isEmpty() ) { - if ( m_coverCache.contains( size.width() ) ) + if ( m_coverCache[ style ].contains( size.width() ) ) { - return m_coverCache.value( size.width() ); + return m_coverCache[ style ].value( size.width() ); } QPixmap scaledCover; scaledCover = pixmap.scaled( size, Qt::KeepAspectRatio, Qt::SmoothTransformation ); - m_coverCache.insert( size.width(), scaledCover ); + + QHash< int, QPixmap > innerCache = m_coverCache[ style ]; + innerCache.insert( size.width(), scaledCover ); + m_coverCache[ style ] = innerCache; + return scaledCover; } diff --git a/src/libtomahawk/Source.h b/src/libtomahawk/Source.h index d4f583e4c..0adcc9712 100644 --- a/src/libtomahawk/Source.h +++ b/src/libtomahawk/Source.h @@ -163,7 +163,7 @@ private: mutable QPixmap* m_avatar; mutable QPixmap* m_fancyAvatar; - mutable QHash< int, QPixmap > m_coverCache; + mutable QHash< AvatarStyle, QHash< int, QPixmap > > m_coverCache; Tomahawk::playlistinterface_ptr m_playlistInterface; };