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:
parent
a7642d12d1
commit
7bb61f1a38
@ -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
|
||||
{
|
||||
|
@ -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;
|
||||
|
Loading…
x
Reference in New Issue
Block a user