Update of /cvsroot/audacity/audacity-src/src
In directory 23jxhf1.ch3.sourceforge.com:/tmp/cvs-serv11993

Modified Files:
        Project.cpp 
Log Message:
Fix for deleting/removing tracks from tracklist

Index: Project.cpp
===================================================================
RCS file: /cvsroot/audacity/audacity-src/src/Project.cpp,v
retrieving revision 1.403
retrieving revision 1.404
diff -u -d -r1.403 -r1.404
--- Project.cpp 23 Mar 2009 18:27:07 -0000      1.403
+++ Project.cpp 23 Mar 2009 23:16:58 -0000      1.404
@@ -2824,44 +2824,35 @@
       Track* pSavedTrack;
       Track* pTrack;
       WaveTrack* pWaveTrack;
-      TrackListIterator iter(mTracks);
+      TrackListOfKindIterator iter(Track::Wave, mTracks);
       unsigned int numWaveTracks = 0;
       TrackList* pSavedTrackList = new TrackList();
       for (pTrack = iter.First(); pTrack != NULL; pTrack = iter.Next())
       {
-         if (pTrack->GetKind() == Track::Wave)
-         {
-            numWaveTracks++; 
-            pWaveTrack = (WaveTrack*)pTrack;
-            pSavedTrack = mTrackFactory->DuplicateWaveTrack(*pWaveTrack);
-         }
-         else
-            pSavedTrack = pTrack; // No need to copy. 
+         numWaveTracks++; 
+         pWaveTrack = (WaveTrack*)pTrack;
+         pSavedTrack = mTrackFactory->DuplicateWaveTrack(*pWaveTrack);
          pSavedTrackList->Add(pSavedTrack);
       }
-      TrackListIterator savedTrackIter(pSavedTrackList);
+
       if (numWaveTracks == 0) 
       {
          // Nothing to save compressed => success. Delete the copies and go. 
-         for (pSavedTrack = savedTrackIter.First(); pSavedTrack != NULL; 
pSavedTrack = savedTrackIter.Next())
-            if (pSavedTrack->GetKind() == Track::Wave)
-               delete pSavedTrack;
          delete pSavedTrackList;
          return true;
       }
 
       // Okay, now some bold state-faking to default values.
       for (pTrack = iter.First(); pTrack != NULL; pTrack = iter.Next())
-         if (pTrack->GetKind() == Track::Wave)
-         {
-            pWaveTrack = (WaveTrack*)pTrack;
-            pWaveTrack->SetSelected(false);
-            pWaveTrack->SetMute(false);
-            pWaveTrack->SetSolo(false);
+      {
+         pWaveTrack = (WaveTrack*)pTrack;
+         pWaveTrack->SetSelected(false);
+         pWaveTrack->SetMute(false);
+         pWaveTrack->SetSolo(false);
 
-            pWaveTrack->SetGain(1.0); 
-            pWaveTrack->SetPan(0.0); 
-         }
+         pWaveTrack->SetGain(1.0); 
+         pWaveTrack->SetPan(0.0); 
+      }
 
       wxString strDataDirPathName = strProjectPathName + wxT("_data");
       if (!wxFileName::DirExists(strDataDirPathName) && 
@@ -2901,25 +2892,21 @@
       }
 
       // Restore the saved track states and clean up. 
+      TrackListIterator savedTrackIter(pSavedTrackList);
       for (pTrack = iter.First(), pSavedTrack = savedTrackIter.First(); 
             ((pTrack != NULL) && (pSavedTrack != NULL)); 
             pTrack = iter.Next(), pSavedTrack = savedTrackIter.Next())
       {
-         if (pTrack->GetKind() == Track::Wave)
-         {
-            wxASSERT(pSavedTrack->GetKind() == Track::Wave);
-            pWaveTrack = (WaveTrack*)pTrack;
-            pWaveTrack->SetSelected(pSavedTrack->GetSelected());
-            pWaveTrack->SetMute(pSavedTrack->GetMute());
-            pWaveTrack->SetSolo(pSavedTrack->GetSolo());
+         pWaveTrack = (WaveTrack*)pTrack;
+         pWaveTrack->SetSelected(pSavedTrack->GetSelected());
+         pWaveTrack->SetMute(pSavedTrack->GetMute());
+         pWaveTrack->SetSolo(pSavedTrack->GetSolo());
 
-            pWaveTrack->SetGain(((WaveTrack*)pSavedTrack)->GetGain());
-            pWaveTrack->SetPan(((WaveTrack*)pSavedTrack)->GetPan());
-         }
+         pWaveTrack->SetGain(((WaveTrack*)pSavedTrack)->GetGain());
+         pWaveTrack->SetPan(((WaveTrack*)pSavedTrack)->GetPan());
       }
-      for (pSavedTrack = savedTrackIter.First(); pSavedTrack != NULL; 
pSavedTrack = savedTrackIter.Next())
-         if (pSavedTrack->GetKind() == Track::Wave)
-            delete pSavedTrack;
+
+      pSavedTrackList->Clear(true);
       delete pSavedTrackList;
 
       return bSuccess;


------------------------------------------------------------------------------
Apps built with the Adobe(R) Flex(R) framework and Flex Builder(TM) are
powering Web 2.0 with engaging, cross-platform capabilities. Quickly and
easily build your RIAs with Flex Builder, the Eclipse(TM)based development
software that enables intelligent coding and step-through debugging.
Download the free 60 day trial. http://p.sf.net/sfu/www-adobe-com
_______________________________________________
Audacity-cvs mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/audacity-cvs

Reply via email to