1
0
mirror of https://github.com/cookiengineer/audacity synced 2025-07-15 16:17:41 +02:00

Use a static unique_ptr for the global clipboard

This commit is contained in:
Paul Licameli 2016-03-13 10:56:40 -04:00
parent c5a70126eb
commit 7d1ea7b82e
3 changed files with 7 additions and 11 deletions

@ -3999,7 +3999,7 @@ void AudacityProject::OnPaste()
double t1 = mViewInfo.selectedRegion.t1(); double t1 = mViewInfo.selectedRegion.t1();
TrackListIterator iter(mTracks); TrackListIterator iter(mTracks);
TrackListIterator clipIter(msClipboard); TrackListIterator clipIter(msClipboard.get());
Track *n = iter.First(); Track *n = iter.First();
Track *c = clipIter.First(); Track *c = clipIter.First();
@ -4139,7 +4139,7 @@ void AudacityProject::OnPaste()
// selected tracks. // selected tracks.
if ( n && !c ) if ( n && !c )
{ {
TrackListOfKindIterator clipWaveIter(Track::Wave, msClipboard); TrackListOfKindIterator clipWaveIter(Track::Wave, msClipboard.get());
c = clipWaveIter.Last(); c = clipWaveIter.Last();
while (n) { while (n) {
@ -4246,7 +4246,7 @@ bool AudacityProject::HandlePasteNothingSelected()
return false; return false;
else else
{ {
TrackListIterator iterClip(msClipboard); TrackListIterator iterClip(msClipboard.get());
Track* pClip = iterClip.First(); Track* pClip = iterClip.First();
if (!pClip) if (!pClip)
return true; // nothing to paste return true; // nothing to paste

@ -164,7 +164,7 @@ scroll information. It also has some status flags.
#include "../images/AudacityLogoAlpha.xpm" #include "../images/AudacityLogoAlpha.xpm"
TrackList *AudacityProject::msClipboard = new TrackList(); std::unique_ptr<TrackList> AudacityProject::msClipboard{ safenew TrackList() };
double AudacityProject::msClipT0 = 0.0; double AudacityProject::msClipT0 = 0.0;
double AudacityProject::msClipT1 = 0.0; double AudacityProject::msClipT1 = 0.0;
AudacityProject *AudacityProject::msClipProject = NULL; AudacityProject *AudacityProject::msClipProject = NULL;
@ -4166,17 +4166,13 @@ void AudacityProject::UpdateMixerBoard()
//static //static
TrackList *AudacityProject::GetClipboardTracks() TrackList *AudacityProject::GetClipboardTracks()
{ {
return msClipboard; return msClipboard.get();
} }
//static //static
void AudacityProject::DeleteClipboard() void AudacityProject::DeleteClipboard()
{ {
if (msClipboard) { msClipboard.reset();
msClipboard->Clear();
delete msClipboard;
msClipboard = NULL;
}
} }
//static //static

@ -549,7 +549,7 @@ public:
TrackList *mLastSavedTracks; TrackList *mLastSavedTracks;
// Clipboard (static because it is shared by all projects) // Clipboard (static because it is shared by all projects)
static TrackList *msClipboard; static std::unique_ptr<TrackList> msClipboard;
static AudacityProject *msClipProject; static AudacityProject *msClipProject;
static double msClipT0; static double msClipT0;
static double msClipT1; static double msClipT1;