1
0
mirror of https://github.com/tomahawk-player/tomahawk.git synced 2025-08-06 06:07:37 +02:00

* Cache fancy avatars, too.

This commit is contained in:
Christian Muehlhaeuser
2012-11-15 06:45:23 +01:00
parent f50814ac15
commit d00b821eee
2 changed files with 11 additions and 6 deletions

View File

@@ -156,6 +156,7 @@ Source::avatar( AvatarStyle style, const QSize& size )
if ( ba.count() ) if ( ba.count() )
m_avatar->loadFromData( ba ); m_avatar->loadFromData( ba );
if ( m_avatar->isNull() ) if ( m_avatar->isNull() )
{ {
delete m_avatar; delete m_avatar;
@@ -164,8 +165,8 @@ Source::avatar( AvatarStyle style, const QSize& size )
m_avatarUpdated = false; m_avatarUpdated = false;
} }
if ( style == FancyStyle && m_avatar && !m_fancyAvatar ) if ( style == FancyStyle && m_avatar && !m_avatar->isNull() && !m_fancyAvatar )
m_fancyAvatar = new QPixmap( TomahawkUtils::createAvatarFrame( QPixmap( *m_avatar ) ) ); m_fancyAvatar = new QPixmap( TomahawkUtils::createRoundedImage( QPixmap( *m_avatar ), QSize( 0, 0 ) ) );
QPixmap pixmap; QPixmap pixmap;
if ( style == Original && m_avatar ) if ( style == Original && m_avatar )
@@ -175,14 +176,18 @@ Source::avatar( AvatarStyle style, const QSize& size )
if ( !pixmap.isNull() && !size.isEmpty() ) 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; QPixmap scaledCover;
scaledCover = pixmap.scaled( size, Qt::KeepAspectRatio, Qt::SmoothTransformation ); 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; return scaledCover;
} }

View File

@@ -163,7 +163,7 @@ private:
mutable QPixmap* m_avatar; mutable QPixmap* m_avatar;
mutable QPixmap* m_fancyAvatar; mutable QPixmap* m_fancyAvatar;
mutable QHash< int, QPixmap > m_coverCache; mutable QHash< AvatarStyle, QHash< int, QPixmap > > m_coverCache;
Tomahawk::playlistinterface_ptr m_playlistInterface; Tomahawk::playlistinterface_ptr m_playlistInterface;
}; };