diff --git a/src/toolbars/ControlToolBar.cpp b/src/toolbars/ControlToolBar.cpp index a662662cb..ac40bc819 100644 --- a/src/toolbars/ControlToolBar.cpp +++ b/src/toolbars/ControlToolBar.cpp @@ -799,8 +799,8 @@ void ControlToolBar::OnRecord(wxCommandEvent &evt) SetRecord(true, mRecord->WasShiftDown()); if (p) { - TrackList *t = p->GetTracks(); - TrackListIterator it(t); + TrackList *trackList = p->GetTracks(); + TrackListIterator it(trackList); if(it.First() == NULL) mRecord->SetShift(false); double t0 = p->GetSel0(); @@ -818,7 +818,7 @@ void ControlToolBar::OnRecord(wxCommandEvent &evt) gPrefs->Read(wxT("/AudioIO/Duplex"), &duplex, true); if(duplex){ - playbackTracks = t->GetWaveTrackArray(false); + playbackTracks = trackList->GetWaveTrackArray(false); #ifdef EXPERIMENTAL_MIDI_OUT midiTracks = t->GetNoteTrackArray(false); #endif @@ -832,7 +832,7 @@ void ControlToolBar::OnRecord(wxCommandEvent &evt) // If SHIFT key was down, the user wants append to tracks int recordingChannels = 0; - TrackList tracksCopy(true); + TrackList tracksCopy{}; bool tracksCopied = false; bool shifted = mRecord->WasShiftDown(); if (shifted) { @@ -879,12 +879,7 @@ void ControlToolBar::OnRecord(wxCommandEvent &evt) if (t1 < t0) { if (!tracksCopied) { tracksCopied = true; - TrackListIterator iter(t); - Track *trk = iter.First(); - while (trk) { - tracksCopy.Add(trk->Duplicate()); - trk = iter.Next(); - } + tracksCopy = *trackList; } WaveTrack *newTrack = p->GetTrackFactory()->NewWaveTrack(); @@ -985,7 +980,7 @@ void ControlToolBar::OnRecord(wxCommandEvent &evt) // we add the tracks where recording is done into now. We remove them // later if starting the stream fails for (unsigned int i = 0; i < newRecordingTracks.size(); i++) - t->Add(newRecordingTracks[i]); + trackList->Add(newRecordingTracks[i]); } //Automated Input Level Adjustment Initialization @@ -1010,22 +1005,13 @@ void ControlToolBar::OnRecord(wxCommandEvent &evt) else { if (shifted) { // Restore the tracks to remove any inserted silence - if (tracksCopied) { - t->Clear(true); - TrackListIterator iter(&tracksCopy); - Track *trk = iter.First(); - while (trk) - { - Track *tmp = trk; - trk = iter.RemoveCurrent(); - t->Add(tmp); - } - } + if (tracksCopied) + *trackList = std::move(tracksCopy); } else { // msmeyer: Delete recently added tracks if opening stream fails for (unsigned int i = 0; i < newRecordingTracks.size(); i++) { - t->Remove(newRecordingTracks[i]); + trackList->Remove(newRecordingTracks[i]); delete newRecordingTracks[i]; } }