1
0
mirror of https://github.com/cookiengineer/audacity synced 2025-07-01 07:33:44 +02:00

Simplify append-record code using TrackList copy and move

This commit is contained in:
Paul Licameli 2016-02-26 19:30:12 -05:00
parent cd8a19f055
commit eead25872e

View File

@ -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];
}
}