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:
@@ -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();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -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();
|
||||||
|
Reference in New Issue
Block a user