mirror of
https://github.com/tomahawk-player/tomahawk.git
synced 2025-04-14 04:51:53 +02:00
All the threads are happy now.
Note: you can't call deleteLater() on an object in a thread after you quit() the thread because deleteLater relies on the object's event loop to be running...
This commit is contained in:
parent
a28c6998a3
commit
4af60befcd
@ -123,7 +123,7 @@ MusicScanner::listerQuit()
|
||||
{
|
||||
qDebug() << Q_FUNC_INFO;
|
||||
connect( m_dirLister, SIGNAL( destroyed( QObject* ) ), SLOT( listerDestroyed( QObject* ) ) );
|
||||
m_dirLister->deleteLater();
|
||||
delete m_dirLister;
|
||||
m_dirLister = 0;
|
||||
}
|
||||
|
||||
|
@ -59,7 +59,6 @@ ScanManager::runManualScan( const QString& path )
|
||||
m_scanner = new MusicScanner( path );
|
||||
m_scanner->moveToThread( m_musicScannerThreadController );
|
||||
connect( m_scanner, SIGNAL( finished() ), SLOT( scannerFinished() ) );
|
||||
connect( m_scanner, SIGNAL( destroyed( QObject* ) ), SLOT( scannerDestroyed( QObject* ) ) );
|
||||
m_musicScannerThreadController->start( QThread::IdlePriority );
|
||||
QMetaObject::invokeMethod( m_scanner, "startScan" );
|
||||
}
|
||||
@ -71,17 +70,17 @@ void
|
||||
ScanManager::scannerFinished()
|
||||
{
|
||||
qDebug() << Q_FUNC_INFO;
|
||||
if( m_musicScannerThreadController->isRunning() )
|
||||
{
|
||||
qDebug() << "Scan thread still running, not deleting yet";
|
||||
m_musicScannerThreadController->quit();
|
||||
QMetaObject::invokeMethod( this, "scannerFinished" );
|
||||
}
|
||||
else
|
||||
{
|
||||
m_scanner->deleteLater();
|
||||
m_scanner = 0;
|
||||
}
|
||||
connect( m_musicScannerThreadController, SIGNAL( finished() ), SLOT( scannerQuit() ) );
|
||||
m_musicScannerThreadController->quit();
|
||||
}
|
||||
|
||||
void
|
||||
ScanManager::scannerQuit()
|
||||
{
|
||||
qDebug() << Q_FUNC_INFO;
|
||||
connect( m_scanner, SIGNAL( destroyed( QObject* ) ), SLOT( scannerDestroyed( QObject* ) ) );
|
||||
delete m_scanner;
|
||||
m_scanner = 0;
|
||||
}
|
||||
|
||||
void
|
||||
@ -90,5 +89,6 @@ ScanManager::scannerDestroyed( QObject* scanner )
|
||||
qDebug() << Q_FUNC_INFO;
|
||||
m_musicScannerThreadController->deleteLater();
|
||||
m_musicScannerThreadController = 0;
|
||||
emit finished();
|
||||
}
|
||||
|
||||
|
@ -20,7 +20,11 @@ public:
|
||||
|
||||
void runManualScan( const QString& path );
|
||||
|
||||
signals:
|
||||
void finished();
|
||||
|
||||
private slots:
|
||||
void scannerQuit();
|
||||
void scannerFinished();
|
||||
void scannerDestroyed( QObject* scanner );
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user