diff --git a/src/libtomahawk/Playlist.cpp b/src/libtomahawk/Playlist.cpp index a3ac47770..f6d5cfa45 100644 --- a/src/libtomahawk/Playlist.cpp +++ b/src/libtomahawk/Playlist.cpp @@ -503,10 +503,13 @@ void Playlist::removeFromDatabase() { Q_D( Playlist ); + + emit aboutToBeDeleted( d->weakSelf.toStrongRef() ); DatabaseCommand_DeletePlaylist* cmd = new DatabaseCommand_DeletePlaylist( d->source, d->guid ); - Database::instance()->enqueue( Tomahawk::dbcmd_ptr(cmd) ); + Database::instance()->enqueue( Tomahawk::dbcmd_ptr( cmd ) ); } + Playlist::Playlist( PlaylistPrivate *d ) : d_ptr( d ) { @@ -906,7 +909,6 @@ Playlist::updaters() const void PlaylistRemovalHandler::remove( const playlist_ptr& playlist ) { - emit playlist->aboutToBeDeleted( playlist ); playlist->removeFromDatabase(); } diff --git a/src/libtomahawk/Playlist_p.h b/src/libtomahawk/Playlist_p.h index 5ff1b5c1e..ecf8ac103 100644 --- a/src/libtomahawk/Playlist_p.h +++ b/src/libtomahawk/Playlist_p.h @@ -87,9 +87,9 @@ public: { } - Playlist* q_ptr; Q_DECLARE_PUBLIC ( Playlist ) + private: QWeakPointer< Playlist > weakSelf; source_ptr source;