1
0
mirror of https://github.com/tomahawk-player/tomahawk.git synced 2025-08-09 15:47:38 +02:00

Fix other area scanner is destroyed to do it in-thread

This commit is contained in:
Jeff Mitchell
2011-05-03 22:18:13 -04:00
parent a2a2f036a2
commit 8b229dd4e3
2 changed files with 16 additions and 25 deletions

View File

@@ -245,18 +245,6 @@ ScanManager::deferredScanTimeout()
void void
ScanManager::scannerFinished() ScanManager::scannerFinished()
{ {
qDebug() << Q_FUNC_INFO;
connect( m_musicScannerThreadController, SIGNAL( finished() ), SLOT( scannerQuit() ) );
m_musicScannerThreadController->quit();
}
void
ScanManager::scannerQuit()
{
qDebug() << Q_FUNC_INFO;
connect( m_scanner.data(), SIGNAL( destroyed( QObject* ) ), SLOT( scannerDestroyed( QObject* ) ) );
if ( !m_scanner.isNull() ) if ( !m_scanner.isNull() )
{ {
QMetaObject::invokeMethod( m_scanner.data(), "deleteLater", Qt::QueuedConnection ); QMetaObject::invokeMethod( m_scanner.data(), "deleteLater", Qt::QueuedConnection );
@@ -266,17 +254,22 @@ ScanManager::scannerQuit()
QCoreApplication::processEvents( QEventLoop::AllEvents, 200 ); QCoreApplication::processEvents( QEventLoop::AllEvents, 200 );
TomahawkUtils::Sleep::msleep( 100 ); TomahawkUtils::Sleep::msleep( 100 );
} }
if ( m_musicScannerThreadController )
m_musicScannerThreadController->quit();
if( m_musicScannerThreadController )
{
while( !m_musicScannerThreadController->isFinished() )
{
qDebug() << Q_FUNC_INFO << " scanner thread controller not finished, processing events";
QCoreApplication::processEvents( QEventLoop::AllEvents, 200 );
TomahawkUtils::Sleep::msleep( 100 );
} }
}
delete m_musicScannerThreadController;
void
ScanManager::scannerDestroyed( QObject* scanner )
{
Q_UNUSED( scanner );
qDebug() << Q_FUNC_INFO;
m_musicScannerThreadController->deleteLater();
m_musicScannerThreadController = 0; m_musicScannerThreadController = 0;
}
}
emit finished(); emit finished();
} }

View File

@@ -52,9 +52,7 @@ public slots:
void removeWatchedDir( const QString& path ); void removeWatchedDir( const QString& path );
private slots: private slots:
void scannerQuit();
void scannerFinished(); void scannerFinished();
void scannerDestroyed( QObject* scanner );
void runStartupScan(); void runStartupScan();
void queuedScanTimeout(); void queuedScanTimeout();