mirror of
https://github.com/tomahawk-player/tomahawk.git
synced 2025-08-05 05:37:29 +02:00
* Make sure we have a separate database impl returned for each thread.
This commit is contained in:
@@ -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
|
QString
|
||||||
Database::dbid() const
|
Database::dbid() const
|
||||||
{
|
{
|
||||||
|
@@ -57,7 +57,7 @@ public:
|
|||||||
void loadIndex();
|
void loadIndex();
|
||||||
bool isReady() const { return m_ready; }
|
bool isReady() const { return m_ready; }
|
||||||
|
|
||||||
DatabaseImpl* impl() const { return m_impl; }
|
DatabaseImpl* impl();
|
||||||
|
|
||||||
signals:
|
signals:
|
||||||
void indexReady(); // search index
|
void indexReady(); // search index
|
||||||
@@ -81,6 +81,9 @@ private:
|
|||||||
QList<DatabaseWorker*> m_workers;
|
QList<DatabaseWorker*> m_workers;
|
||||||
int m_maxConcurrentThreads;
|
int m_maxConcurrentThreads;
|
||||||
|
|
||||||
|
QHash< QThread*, DatabaseImpl* > m_implHash;
|
||||||
|
QMutex m_mutex;
|
||||||
|
|
||||||
static Database* s_instance;
|
static Database* s_instance;
|
||||||
|
|
||||||
friend class Tomahawk::Artist;
|
friend class Tomahawk::Artist;
|
||||||
|
Reference in New Issue
Block a user