diff --git a/src/libtomahawk/Album.cpp b/src/libtomahawk/Album.cpp index d86588592..cdbcb42c5 100644 --- a/src/libtomahawk/Album.cpp +++ b/src/libtomahawk/Album.cpp @@ -33,6 +33,7 @@ #include #include +#include using namespace Tomahawk; @@ -75,6 +76,7 @@ Album::get( const Tomahawk::artist_ptr& artist, const QString& name, bool autoCr } album_ptr album = album_ptr( new Album( name, artist ), &Album::deleteLater ); + album->moveToThread( QCoreApplication::instance()->thread() ); album->setWeakRef( album.toWeakRef() ); album->loadId( autoCreate ); s_albumsByName.insert( key, album ); diff --git a/src/libtomahawk/Artist.cpp b/src/libtomahawk/Artist.cpp index 8922361fc..d81a59237 100644 --- a/src/libtomahawk/Artist.cpp +++ b/src/libtomahawk/Artist.cpp @@ -36,6 +36,7 @@ #include #include +#include using namespace Tomahawk; @@ -109,6 +110,7 @@ Artist::get( unsigned int id, const QString& name ) } artist_ptr a = artist_ptr( new Artist( id, name ), &Artist::deleteLater ); + a->moveToThread( QCoreApplication::instance()->thread() ); a->setWeakRef( a.toWeakRef() ); s_artistsByName.insert( key, a ); diff --git a/src/libtomahawk/Query.cpp b/src/libtomahawk/Query.cpp index 9d62206ff..057427d37 100644 --- a/src/libtomahawk/Query.cpp +++ b/src/libtomahawk/Query.cpp @@ -33,6 +33,7 @@ #include #include +#include using namespace Tomahawk; @@ -47,6 +48,7 @@ Query::get( const QString& artist, const QString& track, const QString& album, c autoResolve = false; query_ptr q = query_ptr( new Query( Track::get( artist, track, album ), qid, autoResolve ), &QObject::deleteLater ); + q->moveToThread( QCoreApplication::instance()->thread() ); q->setWeakRef( q.toWeakRef() ); if ( autoResolve ) diff --git a/src/libtomahawk/Result.cpp b/src/libtomahawk/Result.cpp index 04f5587de..477b7192a 100644 --- a/src/libtomahawk/Result.cpp +++ b/src/libtomahawk/Result.cpp @@ -35,6 +35,8 @@ #include "Track.h" #include "Typedefs.h" +#include + using namespace Tomahawk; static QHash< QString, result_wptr > s_results; @@ -69,6 +71,7 @@ Result::get( const QString& url, const track_ptr& track ) } result_ptr r = result_ptr( new Result( url, track ), &Result::deleteLater ); + r->moveToThread( QCoreApplication::instance()->thread() ); r->setWeakRef( r.toWeakRef() ); s_results.insert( url, r ); @@ -132,21 +135,25 @@ Result::deleteLater() void Result::onResolverRemoved( Tomahawk::Resolver* resolver ) { - QMutexLocker lock( &m_mutex ); + m_mutex.lock(); if ( m_resolver.data() == resolver ) { m_resolver = 0; + m_mutex.unlock(); + emit statusChanged(); } + else + { + m_mutex.unlock(); + } } collection_ptr Result::resolvedByCollection() const { - QMutexLocker lock( &m_mutex ); - return m_collection; } @@ -323,11 +330,9 @@ Result::onOffline() void -Result::setResolvedByCollection( const Tomahawk::collection_ptr& collection , bool emitOnlineEvents ) +Result::setResolvedByCollection( const Tomahawk::collection_ptr& collection, bool emitOnlineEvents ) { - m_mutex.lock(); m_collection = collection; - m_mutex.unlock(); if ( emitOnlineEvents ) { diff --git a/src/libtomahawk/Track.cpp b/src/libtomahawk/Track.cpp index 26dd6acf4..51a7596da 100644 --- a/src/libtomahawk/Track.cpp +++ b/src/libtomahawk/Track.cpp @@ -37,6 +37,7 @@ #include #include #include +#include using namespace Tomahawk; @@ -92,6 +93,7 @@ Track::get( const QString& artist, const QString& track, const QString& album, c } track_ptr t = track_ptr( new Track( artist, track, album, albumArtist, duration, composer, albumpos, discnumber ), &Track::deleteLater ); + t->moveToThread( QCoreApplication::instance()->thread() ); t->setWeakRef( t.toWeakRef() ); s_tracksByName.insert( key, t ); diff --git a/src/libtomahawk/TrackData.cpp b/src/libtomahawk/TrackData.cpp index dc2cdbf78..30656560e 100644 --- a/src/libtomahawk/TrackData.cpp +++ b/src/libtomahawk/TrackData.cpp @@ -19,8 +19,7 @@ #include "TrackData.h" -#include -#include + #include "audio/AudioEngine.h" #include "collection/Collection.h" @@ -41,6 +40,10 @@ #include "PlaylistEntry.h" #include "SourceList.h" +#include +#include +#include + using namespace Tomahawk; QHash< QString, trackdata_wptr > TrackData::s_trackDatasByName = QHash< QString, trackdata_wptr >(); @@ -84,6 +87,7 @@ TrackData::get( unsigned int id, const QString& artist, const QString& track ) } trackdata_ptr t = trackdata_ptr( new TrackData( id, artist, track ), &TrackData::deleteLater ); + t->moveToThread( QCoreApplication::instance()->thread() ); t->setWeakRef( t.toWeakRef() ); s_trackDatasByName.insert( key, t );