mirror of
https://github.com/tomahawk-player/tomahawk.git
synced 2025-08-11 16:44:05 +02:00
Hopefully solve crashing on exit during scanning
This commit is contained in:
@@ -119,6 +119,7 @@ INCLUDE_DIRECTORIES(
|
||||
topbar
|
||||
utils
|
||||
libtomahawk
|
||||
libtomahawk/utils
|
||||
mac
|
||||
|
||||
../alsa-playback
|
||||
|
@@ -3,6 +3,7 @@
|
||||
|
||||
#include "dllmacro.h"
|
||||
#include <QObject>
|
||||
#include <QThread>
|
||||
|
||||
#define RESPATH ":/data/"
|
||||
|
||||
@@ -43,6 +44,23 @@ namespace TomahawkUtils
|
||||
JDnsSharedRequest* m_dnsSharedRequest;
|
||||
};
|
||||
|
||||
class DLLEXPORT Sleep : public QThread
|
||||
{
|
||||
public:
|
||||
static void sleep(unsigned long secs)
|
||||
{
|
||||
QThread::sleep(secs);
|
||||
}
|
||||
static void msleep(unsigned long msecs)
|
||||
{
|
||||
QThread::msleep(msecs);
|
||||
}
|
||||
static void usleep(unsigned long usecs)
|
||||
{
|
||||
QThread::usleep(usecs);
|
||||
}
|
||||
};
|
||||
|
||||
DLLEXPORT QDir appConfigDir();
|
||||
DLLEXPORT QDir appDataDir();
|
||||
|
||||
|
@@ -34,6 +34,25 @@ MusicScanner::MusicScanner( const QString& dir, quint32 bs )
|
||||
MusicScanner::~MusicScanner()
|
||||
{
|
||||
qDebug() << Q_FUNC_INFO;
|
||||
if( m_dirListerThreadController )
|
||||
{
|
||||
m_dirListerThreadController->quit();
|
||||
|
||||
while( !m_dirListerThreadController->isFinished() )
|
||||
{
|
||||
QCoreApplication::processEvents( QEventLoop::AllEvents, 200 );
|
||||
TomahawkUtils::Sleep::msleep(100);
|
||||
}
|
||||
|
||||
if( m_dirLister )
|
||||
{
|
||||
delete m_dirLister;
|
||||
m_dirLister = 0;
|
||||
}
|
||||
|
||||
delete m_dirListerThreadController;
|
||||
m_dirListerThreadController = 0;
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
|
@@ -2,9 +2,11 @@
|
||||
|
||||
#include <QDebug>
|
||||
#include <QThread>
|
||||
#include <QCoreApplication>
|
||||
|
||||
#include "musicscanner.h"
|
||||
#include "tomahawksettings.h"
|
||||
#include "tomahawkutils.h"
|
||||
|
||||
ScanManager* ScanManager::s_instance = 0;
|
||||
|
||||
@@ -30,14 +32,26 @@ ScanManager::ScanManager( QObject* parent )
|
||||
ScanManager::~ScanManager()
|
||||
{
|
||||
qDebug() << Q_FUNC_INFO;
|
||||
s_instance = 0;
|
||||
|
||||
if( m_musicScannerThreadController )
|
||||
{
|
||||
m_musicScannerThreadController->quit();
|
||||
m_musicScannerThreadController->deleteLater();
|
||||
|
||||
while( !m_musicScannerThreadController->isFinished() )
|
||||
{
|
||||
QCoreApplication::processEvents( QEventLoop::AllEvents, 200 );
|
||||
TomahawkUtils::Sleep::msleep(100);
|
||||
}
|
||||
m_musicScannerThreadController = 0;
|
||||
|
||||
if( m_scanner )
|
||||
{
|
||||
delete m_scanner;
|
||||
m_scanner = 0;
|
||||
}
|
||||
|
||||
delete m_musicScannerThreadController;
|
||||
m_musicScannerThreadController = 0;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
Reference in New Issue
Block a user