mirror of
https://github.com/tomahawk-player/tomahawk.git
synced 2025-08-15 02:24:50 +02:00
Mork work on trying to get scan threading working right
This commit is contained in:
@@ -31,6 +31,10 @@ MusicScanner::MusicScanner( const QString& dir, quint32 bs )
|
|||||||
// m_ext2mime.insert( "mp4", "audio/mp4" );
|
// m_ext2mime.insert( "mp4", "audio/mp4" );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
MusicScanner::~MusicScanner()
|
||||||
|
{
|
||||||
|
qDebug() << Q_FUNC_INFO;
|
||||||
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
MusicScanner::startScan()
|
MusicScanner::startScan()
|
||||||
@@ -77,8 +81,6 @@ MusicScanner::scan()
|
|||||||
connect( m_dirLister, SIGNAL( finished( const QMap<QString, unsigned int>& ) ),
|
connect( m_dirLister, SIGNAL( finished( const QMap<QString, unsigned int>& ) ),
|
||||||
SLOT( listerFinished( const QMap<QString, unsigned int>& ) ), Qt::QueuedConnection );
|
SLOT( listerFinished( const QMap<QString, unsigned int>& ) ), Qt::QueuedConnection );
|
||||||
|
|
||||||
connect( m_dirLister, SIGNAL( destroyed( QObject* ) ), SLOT( listerDestroyed( QObject* ) ) );
|
|
||||||
|
|
||||||
m_dirListerThreadController->start();
|
m_dirListerThreadController->start();
|
||||||
QMetaObject::invokeMethod( m_dirLister, "go" );
|
QMetaObject::invokeMethod( m_dirLister, "go" );
|
||||||
}
|
}
|
||||||
@@ -97,7 +99,7 @@ MusicScanner::listerFinished( const QMap<QString, unsigned int>& newmtimes )
|
|||||||
|
|
||||||
// save mtimes, then quit thread
|
// save mtimes, then quit thread
|
||||||
DatabaseCommand_DirMtimes* cmd = new DatabaseCommand_DirMtimes( newmtimes );
|
DatabaseCommand_DirMtimes* cmd = new DatabaseCommand_DirMtimes( newmtimes );
|
||||||
connect( cmd, SIGNAL( finished() ), SLOT( deleteLater() ) );
|
connect( cmd, SIGNAL( finished() ), SLOT( deleteLister() ) );
|
||||||
Database::instance()->enqueue( QSharedPointer<DatabaseCommand>(cmd) );
|
Database::instance()->enqueue( QSharedPointer<DatabaseCommand>(cmd) );
|
||||||
|
|
||||||
qDebug() << "Scanning complete, saving to database. "
|
qDebug() << "Scanning complete, saving to database. "
|
||||||
@@ -106,27 +108,24 @@ MusicScanner::listerFinished( const QMap<QString, unsigned int>& newmtimes )
|
|||||||
qDebug() << "Skipped the following files (no tags / no valid audio):";
|
qDebug() << "Skipped the following files (no tags / no valid audio):";
|
||||||
foreach( const QString& s, m_skippedFiles )
|
foreach( const QString& s, m_skippedFiles )
|
||||||
qDebug() << s;
|
qDebug() << s;
|
||||||
|
|
||||||
QMetaObject::invokeMethod( this, "quitLister" );
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
MusicScanner::quitLister()
|
MusicScanner::deleteLister()
|
||||||
{
|
{
|
||||||
qDebug() << Q_FUNC_INFO;
|
qDebug() << Q_FUNC_INFO;
|
||||||
if( m_dirListerThreadController->isRunning() )
|
connect( m_dirListerThreadController, SIGNAL( finished() ), SLOT( listerQuit() ) );
|
||||||
{
|
|
||||||
qDebug() << "Scan thread still running, not deleting yet";
|
|
||||||
m_dirListerThreadController->quit();
|
m_dirListerThreadController->quit();
|
||||||
QMetaObject::invokeMethod( this, "quitLister" );
|
|
||||||
}
|
}
|
||||||
else
|
|
||||||
|
void
|
||||||
|
MusicScanner::listerQuit()
|
||||||
{
|
{
|
||||||
qDebug() << "deleting dir lister";
|
qDebug() << Q_FUNC_INFO;
|
||||||
|
connect( m_dirLister, SIGNAL( destroyed( QObject* ) ), SLOT( listerDestroyed( QObject* ) ) );
|
||||||
m_dirLister->deleteLater();
|
m_dirLister->deleteLater();
|
||||||
m_dirLister = 0;
|
m_dirLister = 0;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
void
|
void
|
||||||
MusicScanner::listerDestroyed( QObject* dirLister )
|
MusicScanner::listerDestroyed( QObject* dirLister )
|
||||||
|
@@ -86,6 +86,7 @@ Q_OBJECT
|
|||||||
|
|
||||||
public:
|
public:
|
||||||
MusicScanner( const QString& dir, quint32 bs = 0 );
|
MusicScanner( const QString& dir, quint32 bs = 0 );
|
||||||
|
~MusicScanner();
|
||||||
|
|
||||||
signals:
|
signals:
|
||||||
//void fileScanned( QVariantMap );
|
//void fileScanned( QVariantMap );
|
||||||
@@ -97,7 +98,8 @@ private:
|
|||||||
|
|
||||||
private slots:
|
private slots:
|
||||||
void listerFinished( const QMap<QString, unsigned int>& newmtimes );
|
void listerFinished( const QMap<QString, unsigned int>& newmtimes );
|
||||||
void quitLister();
|
void deleteLister();
|
||||||
|
void listerQuit();
|
||||||
void listerDestroyed( QObject* dirLister );
|
void listerDestroyed( QObject* dirLister );
|
||||||
void scanFile( const QFileInfo& fi );
|
void scanFile( const QFileInfo& fi );
|
||||||
void startScan();
|
void startScan();
|
||||||
|
@@ -79,7 +79,7 @@ ScanManager::scannerFinished()
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
delete m_scanner;
|
m_scanner->deleteLater();
|
||||||
m_scanner = 0;
|
m_scanner = 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user