From 41175e94cd7c42cb5a0243c0ae7e0d60c2972691 Mon Sep 17 00:00:00 2001 From: Paul Licameli Date: Mon, 19 Nov 2018 13:17:28 -0500 Subject: [PATCH] Simplify by removing many std::move of shared_ptr to tracks... ... Don't need them, as we did with std::unique_ptr --- src/LabelDialog.cpp | 2 +- src/Mix.cpp | 3 +-- src/Project.cpp | 4 ++-- src/Track.cpp | 23 +++++++++++------------ src/Track.h | 3 ++- src/effects/Effect.cpp | 21 ++++++++++----------- src/effects/Equalization48x.cpp | 2 +- src/menus/EditMenus.cpp | 22 +++++++++++----------- src/menus/FileMenus.cpp | 4 ++-- src/menus/LabelMenus.cpp | 4 ++-- src/menus/TrackMenus.cpp | 6 +++--- src/toolbars/ControlToolBar.cpp | 2 +- 12 files changed, 47 insertions(+), 49 deletions(-) diff --git a/src/LabelDialog.cpp b/src/LabelDialog.cpp index 741f55acc..d363ffc1f 100644 --- a/src/LabelDialog.cpp +++ b/src/LabelDialog.cpp @@ -392,7 +392,7 @@ bool LabelDialog::TransferDataFromWindow() // Create the NEW track and add to track list auto newTrack = mFactory.NewLabelTrack(); newTrack->SetName(name); - mTracks->Add(std::move(newTrack)); + mTracks->Add( newTrack ); tndx++; } diff --git a/src/Mix.cpp b/src/Mix.cpp index 0732d065d..f02a918ab 100644 --- a/src/Mix.cpp +++ b/src/Mix.cpp @@ -188,8 +188,7 @@ void MixAndRender(TrackList *tracks, TrackFactory *trackFactory, return; } else { - uLeft = std::move(mixLeft), - uRight = std::move(mixRight); + uLeft = mixLeft, uRight = mixRight; #if 0 int elapsedMS = wxGetElapsedTime(); double elapsedTime = elapsedMS * 0.001; diff --git a/src/Project.cpp b/src/Project.cpp index 9250fad86..1ad35e931 100644 --- a/src/Project.cpp +++ b/src/Project.cpp @@ -4197,7 +4197,7 @@ AudacityProject::AddImportedTracks(const FilePath &fileName, auto first = group.begin()->get(); auto nChannels = group.size(); for (auto &uNewTrack : group) { - auto newTrack = mTracks->Add(std::move(uNewTrack)); + auto newTrack = mTracks->Add( uNewTrack ); results.push_back(newTrack->SharedPointer()); } mTracks->GroupChannels(*first, nChannels); @@ -5226,7 +5226,7 @@ void AudacityProject::OnAudioIOStopRecording() // Make a track with labels for recording errors auto uTrack = GetTrackFactory()->NewLabelTrack(); auto pTrack = uTrack.get(); - GetTracks()->Add( std::move(uTrack) ); + GetTracks()->Add( uTrack ); /* i18n-hint: A name given to a track, appearing as its menu button. The translation should be short or else it will not display well. At most, about 11 Latin characters. diff --git a/src/Track.cpp b/src/Track.cpp index 7a21cce39..3e4863138 100644 --- a/src/Track.cpp +++ b/src/Track.cpp @@ -706,11 +706,11 @@ auto TrackList::FindLeader( Track *pTrack ) void TrackList::Permute(const std::vector &permutation) { for (const auto iter : permutation) { - ListOfTracks::value_type track = std::move(*iter.first); + ListOfTracks::value_type track = *iter.first; erase(iter.first); Track *pTrack = track.get(); pTrack->SetOwner(mSelf, - { insert(ListOfTracks::end(), std::move(track)), this }); + { insert(ListOfTracks::end(), track), this }); } auto n = getBegin(); RecalcPositions(n); @@ -805,7 +805,7 @@ void TrackList::GroupChannels( THROW_INCONSISTENCY_EXCEPTION; } -auto TrackList::Replace(Track * t, ListOfTracks::value_type &&with) -> +auto TrackList::Replace(Track * t, const ListOfTracks::value_type &with) -> ListOfTracks::value_type { ListOfTracks::value_type holder; @@ -813,10 +813,10 @@ auto TrackList::Replace(Track * t, ListOfTracks::value_type &&with) -> auto node = t->GetNode(); t->SetOwner({}, {}); - holder = std::move(*node.first); + holder = *node.first; Track *pTrack = with.get(); - *node.first = std::move(with); + *node.first = with; pTrack->SetOwner(mSelf, node); pTrack->SetId( t->GetId() ); RecalcPositions(node); @@ -835,7 +835,7 @@ TrackNodePointer TrackList::Remove(Track *t) t->SetOwner({}, {}); if ( !isNull( node ) ) { - ListOfTracks::value_type holder = std::move( *node.first ); + ListOfTracks::value_type holder = *node.first; result = getNext( node ); erase(node.first); @@ -973,7 +973,7 @@ void TrackList::SwapNodes(TrackNodePointer s1, TrackNodePointer s2) saved.resize( nn ); // Save them in backwards order while( nn-- ) - saved[nn] = std::move( *s.first ), s.first = erase(s.first); + saved[nn] = *s.first, s.first = erase(s.first); }; doSave( saved1, s1 ); @@ -992,7 +992,7 @@ void TrackList::SwapNodes(TrackNodePointer s1, TrackNodePointer s2) // Insert before s, and reassign s to point at the new node before // old s; which is why we saved pointers in backwards order pTrack->SetOwner(mSelf, - s = { insert(s.first, std::move(pointer)), this } ); + s = { insert(s.first, pointer), this } ); }; // This does not invalidate s2 even when it equals s1: doInsert( saved2, s1 ); @@ -1216,8 +1216,7 @@ TrackList::RegisterPendingChangedTrack( Updater updater, Track *src ) void TrackList::RegisterPendingNewTrack( const std::shared_ptr &pTrack ) { - auto copy = pTrack; - Add( std::move( copy ) ); + Add( pTrack ); pTrack->SetId( TrackId{} ); } @@ -1290,7 +1289,7 @@ bool TrackList::ApplyPendingTracks() if (pendingTrack) { auto src = FindById( pendingTrack->GetId() ); if (src) - this->Replace(src, std::move(pendingTrack)), result = true; + this->Replace(src, pendingTrack), result = true; else // Perhaps a track marked for pending changes got deleted by // some other action. Recreate it so we don't lose the @@ -1302,7 +1301,7 @@ bool TrackList::ApplyPendingTracks() // If there are tracks to reinstate, append them to the list. for (auto &pendingTrack : reinstated) if (pendingTrack) - this->Add(std::move(pendingTrack)), result = true; + this->Add( pendingTrack ), result = true; // Put the pending added tracks back into the list, preserving their // positions. diff --git a/src/Track.h b/src/Track.h index 2e2a08556..f97ddc1fd 100644 --- a/src/Track.h +++ b/src/Track.h @@ -1391,7 +1391,8 @@ public: /// Replace first track with second track, give back a holder /// Give the replacement the same id as the replaced - ListOfTracks::value_type Replace(Track * t, ListOfTracks::value_type &&with); + ListOfTracks::value_type Replace( + Track * t, const ListOfTracks::value_type &with); /// Remove this Track or all children of this TrackList. /// Return an iterator to what followed the removed track. diff --git a/src/effects/Effect.cpp b/src/effects/Effect.cpp index 2b768f949..fc639d147 100644 --- a/src/effects/Effect.cpp +++ b/src/effects/Effect.cpp @@ -2087,7 +2087,7 @@ Effect::AddedAnalysisTrack::AddedAnalysisTrack(Effect *pEffect, const wxString & mpTrack = pTrack.get(); if (!name.empty()) pTrack->SetName(name); - pEffect->mTracks->Add(std::move(pTrack)); + pEffect->mTracks->Add( pTrack ); } Effect::AddedAnalysisTrack::AddedAnalysisTrack(AddedAnalysisTrack &&that) @@ -2134,7 +2134,7 @@ Effect::ModifiedAnalysisTrack::ModifiedAnalysisTrack // So it's okay that we cast it back to const mpOrigTrack = pEffect->mTracks->Replace(const_cast(pOrigTrack), - std::move(newTrack) ); + newTrack ); } Effect::ModifiedAnalysisTrack::ModifiedAnalysisTrack(ModifiedAnalysisTrack &&that) @@ -2156,7 +2156,7 @@ Effect::ModifiedAnalysisTrack::~ModifiedAnalysisTrack() // not committed -- DELETE the label track // mpOrigTrack came from mTracks which we own but expose as const to subclasses // So it's okay that we cast it back to const - mpEffect->mTracks->Replace(mpTrack, std::move(mpOrigTrack)); + mpEffect->mTracks->Replace(mpTrack, mpOrigTrack); } } @@ -2195,7 +2195,7 @@ void Effect::ReplaceProcessedTracks(const bool bGoodResult) size_t i = 0; for (; iterOut != iterEnd; ++i) { - ListOfTracks::value_type o = std::move(*iterOut); + ListOfTracks::value_type o = *iterOut; // If tracks were removed from mOutputTracks, then there will be // tracks in the map that must be removed from mTracks. while (i < cnt && mOMap[i] != o.get()) { @@ -2216,19 +2216,18 @@ void Effect::ReplaceProcessedTracks(const bool bGoodResult) if (t == NULL) { // This track is a NEW addition to output tracks; add it to mTracks - mTracks->Add(std::move(o)); + mTracks->Add( o ); } else { // Replace mTracks entry with the NEW track - auto newTrack = o.get(); - mTracks->Replace(t, std::move(o)); + mTracks->Replace(t, o); // If the track is a wave track, // Swap the wavecache track the ondemand task uses, since now the NEW // one will be kept in the project if (ODManager::IsInstanceCreated()) { - ODManager::Instance()->ReplaceWaveTrack( t, newTrack ); + ODManager::Instance()->ReplaceWaveTrack( t, o.get() ); } } } @@ -2544,12 +2543,12 @@ void Effect::Preview(bool dryOnly) mixLeft->Offset(-mixLeft->GetStartTime()); mixLeft->SetSelected(true); mixLeft->SetDisplay(WaveTrack::NoDisplay); - auto pLeft = mTracks->Add(std::move(mixLeft)); + auto pLeft = mTracks->Add( mixLeft ); Track *pRight{}; if (mixRight) { mixRight->Offset(-mixRight->GetStartTime()); mixRight->SetSelected(true); - pRight = mTracks->Add(std::move(mixRight)); + pRight = mTracks->Add( mixRight ); } mTracks->GroupChannels(*pLeft, pRight ? 2 : 1); } @@ -2559,7 +2558,7 @@ void Effect::Preview(bool dryOnly) auto dest = src->Copy(mT0, t1); dest->SetSelected(src->GetSelected()); static_cast(dest.get())->SetDisplay(WaveTrack::NoDisplay); - mTracks->Add(std::move(dest)); + mTracks->Add( dest ); } } } diff --git a/src/effects/Equalization48x.cpp b/src/effects/Equalization48x.cpp index ee7ac2fe7..4e518a729 100644 --- a/src/effects/Equalization48x.cpp +++ b/src/effects/Equalization48x.cpp @@ -348,7 +348,7 @@ bool EffectEqualization48x::TrackCompare() auto o = aTrack->Duplicate(); SecondIMap.push_back(aTrack); SecondIMap.push_back(o.get()); - SecondOutputTracks.push_back(std::move(o)); + SecondOutputTracks.push_back( o ); } } diff --git a/src/menus/EditMenus.cpp b/src/menus/EditMenus.cpp index 484f45cb8..9fff0107a 100644 --- a/src/menus/EditMenus.cpp +++ b/src/menus/EditMenus.cpp @@ -20,11 +20,11 @@ // private helper classes and functions namespace { void FinishCopy - (const Track *n, Track::Holder &&dest, TrackList &list) + (const Track *n, const Track::Holder &dest, TrackList &list) { Track::FinishCopy( n, dest.get() ); if (dest) - list.Add(std::move(dest)); + list.Add( dest ); } // Handle text paste (into active label), if any. Return true if did paste. @@ -124,7 +124,7 @@ bool DoPasteNothingSelected(AudacityProject &project) pNewTrack->SetSelected(true); if (uNewTrack) - FinishCopy(pClip, std::move(uNewTrack), *tracks); + FinishCopy(pClip, uNewTrack, *tracks); else Track::FinishCopy(pClip, pNewTrack); } @@ -303,13 +303,13 @@ void OnCut(const CommandContext &context) // Since portsmf has a built-in cut operator, we use that instead auto dest = n->Cut(selectedRegion.t0(), selectedRegion.t1()); - FinishCopy(n, std::move(dest), newClipboard); + FinishCopy(n, dest, newClipboard); }, #endif [&](Track *n) { auto dest = n->Copy(selectedRegion.t0(), selectedRegion.t1()); - FinishCopy(n, std::move(dest), newClipboard); + FinishCopy(n, dest, newClipboard); } ); @@ -405,7 +405,7 @@ void OnCopy(const CommandContext &context) for (auto n : tracks->Selected()) { auto dest = n->Copy(selectedRegion.t0(), selectedRegion.t1()); - FinishCopy(n, std::move(dest), newClipboard); + FinishCopy(n, dest, newClipboard); } // Survived possibility of exceptions. Commit changes to the clipboard now. @@ -702,7 +702,7 @@ void OnDuplicate(const CommandContext &context) selectedRegion.t1(), false); dest->Init(*n); dest->SetOffset(wxMax(selectedRegion.t0(), n->GetOffset())); - tracks->Add(std::move(dest)); + tracks->Add( dest ); // This break is really needed, else we loop infinitely if (n == last) @@ -733,7 +733,7 @@ void OnSplitCut(const CommandContext &context) selectedRegion.t0(), selectedRegion.t1()); if (dest) - FinishCopy(n, std::move(dest), newClipboard); + FinishCopy(n, dest, newClipboard); }, [&](Track *n) { dest = n->Copy(selectedRegion.t0(), @@ -741,7 +741,7 @@ void OnSplitCut(const CommandContext &context) n->Silence(selectedRegion.t0(), selectedRegion.t1()); if (dest) - FinishCopy(n, std::move(dest), newClipboard); + FinishCopy(n, dest, newClipboard); } ); @@ -926,7 +926,7 @@ void OnSplitNew(const CommandContext &context) dest = wt->SplitCut(newt0, newt1); if (dest) { dest->SetOffset(wxMax(newt0, offset)); - FinishCopy(wt, std::move(dest), *tracks); + FinishCopy(wt, dest, *tracks); } } #if 0 @@ -938,7 +938,7 @@ void OnSplitNew(const CommandContext &context) viewInfo.selectedRegion.t1()); if (dest) { dest->SetOffset(wxMax(0, n->GetOffset())); - FinishCopy(n, std::move(dest), *tracks); + FinishCopy(n, dest, *tracks); } } #endif diff --git a/src/menus/FileMenus.cpp b/src/menus/FileMenus.cpp index e21b2d028..0f2468763 100644 --- a/src/menus/FileMenus.cpp +++ b/src/menus/FileMenus.cpp @@ -117,7 +117,7 @@ AudacityProject *DoImportMIDI( if (::ImportMIDI(fileName, newTrack.get())) { pProject->SelectNone(); - auto pTrack = tracks->Add(std::move(newTrack)); + auto pTrack = tracks->Add( newTrack ); pTrack->SetSelected(true); pProject->PushState(wxString::Format(_("Imported MIDI from '%s'"), @@ -464,7 +464,7 @@ void OnImportLabels(const CommandContext &context) project.SelectNone(); newTrack->SetSelected(true); - tracks->Add(std::move(newTrack)); + tracks->Add( newTrack ); project.PushState(wxString:: Format(_("Imported labels from '%s'"), fileName), diff --git a/src/menus/LabelMenus.cpp b/src/menus/LabelMenus.cpp index ecd3e230b..803dd4aac 100644 --- a/src/menus/LabelMenus.cpp +++ b/src/menus/LabelMenus.cpp @@ -201,7 +201,7 @@ void EditClipboardByLabel( { Track::FinishCopy( wt, dest.get() ); if( !merged ) - merged = std::move(dest); + merged = dest; else { // Paste to the beginning; unless this is the first region, @@ -227,7 +227,7 @@ void EditClipboardByLabel( regions.at(i + 1).start - region.end); } if( merged ) - newClipboard.Add( std::move(merged) ); + newClipboard.Add( merged ); } // Survived possibility of exceptions. Commit changes to the clipboard now. diff --git a/src/menus/TrackMenus.cpp b/src/menus/TrackMenus.cpp index 7d7592fb6..7448ef36e 100644 --- a/src/menus/TrackMenus.cpp +++ b/src/menus/TrackMenus.cpp @@ -59,10 +59,10 @@ void DoMixAndRender // Add NEW tracks - auto pNewLeft = tracks->Add(std::move(uNewLeft)); + auto pNewLeft = tracks->Add( uNewLeft ); decltype(pNewLeft) pNewRight{}; if (uNewRight) - pNewRight = tracks->Add(std::move(uNewRight)); + pNewRight = tracks->Add( uNewRight ); // Do this only after adding tracks to the list tracks->GroupChannels(*pNewLeft, pNewRight ? 2 : 1); @@ -1188,7 +1188,7 @@ void OnScoreAlign(const CommandContext &context) } if (result == SA_SUCCESS) { - tracks->Replace(nt, std::move(holder)); + tracks->Replace(nt, holder); project.RedrawProject(); AudacityMessageBox(wxString::Format( _("Alignment completed: MIDI from %.2f to %.2f secs, Audio from %.2f to %.2f secs."), diff --git a/src/toolbars/ControlToolBar.cpp b/src/toolbars/ControlToolBar.cpp index 82cf95029..851224160 100644 --- a/src/toolbars/ControlToolBar.cpp +++ b/src/toolbars/ControlToolBar.cpp @@ -1339,7 +1339,7 @@ void ControlToolBar::SetupCutPreviewTracks(double WXUNUSED(playStart), double cu auto newTrack = track1->Duplicate(); newTrack->Clear(cutStart, cutEnd); - cutPreviewTracks->Add(std::move(newTrack)); + cutPreviewTracks->Add( newTrack ); } // use NOTHROW-GUARANTEE: mCutPreviewTracks = cutPreviewTracks;