diff --git a/src/core/player.cpp b/src/core/player.cpp index aaee93913..e03e2d2dd 100644 --- a/src/core/player.cpp +++ b/src/core/player.cpp @@ -77,13 +77,13 @@ Player::Player(PlaylistManager* playlists, LastFMService* lastfm, lastfm_(lastfm), stream_change_type_(Engine::First) { - engine_ = createEngine(engine); + engine_.reset(createEngine(engine)); settings_.beginGroup("Player"); SetVolume(settings_.value("volume", 50).toInt()); - connect(engine_, SIGNAL(Error(QString)), SIGNAL(Error(QString))); + connect(engine_.get(), SIGNAL(Error(QString)), SIGNAL(Error(QString))); // MPRIS DBus interface. #ifdef Q_WS_X11 @@ -97,7 +97,6 @@ Player::Player(PlaylistManager* playlists, LastFMService* lastfm, } Player::~Player() { - delete engine_; } EngineBase* Player::createEngine(Engine::Type engine) { @@ -135,10 +134,10 @@ void Player::Init() { if (!engine_->Init()) qFatal("Error initialising audio engine"); - connect(engine_, SIGNAL(StateChanged(Engine::State)), SLOT(EngineStateChanged(Engine::State))); - connect(engine_, SIGNAL(TrackAboutToEnd()), SLOT(TrackAboutToEnd())); - connect(engine_, SIGNAL(TrackEnded()), SLOT(TrackEnded())); - connect(engine_, SIGNAL(MetaData(Engine::SimpleMetaBundle)), + connect(engine_.get(), SIGNAL(StateChanged(Engine::State)), SLOT(EngineStateChanged(Engine::State))); + connect(engine_.get(), SIGNAL(TrackAboutToEnd()), SLOT(TrackAboutToEnd())); + connect(engine_.get(), SIGNAL(TrackEnded()), SLOT(TrackEnded())); + connect(engine_.get(), SIGNAL(MetaData(Engine::SimpleMetaBundle)), SLOT(EngineMetadataReceived(Engine::SimpleMetaBundle))); engine_->SetVolume(settings_.value("volume", 50).toInt()); diff --git a/src/core/player.h b/src/core/player.h index 087c1725c..6f736f960 100644 --- a/src/core/player.h +++ b/src/core/player.h @@ -20,6 +20,8 @@ #include #include +#include + #include "core/song.h" #include "engines/engine_fwd.h" #include "playlist/playlistitem.h" @@ -59,7 +61,7 @@ class Player : public QObject { EngineBase* createEngine(Engine::Type engine); void Init(); - EngineBase* GetEngine() { return engine_; } + EngineBase* GetEngine() { return engine_.get(); } Engine::State GetState() const; int GetVolume() const; @@ -172,7 +174,7 @@ class Player : public QObject { boost::shared_ptr current_item_; - EngineBase* engine_; + boost::scoped_ptr engine_; Engine::TrackChangeType stream_change_type_; QUrl loading_async_;