From 9146a3961e737e72acfc2fd98436f14ba405a376 Mon Sep 17 00:00:00 2001 From: Leo Franchi Date: Wed, 19 Sep 2012 16:10:33 -0400 Subject: [PATCH] Fix race condition on loading resolver icons & loading attica resolvers --- src/libtomahawk/accounts/ResolverAccount.cpp | 22 ++++++++++++++------ src/libtomahawk/accounts/ResolverAccount.h | 3 ++- 2 files changed, 18 insertions(+), 7 deletions(-) diff --git a/src/libtomahawk/accounts/ResolverAccount.cpp b/src/libtomahawk/accounts/ResolverAccount.cpp index 2ade34d49..d759335ca 100644 --- a/src/libtomahawk/accounts/ResolverAccount.cpp +++ b/src/libtomahawk/accounts/ResolverAccount.cpp @@ -240,11 +240,9 @@ AtticaResolverAccount::AtticaResolverAccount( const QString& accountId ) { TomahawkSettings::instance()->setValue( QString( "accounts/%1/atticaresolver" ).arg( accountId ), true ); + init(); m_atticaId = configuration().value( "atticaId" ).toString(); - connect( AtticaManager::instance(), SIGNAL( resolverIconUpdated( QString ) ), this, SLOT( resolverIconUpdated( QString ) ) ); - - loadIcon(); } AtticaResolverAccount::AtticaResolverAccount( const QString& accountId, const QString& path, const QString& atticaId ) @@ -257,9 +255,7 @@ AtticaResolverAccount::AtticaResolverAccount( const QString& accountId, const QS TomahawkSettings::instance()->setValue( QString( "accounts/%1/atticaresolver" ).arg( accountId ), true ); - connect( AtticaManager::instance(), SIGNAL( resolverIconUpdated( QString ) ), this, SLOT( resolverIconUpdated( QString ) ) ); - - loadIcon(); + init(); sync(); } @@ -269,6 +265,20 @@ AtticaResolverAccount::~AtticaResolverAccount() } +void +AtticaResolverAccount::init() +{ + connect( AtticaManager::instance(), SIGNAL( resolverIconUpdated( QString ) ), this, SLOT( resolverIconUpdated( QString ) ) ); + + if ( AtticaManager::instance()->resolversLoaded() ) + loadIcon(); + else + connect( AtticaManager::instance(), SIGNAL( resolversLoaded( Attica::Content::List ) ), this, SLOT( loadIcon() ) ); + + +} + + void AtticaResolverAccount::loadIcon() { diff --git a/src/libtomahawk/accounts/ResolverAccount.h b/src/libtomahawk/accounts/ResolverAccount.h index 3a46a4171..e5b182497 100644 --- a/src/libtomahawk/accounts/ResolverAccount.h +++ b/src/libtomahawk/accounts/ResolverAccount.h @@ -122,11 +122,12 @@ public: private slots: void resolverIconUpdated( const QString& ); + void loadIcon(); private: // Created by factory, when user installs a new resolver AtticaResolverAccount( const QString& accountId, const QString& path, const QString& atticaId ); - void loadIcon(); + void init(); QPixmap m_icon; QString m_atticaId;