1
0
mirror of https://github.com/cookiengineer/audacity synced 2025-06-20 14:20:06 +02:00

Store tracks in TrackList with shared_ptr ...

... but still use unique_ptr from track factories and importers.
This commit is contained in:
Paul Licameli 2017-06-22 19:25:46 -04:00
parent d52d8de296
commit 68dfdab843
4 changed files with 6 additions and 12 deletions

View File

@ -6048,7 +6048,7 @@ int AudacityProject::FindClips(double t0, double t1, bool next, std::vector<Foun
bool anyWaveTracksSelected =
tracks->end() != std::find_if(tracks->begin(), tracks->end(),
[] (const movable_ptr<Track>& t) {
[] (const std::shared_ptr<Track>& t) {
return t->GetSelected() && t->GetKind() == Track::Wave; });
// first search the tracks individually
@ -6136,7 +6136,7 @@ void AudacityProject::OnSelectClip(bool next)
if (nTracksSearched > 1) {
if (result.waveTrack->GetName() == result.waveTrack->GetDefaultName()) {
auto track = std::find_if(GetTracks()->begin(), GetTracks()->end(),
[&] (const movable_ptr<Track>& t) { return t.get() == result.waveTrack; });
[&] (const std::shared_ptr<Track>& t) { return t.get() == result.waveTrack; });
temp.Printf(wxT("%s %d "), _("Track"), std::distance(GetTracks()->begin(), track) + 1);
}
else
@ -7115,7 +7115,7 @@ int AudacityProject::FindClipBoundaries(double time, bool next, std::vector<Foun
bool anyWaveTracksSelected =
tracks->end() != std::find_if(tracks->begin(), tracks->end(),
[] (const movable_ptr<Track>& t) {
[] (const std::shared_ptr<Track>& t) {
return t->GetSelected() && t->GetKind() == Track::Wave; });
// first search the tracks individually
@ -7188,7 +7188,7 @@ wxString AudacityProject::ClipBoundaryMessage(int nTracksSearched, const std::ve
if (nTracksSearched > 1) {
if (result.waveTrack->GetName() == result.waveTrack->GetDefaultName()) {
auto track = std::find_if(GetTracks()->begin(), GetTracks()->end(),
[&] (const movable_ptr<Track>& t) { return t.get() == result.waveTrack; });
[&] (const std::shared_ptr<Track>& t) { return t.get() == result.waveTrack; });
temp.Printf(wxT("%s %d "), _("Track"), std::distance(GetTracks()->begin(), track) + 1);
}
else

View File

@ -933,8 +933,6 @@ Track *TrackList::AddToHead(std::unique_ptr<TrackKind> &&t)
// Make instantiations for the linker to find
template Track *TrackList::AddToHead<TimeTrack>(std::unique_ptr<TimeTrack> &&);
#ifdef __AUDACITY_OLD_STD__
template<typename TrackKind>
Track *TrackList::Add(std::shared_ptr<TrackKind> &&t)
{
@ -951,8 +949,6 @@ Track *TrackList::Add(std::shared_ptr<TrackKind> &&t)
template Track *TrackList::Add<Track>(std::shared_ptr<Track> &&);
template Track *TrackList::Add<WaveTrack>(std::shared_ptr<WaveTrack> &&);
#endif
auto TrackList::Replace(Track * t, value_type &&with) -> value_type
{
value_type holder;

View File

@ -72,7 +72,7 @@ class NoteTrack;
class TrackList;
using ListOfTracks = std::list<movable_ptr<Track>>;
using ListOfTracks = std::list< std::shared_ptr< Track > >;
using TrackNodePointer = ListOfTracks::iterator;
@ -515,10 +515,8 @@ class TrackList final : public wxEvtHandler, public ListOfTracks
template<typename TrackKind>
Track *AddToHead(std::unique_ptr<TrackKind> &&t);
#ifdef __AUDACITY_OLD_STD__
template<typename TrackKind>
Track *Add(std::shared_ptr<TrackKind> &&t);
#endif
/// Replace first track with second track, give back a holder
value_type Replace(Track * t, value_type &&with);

View File

@ -415,7 +415,7 @@ protected:
private:
Effect *mpEffect{};
LabelTrack *mpTrack{};
movable_ptr<Track> mpOrigTrack{};
std::shared_ptr<Track> mpOrigTrack{};
};
// Set name to given value if that is not empty, else use default name