mirror of
https://github.com/tomahawk-player/tomahawk.git
synced 2025-08-07 14:46:33 +02:00
Do not re-save duplicated avatars, as jreen spams us with avatars and we constantly save them to disk
This commit is contained in:
@@ -132,15 +132,22 @@ Source::friendlyName() const
|
||||
void
|
||||
Source::setAvatar( const QPixmap& avatar )
|
||||
{
|
||||
delete m_avatar;
|
||||
m_avatar = new QPixmap( avatar );
|
||||
m_fancyAvatar = 0;
|
||||
|
||||
QByteArray ba;
|
||||
QBuffer buffer( &ba );
|
||||
buffer.open( QIODevice::WriteOnly );
|
||||
avatar.save( &buffer, "PNG" );
|
||||
|
||||
// Check if the avatar is different by comparing a hash of the first 4096 bytes
|
||||
const QByteArray hash = QCryptographicHash::hash( ba.left( 4096 ), QCryptographicHash::Sha1 );
|
||||
if ( m_avatarHash == hash )
|
||||
return;
|
||||
else
|
||||
m_avatarHash = hash;
|
||||
|
||||
delete m_avatar;
|
||||
m_avatar = new QPixmap( avatar );
|
||||
m_fancyAvatar = 0;
|
||||
|
||||
TomahawkUtils::Cache::instance()->putData( "Sources", 7776000000 /* 90 days */, m_username, ba );
|
||||
m_avatarUpdated = true;
|
||||
}
|
||||
|
@@ -163,6 +163,7 @@ private:
|
||||
|
||||
mutable QPixmap* m_avatar;
|
||||
mutable QPixmap* m_fancyAvatar;
|
||||
mutable QByteArray m_avatarHash;
|
||||
mutable QHash< AvatarStyle, QHash< int, QPixmap > > m_coverCache;
|
||||
|
||||
Tomahawk::playlistinterface_ptr m_playlistInterface;
|
||||
|
@@ -221,34 +221,21 @@ SipHandler::onAvatarReceived( const QString& from, const QPixmap& avatar )
|
||||
// qDebug() << Q_FUNC_INFO << "setting avatar on source for" << from;
|
||||
if ( avatar.isNull() )
|
||||
{
|
||||
// qDebug() << Q_FUNC_INFO << "got null pixmap, not adding anything";
|
||||
return;
|
||||
}
|
||||
|
||||
m_usernameAvatars.insert( from, avatar );
|
||||
|
||||
//
|
||||
|
||||
//Tomahawk::source_ptr source = ->source();
|
||||
ControlConnection *conn = Servent::instance()->lookupControlConnection( from );
|
||||
if( conn )
|
||||
{
|
||||
// qDebug() << Q_FUNC_INFO << from << "got control connection";
|
||||
Tomahawk::source_ptr source = conn->source();
|
||||
if( source )
|
||||
{
|
||||
|
||||
// qDebug() << Q_FUNC_INFO << from << "got source, setting avatar";
|
||||
// qDebug() << Q_FUNC_INFO << from << "got source, setting avatar on source:" << source->friendlyName();
|
||||
source->setAvatar( avatar );
|
||||
}
|
||||
else
|
||||
{
|
||||
// qDebug() << Q_FUNC_INFO << from << "no source found, not setting avatar";
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
// qDebug() << Q_FUNC_INFO << from << "no control connection setup yet";
|
||||
}
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user