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