From c6da0864f2c2e02e497880d04937ef017db33ab6 Mon Sep 17 00:00:00 2001 From: Jonas Kvinge Date: Sun, 11 Jul 2021 19:57:18 +0200 Subject: [PATCH] Use std::make_shared --- src/playlist/playlist.cpp | 10 +++++----- src/playlist/playlistbackend.cpp | 2 +- src/playlist/playlistitem.cpp | 22 ++++++++++++---------- src/playlist/playlistitem.h | 4 ++-- tests/src/playlist_test.cpp | 10 +++++----- 5 files changed, 25 insertions(+), 23 deletions(-) diff --git a/src/playlist/playlist.cpp b/src/playlist/playlist.cpp index 04e9c96c..fd3abdd7 100644 --- a/src/playlist/playlist.cpp +++ b/src/playlist/playlist.cpp @@ -183,7 +183,7 @@ void Playlist::InsertSongItems(const SongList &songs, const int pos, const bool PlaylistItemList items; items.reserve(songs.count()); for (const Song &song : songs) { - items << PlaylistItemPtr(new T(song)); + items << std::make_shared(song); } InsertItems(items, pos, play_now, enqueue, enqueue_next); @@ -1140,10 +1140,10 @@ void Playlist::InsertSongsOrCollectionItems(const SongList &songs, const int pos PlaylistItemList items; for (const Song &song : songs) { if (song.is_collection_song()) { - items << PlaylistItemPtr(new CollectionPlaylistItem(song)); + items << std::make_shared(song); } else { - items << PlaylistItemPtr(new SongPlaylistItem(song)); + items << std::make_shared(song); } } InsertItems(items, pos, play_now, enqueue, enqueue_next); @@ -1195,12 +1195,12 @@ void Playlist::UpdateItems(SongList songs) { if (item->Metadata().url() == song.url() && (item->Metadata().filetype() == Song::FileType_Unknown || item->Metadata().filetype() == Song::FileType_Stream || item->Metadata().filetype() == Song::FileType_CDDA)) { PlaylistItemPtr new_item; if (song.is_collection_song()) { - new_item = PlaylistItemPtr(new CollectionPlaylistItem(song)); + new_item = std::make_shared(song); if (collection_items_by_id_.contains(song.id(), item)) collection_items_by_id_.remove(song.id(), item); collection_items_by_id_.insert(song.id(), new_item); } else { - new_item = PlaylistItemPtr(new SongPlaylistItem(song)); + new_item = std::make_shared(song); } items_[i] = new_item; emit dataChanged(index(i, 0), index(i, ColumnCount - 1)); diff --git a/src/playlist/playlistbackend.cpp b/src/playlist/playlistbackend.cpp index d5fb2983..60fe2873 100644 --- a/src/playlist/playlistbackend.cpp +++ b/src/playlist/playlistbackend.cpp @@ -304,7 +304,7 @@ PlaylistItemPtr PlaylistBackend::RestoreCueData(PlaylistItemPtr item, std::share for (const Song &from_list : song_list) { if (from_list.url().toEncoded() == song.url().toEncoded() && from_list.beginning_nanosec() == song.beginning_nanosec()) { // We found a matching section; replace the input item with a new one containing CUE metadata - return PlaylistItemPtr(new SongPlaylistItem(from_list)); + return std::make_shared(from_list); } } diff --git a/src/playlist/playlistitem.cpp b/src/playlist/playlistitem.cpp index a93d22cb..e838c86e 100644 --- a/src/playlist/playlistitem.cpp +++ b/src/playlist/playlistitem.cpp @@ -21,6 +21,8 @@ #include "config.h" +#include + #include #include #include @@ -39,19 +41,19 @@ #include "internet/internetplaylistitem.h" #include "radios/radioplaylistitem.h" -PlaylistItem *PlaylistItem::NewFromSource(const Song::Source source) { +PlaylistItemPtr PlaylistItem::NewFromSource(const Song::Source source) { switch (source) { case Song::Source_Collection: - return new CollectionPlaylistItem(); + return std::make_shared(); case Song::Source_Subsonic: case Song::Source_Tidal: case Song::Source_Qobuz: + return std::make_shared(source); case Song::Source_Stream: - return new InternetPlaylistItem(source); case Song::Source_RadioParadise: case Song::Source_SomaFM: - return new RadioPlaylistItem(source); + return std::make_shared(source); case Song::Source_LocalFile: case Song::Source_CDDA: case Song::Source_Device: @@ -59,23 +61,23 @@ PlaylistItem *PlaylistItem::NewFromSource(const Song::Source source) { break; } - return new SongPlaylistItem(source); + return std::make_shared(source); } -PlaylistItem *PlaylistItem::NewFromSong(const Song &song) { +PlaylistItemPtr PlaylistItem::NewFromSong(const Song &song) { switch (song.source()) { case Song::Source_Collection: - return new CollectionPlaylistItem(song); + return std::make_shared(song); case Song::Source_Subsonic: case Song::Source_Tidal: case Song::Source_Qobuz: + return std::make_shared(song); case Song::Source_Stream: - return new InternetPlaylistItem(song); case Song::Source_RadioParadise: case Song::Source_SomaFM: - return new RadioPlaylistItem(song); + return std::make_shared(song); case Song::Source_LocalFile: case Song::Source_CDDA: case Song::Source_Device: @@ -83,7 +85,7 @@ PlaylistItem *PlaylistItem::NewFromSong(const Song &song) { break; } - return new SongPlaylistItem(song); + return std::make_shared(song); } diff --git a/src/playlist/playlistitem.h b/src/playlist/playlistitem.h index d82ef5db..3a5b3512 100644 --- a/src/playlist/playlistitem.h +++ b/src/playlist/playlistitem.h @@ -48,8 +48,8 @@ class PlaylistItem : public std::enable_shared_from_this { explicit PlaylistItem(const Song::Source source) : should_skip_(false), source_(source) {} virtual ~PlaylistItem(); - static PlaylistItem *NewFromSource(const Song::Source source); - static PlaylistItem *NewFromSong(const Song &song); + static std::shared_ptr NewFromSource(const Song::Source source); + static std::shared_ptr NewFromSong(const Song &song); enum Option { Default = 0x00, diff --git a/tests/src/playlist_test.cpp b/tests/src/playlist_test.cpp index e4eebdb0..a940dbbe 100644 --- a/tests/src/playlist_test.cpp +++ b/tests/src/playlist_test.cpp @@ -480,7 +480,7 @@ TEST_F(PlaylistTest, CollectionIdMapSingle) { song.Init("title", "artist", "album", 123); song.set_id(1); - PlaylistItemPtr item(new CollectionPlaylistItem(song)); + PlaylistItemPtr item(std::make_shared(song)); playlist_.InsertItems(PlaylistItemList() << item); EXPECT_EQ(0, playlist_.collection_items_by_id(-1).count()); @@ -501,7 +501,7 @@ TEST_F(PlaylistTest, CollectionIdMapInvalid) { invalid.Init("title", "artist", "album", 123); ASSERT_EQ(-1, invalid.id()); - PlaylistItemPtr item(new CollectionPlaylistItem(invalid)); + PlaylistItemPtr item(std::make_shared(invalid)); playlist_.InsertItems(PlaylistItemList() << item); EXPECT_EQ(0, playlist_.collection_items_by_id(-1).count()); @@ -521,9 +521,9 @@ TEST_F(PlaylistTest, CollectionIdMapMulti) { two.Init("title 2", "artist 2", "album 2", 123); two.set_id(2); - PlaylistItemPtr item_one(new CollectionPlaylistItem(one)); - PlaylistItemPtr item_two(new CollectionPlaylistItem(two)); - PlaylistItemPtr item_three(new CollectionPlaylistItem(one)); + PlaylistItemPtr item_one(std::make_shared(one)); + PlaylistItemPtr item_two(std::make_shared(two)); + PlaylistItemPtr item_three(std::make_shared(one)); playlist_.InsertItems(PlaylistItemList() << item_one << item_two << item_three); EXPECT_EQ(2, playlist_.collection_items_by_id(1).count());