1
0
mirror of https://github.com/tomahawk-player/tomahawk.git synced 2025-03-21 00:09:47 +01:00

Was trying to work on the crash on shutdown by making sure we explicitly delete items in tomahawkapp. Except where there are FIXMEs all are now explicitly deleted, in reverse order of instantiation. So far no help, but figured might as well keep the changes.

This commit is contained in:
Jeff Mitchell 2011-05-26 00:47:24 -04:00
parent f9a6775126
commit 6e19a85d73
2 changed files with 37 additions and 10 deletions

View File

@ -151,6 +151,7 @@ using namespace Tomahawk;
TomahawkApp::TomahawkApp( int& argc, char *argv[] )
: TOMAHAWK_APPLICATION( argc, argv )
, m_database( 0 )
, m_databaseResolver( 0 )
, m_scanManager( 0 )
, m_audioEngine( 0 )
, m_servent( 0 )
@ -309,26 +310,50 @@ TomahawkApp::~TomahawkApp()
{
qDebug() << Q_FUNC_INFO;
#ifdef LIBLASTFM_FOUND
delete m_scrobbler;
#endif
//FIXME: m_session doesn't allow you to stop(), so is this safe?
delete m_session.staticContentService();
// stop script resolvers
foreach( Tomahawk::ExternalResolver* r, m_scriptResolvers.values() )
{
delete r;
}
m_scriptResolvers.clear();
Pipeline::instance()->removeResolver( m_databaseResolver );
delete m_databaseResolver;
delete m_servent;
delete m_scanManager;
//FIXME: Delete stuff created in initLocalCollection ?
#ifndef TOMAHAWK_HEADLESS
delete m_mainwindow;
#endif
delete m_infoSystem;
//FIXME: delete GeneratorFactory::registerFactory( "echonest", new EchonestFactory ); ?
delete m_database;
delete SipHandler::instance();
delete m_servent;
Pipeline::instance()->stop();
delete Pipeline::instance();
delete m_scanManager;
#ifndef TOMAHAWK_HEADLESS
delete m_audioEngine;
#endif
delete SipHandler::instance();
Pipeline::instance()->stop();
delete m_database;
delete m_infoSystem;
delete TomahawkUtils::proxyFactory();
delete TomahawkUtils::nam();
qDebug() << "Finished shutdown.";
}
@ -444,7 +469,8 @@ void
TomahawkApp::setupPipeline()
{
// setup resolvers for local content, and (cached) remote collection content
Pipeline::instance()->addResolver( new DatabaseResolver( 100 ) );
m_databaseResolver = new DatabaseResolver( 100 );
Pipeline::instance()->addResolver( m_databaseResolver );
// load script resolvers
foreach( QString resolver, TomahawkSettings::instance()->enabledScriptResolvers() )
@ -537,7 +563,6 @@ TomahawkApp::setupSIP()
#endif
qDebug() << "Connecting SIP classes";
//SipHandler::instance()->refreshProxy();
SipHandler::instance()->loadFromConfig( true );
}
}

View File

@ -42,6 +42,7 @@
#include "utils/tomahawkutils.h"
#include "kdsingleapplicationguard/kdsingleapplicationguard.h"
class DatabaseResolver;
class AudioEngine;
class Database;
class ScanManager;
@ -116,6 +117,7 @@ private:
QHash<QString, Tomahawk::ExternalResolver*> m_scriptResolvers;
Database* m_database;
DatabaseResolver* m_databaseResolver;
ScanManager *m_scanManager;
AudioEngine* m_audioEngine;
Servent* m_servent;