From 413052bf8e76c007cbc9c620a329ca1e47f2cdbf Mon Sep 17 00:00:00 2001 From: Christian Muehlhaeuser Date: Wed, 22 Feb 2012 02:09:24 +0100 Subject: [PATCH] * Destroy Pipeline properly and deactivate it earlier during shutdown. --- .../database/databasecommand_resolve.cpp | 7 ++++++- src/libtomahawk/pipeline.cpp | 1 + src/libtomahawk/pipeline.h | 2 ++ src/tomahawkapp.cpp | 14 ++++++-------- 4 files changed, 15 insertions(+), 9 deletions(-) diff --git a/src/libtomahawk/database/databasecommand_resolve.cpp b/src/libtomahawk/database/databasecommand_resolve.cpp index 1384f828e..ae6e92910 100644 --- a/src/libtomahawk/database/databasecommand_resolve.cpp +++ b/src/libtomahawk/database/databasecommand_resolve.cpp @@ -20,6 +20,7 @@ #include "artist.h" #include "album.h" +#include "pipeline.h" #include "sourcelist.h" #include "utils/logger.h" @@ -30,10 +31,14 @@ DatabaseCommand_Resolve::DatabaseCommand_Resolve( const query_ptr& query ) : DatabaseCommand() , m_query( query ) { + Q_ASSERT( Pipeline::instance()->isRunning() ); } + DatabaseCommand_Resolve::~DatabaseCommand_Resolve() -{} +{ +} + void DatabaseCommand_Resolve::exec( DatabaseImpl* lib ) diff --git a/src/libtomahawk/pipeline.cpp b/src/libtomahawk/pipeline.cpp index 73d14fce4..18eb69347 100644 --- a/src/libtomahawk/pipeline.cpp +++ b/src/libtomahawk/pipeline.cpp @@ -61,6 +61,7 @@ Pipeline::Pipeline( QObject* parent ) Pipeline::~Pipeline() { + tDebug() << Q_FUNC_INFO; m_running = false; // stop script resolvers diff --git a/src/libtomahawk/pipeline.h b/src/libtomahawk/pipeline.h index 8ef9a607b..fdbd519d6 100644 --- a/src/libtomahawk/pipeline.h +++ b/src/libtomahawk/pipeline.h @@ -48,6 +48,8 @@ public: explicit Pipeline( QObject* parent = 0 ); virtual ~Pipeline(); + bool isRunning() const { return m_running; } + unsigned int pendingQueryCount() const { return m_queries_pending.count(); } unsigned int activeQueryCount() const { return m_qidsState.count(); } diff --git a/src/tomahawkapp.cpp b/src/tomahawkapp.cpp index 138d6827f..9b28e3f50 100644 --- a/src/tomahawkapp.cpp +++ b/src/tomahawkapp.cpp @@ -19,8 +19,6 @@ #include "tomahawkapp.h" -#include - #include #include #include @@ -170,7 +168,7 @@ TomahawkApp::init() m_scanManager = QWeakPointer( new ScanManager( this ) ); // init pipeline and resolver factories - new Pipeline( this ); + new Pipeline(); #ifndef ENABLE_HEADLESS Pipeline::instance()->addExternalResolverFactory( boost::bind( &QtScriptResolver::factory, _1 ) ); @@ -298,6 +296,8 @@ TomahawkApp::~TomahawkApp() { tLog() << "Shutting down Tomahawk..."; + Pipeline::instance()->stop(); + if ( !m_servent.isNull() ) delete m_servent.data(); if ( !m_scanManager.isNull() ) @@ -313,8 +313,6 @@ TomahawkApp::~TomahawkApp() delete SipHandler::instance(); - Pipeline::instance()->stop(); - #ifndef ENABLE_HEADLESS delete m_mainwindow; #ifdef LIBATTICA_FOUND @@ -322,11 +320,11 @@ TomahawkApp::~TomahawkApp() #endif #endif + delete Pipeline::instance(); + if ( !m_database.isNull() ) delete m_database.data(); - delete Pipeline::instance(); - tLog() << "Finished shutdown."; } @@ -464,7 +462,6 @@ TomahawkApp::initHTTP() tLog() << "Starting HTTPd on" << m_session.listenInterface().toString() << m_session.port(); m_session.start(); - } @@ -518,6 +515,7 @@ TomahawkApp::initServent() } } + // Called after Servent emits ready() void TomahawkApp::initSIP()