Use std::make_shared
This commit is contained in:
@@ -183,7 +183,7 @@ void Playlist::InsertSongItems(const SongList &songs, const int pos, const bool
|
|||||||
PlaylistItemList items;
|
PlaylistItemList items;
|
||||||
items.reserve(songs.count());
|
items.reserve(songs.count());
|
||||||
for (const Song &song : songs) {
|
for (const Song &song : songs) {
|
||||||
items << PlaylistItemPtr(new T(song));
|
items << std::make_shared<T>(song);
|
||||||
}
|
}
|
||||||
|
|
||||||
InsertItems(items, pos, play_now, enqueue, enqueue_next);
|
InsertItems(items, pos, play_now, enqueue, enqueue_next);
|
||||||
@@ -1140,10 +1140,10 @@ void Playlist::InsertSongsOrCollectionItems(const SongList &songs, const int pos
|
|||||||
PlaylistItemList items;
|
PlaylistItemList items;
|
||||||
for (const Song &song : songs) {
|
for (const Song &song : songs) {
|
||||||
if (song.is_collection_song()) {
|
if (song.is_collection_song()) {
|
||||||
items << PlaylistItemPtr(new CollectionPlaylistItem(song));
|
items << std::make_shared<CollectionPlaylistItem>(song);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
items << PlaylistItemPtr(new SongPlaylistItem(song));
|
items << std::make_shared<SongPlaylistItem>(song);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
InsertItems(items, pos, play_now, enqueue, enqueue_next);
|
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)) {
|
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;
|
PlaylistItemPtr new_item;
|
||||||
if (song.is_collection_song()) {
|
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);
|
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);
|
collection_items_by_id_.insert(song.id(), new_item);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
new_item = PlaylistItemPtr(new SongPlaylistItem(song));
|
new_item = std::make_shared<SongPlaylistItem>(song);
|
||||||
}
|
}
|
||||||
items_[i] = new_item;
|
items_[i] = new_item;
|
||||||
emit dataChanged(index(i, 0), index(i, ColumnCount - 1));
|
emit dataChanged(index(i, 0), index(i, ColumnCount - 1));
|
||||||
|
|||||||
@@ -304,7 +304,7 @@ PlaylistItemPtr PlaylistBackend::RestoreCueData(PlaylistItemPtr item, std::share
|
|||||||
for (const Song &from_list : song_list) {
|
for (const Song &from_list : song_list) {
|
||||||
if (from_list.url().toEncoded() == song.url().toEncoded() && from_list.beginning_nanosec() == song.beginning_nanosec()) {
|
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
|
// 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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -21,6 +21,8 @@
|
|||||||
|
|
||||||
#include "config.h"
|
#include "config.h"
|
||||||
|
|
||||||
|
#include <memory>
|
||||||
|
|
||||||
#include <QtConcurrentRun>
|
#include <QtConcurrentRun>
|
||||||
#include <QFuture>
|
#include <QFuture>
|
||||||
#include <QString>
|
#include <QString>
|
||||||
@@ -39,19 +41,19 @@
|
|||||||
#include "internet/internetplaylistitem.h"
|
#include "internet/internetplaylistitem.h"
|
||||||
#include "radios/radioplaylistitem.h"
|
#include "radios/radioplaylistitem.h"
|
||||||
|
|
||||||
PlaylistItem *PlaylistItem::NewFromSource(const Song::Source source) {
|
PlaylistItemPtr PlaylistItem::NewFromSource(const Song::Source source) {
|
||||||
|
|
||||||
switch (source) {
|
switch (source) {
|
||||||
case Song::Source_Collection:
|
case Song::Source_Collection:
|
||||||
return new CollectionPlaylistItem();
|
return std::make_shared<CollectionPlaylistItem>();
|
||||||
case Song::Source_Subsonic:
|
case Song::Source_Subsonic:
|
||||||
case Song::Source_Tidal:
|
case Song::Source_Tidal:
|
||||||
case Song::Source_Qobuz:
|
case Song::Source_Qobuz:
|
||||||
|
return std::make_shared<InternetPlaylistItem>(source);
|
||||||
case Song::Source_Stream:
|
case Song::Source_Stream:
|
||||||
return new InternetPlaylistItem(source);
|
|
||||||
case Song::Source_RadioParadise:
|
case Song::Source_RadioParadise:
|
||||||
case Song::Source_SomaFM:
|
case Song::Source_SomaFM:
|
||||||
return new RadioPlaylistItem(source);
|
return std::make_shared<RadioPlaylistItem>(source);
|
||||||
case Song::Source_LocalFile:
|
case Song::Source_LocalFile:
|
||||||
case Song::Source_CDDA:
|
case Song::Source_CDDA:
|
||||||
case Song::Source_Device:
|
case Song::Source_Device:
|
||||||
@@ -59,23 +61,23 @@ PlaylistItem *PlaylistItem::NewFromSource(const Song::Source source) {
|
|||||||
break;
|
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()) {
|
switch (song.source()) {
|
||||||
case Song::Source_Collection:
|
case Song::Source_Collection:
|
||||||
return new CollectionPlaylistItem(song);
|
return std::make_shared<CollectionPlaylistItem>(song);
|
||||||
case Song::Source_Subsonic:
|
case Song::Source_Subsonic:
|
||||||
case Song::Source_Tidal:
|
case Song::Source_Tidal:
|
||||||
case Song::Source_Qobuz:
|
case Song::Source_Qobuz:
|
||||||
|
return std::make_shared<InternetPlaylistItem>(song);
|
||||||
case Song::Source_Stream:
|
case Song::Source_Stream:
|
||||||
return new InternetPlaylistItem(song);
|
|
||||||
case Song::Source_RadioParadise:
|
case Song::Source_RadioParadise:
|
||||||
case Song::Source_SomaFM:
|
case Song::Source_SomaFM:
|
||||||
return new RadioPlaylistItem(song);
|
return std::make_shared<RadioPlaylistItem>(song);
|
||||||
case Song::Source_LocalFile:
|
case Song::Source_LocalFile:
|
||||||
case Song::Source_CDDA:
|
case Song::Source_CDDA:
|
||||||
case Song::Source_Device:
|
case Song::Source_Device:
|
||||||
@@ -83,7 +85,7 @@ PlaylistItem *PlaylistItem::NewFromSong(const Song &song) {
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
return new SongPlaylistItem(song);
|
return std::make_shared<SongPlaylistItem>(song);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -48,8 +48,8 @@ class PlaylistItem : public std::enable_shared_from_this<PlaylistItem> {
|
|||||||
explicit PlaylistItem(const Song::Source source) : should_skip_(false), source_(source) {}
|
explicit PlaylistItem(const Song::Source source) : should_skip_(false), source_(source) {}
|
||||||
virtual ~PlaylistItem();
|
virtual ~PlaylistItem();
|
||||||
|
|
||||||
static PlaylistItem *NewFromSource(const Song::Source source);
|
static std::shared_ptr<PlaylistItem> NewFromSource(const Song::Source source);
|
||||||
static PlaylistItem *NewFromSong(const Song &song);
|
static std::shared_ptr<PlaylistItem> NewFromSong(const Song &song);
|
||||||
|
|
||||||
enum Option {
|
enum Option {
|
||||||
Default = 0x00,
|
Default = 0x00,
|
||||||
|
|||||||
@@ -480,7 +480,7 @@ TEST_F(PlaylistTest, CollectionIdMapSingle) {
|
|||||||
song.Init("title", "artist", "album", 123);
|
song.Init("title", "artist", "album", 123);
|
||||||
song.set_id(1);
|
song.set_id(1);
|
||||||
|
|
||||||
PlaylistItemPtr item(new CollectionPlaylistItem(song));
|
PlaylistItemPtr item(std::make_shared<CollectionPlaylistItem>(song));
|
||||||
playlist_.InsertItems(PlaylistItemList() << item);
|
playlist_.InsertItems(PlaylistItemList() << item);
|
||||||
|
|
||||||
EXPECT_EQ(0, playlist_.collection_items_by_id(-1).count());
|
EXPECT_EQ(0, playlist_.collection_items_by_id(-1).count());
|
||||||
@@ -501,7 +501,7 @@ TEST_F(PlaylistTest, CollectionIdMapInvalid) {
|
|||||||
invalid.Init("title", "artist", "album", 123);
|
invalid.Init("title", "artist", "album", 123);
|
||||||
ASSERT_EQ(-1, invalid.id());
|
ASSERT_EQ(-1, invalid.id());
|
||||||
|
|
||||||
PlaylistItemPtr item(new CollectionPlaylistItem(invalid));
|
PlaylistItemPtr item(std::make_shared<CollectionPlaylistItem>(invalid));
|
||||||
playlist_.InsertItems(PlaylistItemList() << item);
|
playlist_.InsertItems(PlaylistItemList() << item);
|
||||||
|
|
||||||
EXPECT_EQ(0, playlist_.collection_items_by_id(-1).count());
|
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.Init("title 2", "artist 2", "album 2", 123);
|
||||||
two.set_id(2);
|
two.set_id(2);
|
||||||
|
|
||||||
PlaylistItemPtr item_one(new CollectionPlaylistItem(one));
|
PlaylistItemPtr item_one(std::make_shared<CollectionPlaylistItem>(one));
|
||||||
PlaylistItemPtr item_two(new CollectionPlaylistItem(two));
|
PlaylistItemPtr item_two(std::make_shared<CollectionPlaylistItem>(two));
|
||||||
PlaylistItemPtr item_three(new CollectionPlaylistItem(one));
|
PlaylistItemPtr item_three(std::make_shared<CollectionPlaylistItem>(one));
|
||||||
playlist_.InsertItems(PlaylistItemList() << item_one << item_two << item_three);
|
playlist_.InsertItems(PlaylistItemList() << item_one << item_two << item_three);
|
||||||
|
|
||||||
EXPECT_EQ(2, playlist_.collection_items_by_id(1).count());
|
EXPECT_EQ(2, playlist_.collection_items_by_id(1).count());
|
||||||
|
|||||||
Reference in New Issue
Block a user