Use std::make_shared

This commit is contained in:
Jonas Kvinge 2021-07-11 19:57:18 +02:00
parent 10fc6b4562
commit c6da0864f2
5 changed files with 25 additions and 23 deletions

View File

@ -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<T>(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<CollectionPlaylistItem>(song);
}
else {
items << PlaylistItemPtr(new SongPlaylistItem(song));
items << std::make_shared<SongPlaylistItem>(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<CollectionPlaylistItem>(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<SongPlaylistItem>(song);
}
items_[i] = new_item;
emit dataChanged(index(i, 0), index(i, ColumnCount - 1));

View File

@ -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<SongPlaylistItem>(from_list);
}
}

View File

@ -21,6 +21,8 @@
#include "config.h"
#include <memory>
#include <QtConcurrentRun>
#include <QFuture>
#include <QString>
@ -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<CollectionPlaylistItem>();
case Song::Source_Subsonic:
case Song::Source_Tidal:
case Song::Source_Qobuz:
return std::make_shared<InternetPlaylistItem>(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<RadioPlaylistItem>(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<SongPlaylistItem>(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<CollectionPlaylistItem>(song);
case Song::Source_Subsonic:
case Song::Source_Tidal:
case Song::Source_Qobuz:
return std::make_shared<InternetPlaylistItem>(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<RadioPlaylistItem>(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<SongPlaylistItem>(song);
}

View File

@ -48,8 +48,8 @@ class PlaylistItem : public std::enable_shared_from_this<PlaylistItem> {
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<PlaylistItem> NewFromSource(const Song::Source source);
static std::shared_ptr<PlaylistItem> NewFromSong(const Song &song);
enum Option {
Default = 0x00,

View File

@ -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<CollectionPlaylistItem>(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<CollectionPlaylistItem>(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<CollectionPlaylistItem>(one));
PlaylistItemPtr item_two(std::make_shared<CollectionPlaylistItem>(two));
PlaylistItemPtr item_three(std::make_shared<CollectionPlaylistItem>(one));
playlist_.InsertItems(PlaylistItemList() << item_one << item_two << item_three);
EXPECT_EQ(2, playlist_.collection_items_by_id(1).count());