mirror of
https://github.com/tomahawk-player/tomahawk.git
synced 2025-08-18 11:51:44 +02:00
don't crash so much on exit, it's not nice
This commit is contained in:
@@ -151,12 +151,6 @@ using namespace Tomahawk;
|
|||||||
|
|
||||||
TomahawkApp::TomahawkApp( int& argc, char *argv[] )
|
TomahawkApp::TomahawkApp( int& argc, char *argv[] )
|
||||||
: TOMAHAWK_APPLICATION( argc, argv )
|
: TOMAHAWK_APPLICATION( argc, argv )
|
||||||
, m_database( 0 )
|
|
||||||
, m_scanManager( 0 )
|
|
||||||
, m_audioEngine( 0 )
|
|
||||||
, m_servent( 0 )
|
|
||||||
, m_shortcutHandler( 0 )
|
|
||||||
, m_mainwindow( 0 )
|
|
||||||
{
|
{
|
||||||
qDebug() << "TomahawkApp thread:" << this->thread();
|
qDebug() << "TomahawkApp thread:" << this->thread();
|
||||||
setOrganizationName( QLatin1String( TOMAHAWK_ORGANIZATION_NAME ) );
|
setOrganizationName( QLatin1String( TOMAHAWK_ORGANIZATION_NAME ) );
|
||||||
@@ -209,12 +203,12 @@ TomahawkApp::init()
|
|||||||
|
|
||||||
Echonest::Config::instance()->setAPIKey( "JRIHWEP6GPOER2QQ6" );
|
Echonest::Config::instance()->setAPIKey( "JRIHWEP6GPOER2QQ6" );
|
||||||
|
|
||||||
m_audioEngine = new AudioEngine;
|
m_audioEngine = QWeakPointer<AudioEngine>( new AudioEngine );
|
||||||
m_scanManager = new ScanManager( this );
|
m_scanManager = QWeakPointer<ScanManager>( new ScanManager( this ) );
|
||||||
new Pipeline( this );
|
new Pipeline( this );
|
||||||
|
|
||||||
m_servent = new Servent( this );
|
m_servent = QWeakPointer<Servent>( new Servent( this ) );
|
||||||
connect( m_servent, SIGNAL( ready() ), SLOT( setupSIP() ) );
|
connect( m_servent.data(), SIGNAL( ready() ), SLOT( setupSIP() ) );
|
||||||
|
|
||||||
qDebug() << "Init Database.";
|
qDebug() << "Init Database.";
|
||||||
setupDatabase();
|
setupDatabase();
|
||||||
@@ -224,7 +218,7 @@ TomahawkApp::init()
|
|||||||
|
|
||||||
// Register shortcut handler for this platform
|
// Register shortcut handler for this platform
|
||||||
#ifdef Q_WS_MAC
|
#ifdef Q_WS_MAC
|
||||||
m_shortcutHandler = new MacShortcutHandler( this );
|
m_shortcutHandler = QWeakPointer<MacShortcutHandler>( new MacShortcutHandler( this ) );
|
||||||
Tomahawk::setShortcutHandler( static_cast<MacShortcutHandler*>( m_shortcutHandler) );
|
Tomahawk::setShortcutHandler( static_cast<MacShortcutHandler*>( m_shortcutHandler) );
|
||||||
|
|
||||||
Tomahawk::setApplicationHandler( this );
|
Tomahawk::setApplicationHandler( this );
|
||||||
@@ -249,20 +243,20 @@ TomahawkApp::init()
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
// Connect up shortcuts
|
// Connect up shortcuts
|
||||||
if ( m_shortcutHandler )
|
if ( !m_shortcutHandler.isNull() )
|
||||||
{
|
{
|
||||||
connect( m_shortcutHandler, SIGNAL( playPause() ), m_audioEngine, SLOT( playPause() ) );
|
connect( m_shortcutHandler.data(), SIGNAL( playPause() ), m_audioEngine.data(), SLOT( playPause() ) );
|
||||||
connect( m_shortcutHandler, SIGNAL( pause() ), m_audioEngine, SLOT( pause() ) );
|
connect( m_shortcutHandler.data(), SIGNAL( pause() ), m_audioEngine.data(), SLOT( pause() ) );
|
||||||
connect( m_shortcutHandler, SIGNAL( stop() ), m_audioEngine, SLOT( stop() ) );
|
connect( m_shortcutHandler.data(), SIGNAL( stop() ), m_audioEngine.data(), SLOT( stop() ) );
|
||||||
connect( m_shortcutHandler, SIGNAL( previous() ), m_audioEngine, SLOT( previous() ) );
|
connect( m_shortcutHandler.data(), SIGNAL( previous() ), m_audioEngine.data(), SLOT( previous() ) );
|
||||||
connect( m_shortcutHandler, SIGNAL( next() ), m_audioEngine, SLOT( next() ) );
|
connect( m_shortcutHandler.data(), SIGNAL( next() ), m_audioEngine.data(), SLOT( next() ) );
|
||||||
connect( m_shortcutHandler, SIGNAL( volumeUp() ), m_audioEngine, SLOT( raiseVolume() ) );
|
connect( m_shortcutHandler.data(), SIGNAL( volumeUp() ), m_audioEngine.data(), SLOT( raiseVolume() ) );
|
||||||
connect( m_shortcutHandler, SIGNAL( volumeDown() ), m_audioEngine, SLOT( lowerVolume() ) );
|
connect( m_shortcutHandler.data(), SIGNAL( volumeDown() ), m_audioEngine.data(), SLOT( lowerVolume() ) );
|
||||||
connect( m_shortcutHandler, SIGNAL( mute() ), m_audioEngine, SLOT( mute() ) );
|
connect( m_shortcutHandler.data(), SIGNAL( mute() ), m_audioEngine.data(), SLOT( mute() ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
qDebug() << "Init InfoSystem.";
|
qDebug() << "Init InfoSystem.";
|
||||||
m_infoSystem = new Tomahawk::InfoSystem::InfoSystem( this );
|
m_infoSystem = QWeakPointer<Tomahawk::InfoSystem::InfoSystem>( new Tomahawk::InfoSystem::InfoSystem( this ) );
|
||||||
|
|
||||||
Echonest::Config::instance()->setAPIKey( "JRIHWEP6GPOER2QQ6" );
|
Echonest::Config::instance()->setAPIKey( "JRIHWEP6GPOER2QQ6" );
|
||||||
Echonest::Config::instance()->setNetworkAccessManager( TomahawkUtils::nam() );
|
Echonest::Config::instance()->setNetworkAccessManager( TomahawkUtils::nam() );
|
||||||
@@ -317,22 +311,27 @@ TomahawkApp::~TomahawkApp()
|
|||||||
}
|
}
|
||||||
m_scriptResolvers.clear();
|
m_scriptResolvers.clear();
|
||||||
|
|
||||||
delete m_servent;
|
if( !m_servent.isNull() )
|
||||||
delete m_scanManager;
|
delete m_servent.data();
|
||||||
|
if( !m_scanManager.isNull() )
|
||||||
|
delete m_scanManager.data();
|
||||||
#ifndef TOMAHAWK_HEADLESS
|
#ifndef TOMAHAWK_HEADLESS
|
||||||
delete m_mainwindow;
|
delete m_mainwindow;
|
||||||
delete m_audioEngine;
|
|
||||||
#endif
|
#endif
|
||||||
|
if( !m_audioEngine.isNull() )
|
||||||
|
delete m_audioEngine.data();
|
||||||
|
|
||||||
delete m_infoSystem;
|
if( !m_infoSystem.isNull() )
|
||||||
|
delete m_infoSystem.data();
|
||||||
|
|
||||||
//FIXME: delete GeneratorFactory::registerFactory( "echonest", new EchonestFactory ); ?
|
//FIXME: delete GeneratorFactory::registerFactory( "echonest", new EchonestFactory ); ?
|
||||||
|
|
||||||
delete SipHandler::instance();
|
delete SipHandler::instance();
|
||||||
delete m_servent;
|
|
||||||
|
|
||||||
delete m_scanManager;
|
if( !m_scanManager.isNull() )
|
||||||
delete m_database;
|
delete m_scanManager.data();
|
||||||
|
if( !m_database.isNull() )
|
||||||
|
delete m_database.data();
|
||||||
|
|
||||||
Pipeline::instance()->stop();
|
Pipeline::instance()->stop();
|
||||||
delete Pipeline::instance();
|
delete Pipeline::instance();
|
||||||
@@ -431,7 +430,7 @@ TomahawkApp::setupDatabase()
|
|||||||
}
|
}
|
||||||
|
|
||||||
qDebug() << "Using database:" << dbpath;
|
qDebug() << "Using database:" << dbpath;
|
||||||
m_database = new Database( dbpath, this );
|
m_database = QWeakPointer<Database>( new Database( dbpath, this ) );
|
||||||
Pipeline::instance()->databaseReady();
|
Pipeline::instance()->databaseReady();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -545,7 +544,7 @@ TomahawkApp::setupSIP()
|
|||||||
if( !arguments().contains( "--nosip" ) )
|
if( !arguments().contains( "--nosip" ) )
|
||||||
{
|
{
|
||||||
#ifdef GLOOX_FOUND
|
#ifdef GLOOX_FOUND
|
||||||
m_xmppBot = new XMPPBot( this );
|
m_xmppBot = QWeakPointer<XMPPBot>( new XMPPBot( this ) );
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
qDebug() << "Connecting SIP classes";
|
qDebug() << "Connecting SIP classes";
|
||||||
|
@@ -36,6 +36,7 @@
|
|||||||
|
|
||||||
#include "typedefs.h"
|
#include "typedefs.h"
|
||||||
#include "playlist.h"
|
#include "playlist.h"
|
||||||
|
#include "source.h"
|
||||||
#include "resolver.h"
|
#include "resolver.h"
|
||||||
#include "network/servent.h"
|
#include "network/servent.h"
|
||||||
|
|
||||||
@@ -82,7 +83,7 @@ public:
|
|||||||
void init();
|
void init();
|
||||||
static TomahawkApp* instance();
|
static TomahawkApp* instance();
|
||||||
|
|
||||||
XMPPBot* xmppBot() { return m_xmppBot; }
|
XMPPBot* xmppBot() { return m_xmppBot.data(); }
|
||||||
|
|
||||||
#ifndef TOMAHAWK_HEADLESS
|
#ifndef TOMAHAWK_HEADLESS
|
||||||
AudioControls* audioControls();
|
AudioControls* audioControls();
|
||||||
@@ -115,13 +116,13 @@ private:
|
|||||||
QList<Tomahawk::collection_ptr> m_collections;
|
QList<Tomahawk::collection_ptr> m_collections;
|
||||||
QHash<QString, Tomahawk::ExternalResolver*> m_scriptResolvers;
|
QHash<QString, Tomahawk::ExternalResolver*> m_scriptResolvers;
|
||||||
|
|
||||||
Database* m_database;
|
QWeakPointer<Database> m_database;
|
||||||
ScanManager *m_scanManager;
|
QWeakPointer<ScanManager> m_scanManager;
|
||||||
AudioEngine* m_audioEngine;
|
QWeakPointer<AudioEngine> m_audioEngine;
|
||||||
Servent* m_servent;
|
QWeakPointer<Servent> m_servent;
|
||||||
Tomahawk::InfoSystem::InfoSystem* m_infoSystem;
|
QWeakPointer<Tomahawk::InfoSystem::InfoSystem> m_infoSystem;
|
||||||
XMPPBot* m_xmppBot;
|
QWeakPointer<XMPPBot> m_xmppBot;
|
||||||
Tomahawk::ShortcutHandler* m_shortcutHandler;
|
QWeakPointer<Tomahawk::ShortcutHandler> m_shortcutHandler;
|
||||||
bool m_scrubFriendlyName;
|
bool m_scrubFriendlyName;
|
||||||
|
|
||||||
#ifdef LIBLASTFM_FOUND
|
#ifdef LIBLASTFM_FOUND
|
||||||
|
Reference in New Issue
Block a user