1
0
mirror of https://github.com/tomahawk-player/tomahawk.git synced 2025-03-20 07:49:42 +01:00

* Make sure we have a separate database impl returned for each thread.

This commit is contained in:
Christian Muehlhaeuser 2012-06-20 11:04:06 +02:00
parent a7642d12d1
commit 7bb61f1a38
2 changed files with 20 additions and 1 deletions

View File

@ -130,6 +130,22 @@ Database::enqueue( const QSharedPointer<DatabaseCommand>& lc )
}
DatabaseImpl*
Database::impl()
{
QMutexLocker lock( &m_mutex );
QThread* thread = QThread::currentThread();
if ( !m_implHash.contains( thread ) )
{
DatabaseImpl* impl = m_impl->clone();
m_implHash.insert( thread, impl );
}
return m_implHash.value( thread );
}
QString
Database::dbid() const
{

View File

@ -57,7 +57,7 @@ public:
void loadIndex();
bool isReady() const { return m_ready; }
DatabaseImpl* impl() const { return m_impl; }
DatabaseImpl* impl();
signals:
void indexReady(); // search index
@ -81,6 +81,9 @@ private:
QList<DatabaseWorker*> m_workers;
int m_maxConcurrentThreads;
QHash< QThread*, DatabaseImpl* > m_implHash;
QMutex m_mutex;
static Database* s_instance;
friend class Tomahawk::Artist;